Offerta Didattica
INFORMATICA
OBJECT ORIENTED PROGRAMMING
Classe di corso: L-31 - Scienze e tecnologie informatiche
AA: 2022/2023
Sedi: MESSINA
SSD | TAF | tipologia | frequenza | moduli |
---|---|---|---|---|
ING-INF/05 | Caratterizzante | Libera | Libera | No |
CFU | CFU LEZ | CFU LAB | CFU ESE | ORE | ORE LEZ | ORE LAB | ORE ESE |
---|---|---|---|---|---|---|---|
9 | 6 | 0 | 3 | 72 | 36 | 0 | 36 |
LegendaCFU: n. crediti dell’insegnamento CFU LEZ: n. cfu di lezione in aula CFU LAB: n. cfu di laboratorio CFU ESE: n. cfu di esercitazione FREQUENZA:Libera/Obbligatoria MODULI:SI - L'insegnamento prevede la suddivisione in moduli, NO - non sono previsti moduli ORE: n. ore programmate ORE LEZ: n. ore programmate di lezione in aula ORE LAB: n. ore programmate di laboratorio ORE ESE: n. ore programmate di esercitazione SSD:sigla del settore scientifico disciplinare dell’insegnamento TAF:sigla della tipologia di attività formativa TIPOLOGIA:LEZ - lezioni frontali, ESE - esercitazioni, LAB - laboratorio
Obiettivi Formativi
l corso mira a fornire solide basi in merito alla programmazione dei calcolatori elettronici per risoluzione di problemi con il paradigma ad oggetti. L’obiettivo è dunque la programmazione ad oggetti, i cui concetti verranno prevalentemente spiegati attraverso l’approfondimento del linguaggio Java.Learning Goals
The Object-oriented programming course aims at providing the basic concepts on OOP, in particular focusing on Java.Metodi didattici
Lezioni frontali in aula e laboratorio: il corso si svolge prevalentemente attraverso lezioni frontali e seminari su specifici aspetti disciplinari. Parte delle lezioni verteranno su aspetti pratici/di laboratorio, espletato prevalentemente in aula attraverso sessioni “hands on” su propri dispositivi (BYOD – Bring Your Own Device)Teaching Methods
Frontal lecturing, seminars and hands-on lab (BYOD" Bring Your Own Device)Prerequisiti
Conoscenza dei concetti base della programmazione, la programmazione strutturata ed i costrutti e le strutture dati principali.Prerequisites
Basics of programming, functional programming, top-down problem solving approach, basics algorithms and data structures.Verifiche dell'apprendimento
L’esame finale si focalizzerà sul progetto pratico sviluppato dallo studente e su un esame orale. L’elaborazione del progetto dovrà incentrarsi su OOP, sviluppando un programma utilizzando strettamente la programmazione ad oggetti documentata da relazione scritta e discussione dei risultati e degli argomenti teorici relativi al progetto. L'idea progettuale, sulla quale lo studente dispone di massima libertà, deve tuttavia superare un processo di validazione da parte del docente. - NO: interfacce a DB - NO: "programmazione web", non bisogna implementare un mashup di servizi di terze parti, librerie o middleware e framework - Un progetto basato unicamente su un'applicazione Android non è sufficiente per raggiungere gli obiettivi minimi Alcuni tra gli elementi utili in un progetto OOP (JAVA) sono: - Forte connotazione e strutturazione OOP - Modularità, gerarchia, incapsulamento, subtyping, information hiding, astrazione, specializzazione, ereditarietà (is-a), composizione (has-a), polimorfismo, gestione delle eccezioni - Sviluppato in java - IL PROGETTO DEVE IMPLEMENTARE IN PRATICA TUTTI I CONCETTI OOP - LA RELAZIONE DEVE CONTENERE 1 SEZIONE PER CIASCUNO DEI CONCETTI SOPRA CHE DESCRIVA TRAMITE ESEMPI TRATTI DAL CODICE IMPLEMENTATO NEL PROGETTO LA SPECIFICA PROPRIETÀ Il progetto dovrà essere consegnato 1 settimana prima della data d’esame e sarà discusso durante l’esame orale, nel quale verranno approfonditi gli aspetti teorici a partire dagli spunti dal progetto. L’esame sarà valutato in trentesimi complessivamente, pesando il progetto per un 70% e l’orale per il 30%Assessment
The final assessment is based on an OOP Project and the oral examination discussing on practical and theoretical aspects of the project. The project idea, usually proposed by the students, has to nevertheless pass a validation process. ⢠NO: DB interfaces ⢠NO: "web programming", no mashup of third-party services or libraries/API, middleware, framework Some requirements of an OOP project are: ⢠Strong OOP connotation and structuring ⢠Modularity, hierarchy, reuse, encapsulation, subtyping, information hiding, abstraction, inheritance, polymorphism + exception handling ⢠Fully implemented and developed in java ⢠THE PROJECT MUST IMPLEMENT ALL SUCH OOP CONCEPTS and ASPECTS ⢠THE REPORT MUST CONTAIN 1 SECTION FOR EACH OF THE ABOVE CONCEPTS, DESCRIBED BY EXAMPLES TAKEN FROM THE PROJECT CODE The project must be delivered 1 week before the exam date and will be discussed during the oral exam, focusing on theoretical aspects starting from the project examples and implementations. The exam will be rated out of thirty overall, 70% for the project by and 30% for the oral examination.Programma del Corso
Introduzione al corso: contenuti, testi di riferimento e modalità esami. Linguaggi di programmazione. Tipi di linguaggi: imperativi, dichiarativi, funzionali, logici, orientati agli oggetti. Linguaggi macchina. Limiti della programmazione in linguaggio macchina. Dal linguaggio macchina ai linguaggi ad alto livello. Compilatori e interpreti. Richiami sulla programmazione strutturata: condizioni, loop, array, files, thread. Dalla programmazione strutturata alla programmazione a oggetti: tipi astratti di dato, encapsulation, stato e comportamento, information hiding, interfaccia ed implementazione. Concetti base ed introduzione alla programmazione ad oggetti: riuso, ereditarietà, astrazione e specializzazione. Classi e oggetti. Vista interna (developer) ed esterna (user-client). Tipi e sottotipi, interfacce, subtyping e polimorfismo (universale, parametrizzato, per inclusione, ad-hoc, overloading, casting). Linguaggi ad oggetti e loro proprietà OOP: principi SOLID, caratteristiche OOP, caratterizzazione principali linguaggi OOP. Il linguaggio Java: storia di Java e principali caratteristiche. Il compilatore Java ed il bytecode. La Java Virtual Machine: interprete Java, Class loader, Bytecode Verifier, Memoria, Execution Engine, JIT compiler Programmazione ad oggetti in Java: struttura del programma java, variabili, condizioni e cicli. Attributi e metodi di classe e d’istanza, il metodo main e le classi driver, primo programma java. Java API. Classi ed oggetti, modificatori d’accesso, interfacce, ereditarietà, subtyping e polimorfismo. Gestione delle Eccezioni: eccezioni in Java, try-catch-finally, checked e unchecked, politiche catch or declare. Files, Streams, Channels e Sockets: gestione di files, streams via java.io e java.nio Threads: programmazione multithreading, modelli di programmazione multithreading, generazione e gestione di thread, inter thread communication, thread poolingCourse Syllabus
Course introduction: contents, textbook and assessment. Programming languages. Types of languages: imperative, declarative, functional, logical, object-oriented. Machine language. Limits of machine language programming. From machine language to high-level languages. Compilers and interpreters. Structured programming: conditions, loops, arrays, files, threads. From structured programming to object-oriented programming: abstract data types, encapsulation, state and behavior, information hiding, interface and implementation. Basic concepts and introduction to object oriented programming: reuse, inheritance, abstraction and specialization. Classes and objects. Internal (developer) and external (user-client) views. Types and subtypes, interfaces, subtyping and polymorphism (universal, parameterized, by inclusion, ad-hoc, overloading, casting). Object-oriented languages and their properties: SOLID principles, OOP characteristics, characterization of the main OOP languages. The Java language: history of Java and main characteristics. The Java compiler and bytecode. The Java Virtual Machine: Java interpreter, Class loader, Bytecode Verifier, Memory, Execution Engine, JIT compiler Object-oriented programming in Java: structure of a java program, variables, conditions, and cycles. Class and instance attributes and methods, the main method and driver classes, the first java program. Java API. Classes and objects, access modifiers, interfaces, inheritance, subtyping and polymorphism. Exception Handling: Java exceptions, try-catch-finally, checked and unchecked exceptions, catch or declare policies. Files, Streams, Channels and Sockets: management of files, streams via java.io and java.nio Threads: multithreading programming, multithreading programming models, thread generation and management, inter thread communication, thread poolingTesti di riferimento: Java How To Program (Early Objects) by Paul Deitel (Author), Harvey Deitel (Author) - Pearson
Esami: Elenco degli appelli
Elenco delle unità didattiche costituenti l'insegnamento
Docente: SALVATORE DISTEFANO
Orario di Ricevimento - SALVATORE DISTEFANO
Giorno | Ora inizio | Ora fine | Luogo |
---|---|---|---|
Lunedì | 11:00 | 12:00 | Ingegneria, Piano 7, Blocco B |
Note: Il ricevimento è previa appuntamento, si prega di contattare il docente e concordare la data e l'ora di ricevimento, non necessariamente il lunedi'.