PROGRAMMAZIONE AD OGGETTI

Ingegneria Informatica PROGRAMMAZIONE AD OGGETTI

0612700009
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA
INGEGNERIA INFORMATICA
2022/2023



OBBLIGATORIO
ANNO CORSO 3
ANNO ORDINAMENTO 2017
PRIMO SEMESTRE
CFUOREATTIVITÀ
324LEZIONE
324ESERCITAZIONE
324LABORATORIO


AppelloData
PROGRAMMAZIONE AD OGGETTI (A-H)27/02/2023 - 09:00
PROGRAMMAZIONE AD OGGETTI (A-H)27/02/2023 - 09:00
PROGRAMMAZIONE AD OGGETTI (I-Z)27/02/2023 - 09:00
PROGRAMMAZIONE AD OGGETTI (I-Z)27/02/2023 - 09:00
Obiettivi
L’INSEGNAMENTO INTRODUCE IL PARADIGMA DELLA PROGRAMMAZIONE AD OGGETTI. L’INSEGNAMENTO È PERTANTO FINALIZZATO A SVILUPPARE NEGLI STUDENTI SIA LE COMPETENZE NECESSARIE ALLA INTERPRETAZIONE DEI DOCUMENTI DI PROGETTO DI UN’APPLICAZIONE SOFTWARE FORMALIZZATI IN UML, SIA LE COMPETENZE DI PROGRAMMAZIONE NECESSARIE ALLA REALIZZAZIONE DELL’APPLICAZIONE UTILIZZANDO IL LINGUAGGIO JAVA.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE
CONCETTI FONDAMENTALI DEL PARADIGMA DELLA PROGRAMMAZIONE AD OGGETTI: CLASSI ED OGGETTI, INCAPSULAMENTO, EREDITARIETÀ, POLIMORFISMO. LINGUAGGIO JAVA: SINTASSI, GESTIONE DELLE ECCEZIONI, I/O, THREAD. CENNI ALLA PROGRAMMAZIONE BASATA SU EVENTI PER LA REALIZZAZIONE DI INTERFACCE GRAFICHE.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE APPLICATE
IMPLEMENTARE IN JAVA UN’APPLICAZIONE GIÀ PROGETTATA IN TERMINI DI DIAGRAMMI DELLE CLASSI, E DESCRITTA IN UML. CONSULTARE ED IMPIEGARE LE CLASSI DEFINITE NEI PACKAGE STANDARD DI JAVA. IMPLEMENTARE SEMPLICI APPLICAZIONI MULTITHREADED CON INTERFACCE GRAFICHE.
Prerequisiti
PREREQUISITI: PER IL PROFICUO RAGGIUNGIMENTO DEGLI OBIETTIVI PREFISSATI È RICHIESTA UNA BUONA PRATICA DI PROGRAMMAZIONE IN C.
CORSI PROPEDEUTICI: ALGORITMI E STRUTTURE DATI
Contenuti
Unità Didattica 1: Introduzione alla programmazione orientata agli oggetti
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 5/0/0)

1. ( 2 ore Lezione ): Introduzione al corso. Paradigmi di programmazione
2. ( 3 ore Lezione ): Astrazione. Manutenibilità, riusabilità, verificabilità. Elementi introduttivi della programmazione orientata agli oggetti: classe, oggetto, attributo, metodo. Information hiding.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprensione dei concetti fondamentali della programmazione orientata agli oggetti.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper interpretare un progetto redatto mediante diagramma delle classi.



Unità Didattica 2: Fondamenti di linguaggio Java
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 5/6/3)

1. ( 2 ore Lezione ): Introduzione al linguaggio Java.
2. ( 2 ore Lezione ): Allocazione della memoria in Java
3. ( 1 ora Lezione e 2 ore di Esercitazione ): Modificatori di accesso public e private. Metodo main. Array.
4. ( 2 ore Esercitazione ): Esercitazione su classi, metodi, array, main in Java.
5. ( 2 ore Esercitazione): Stringhe in Java. Specificatori static e final. Overloading
6. ( 3 ore Laboratorio ): Esercitazione su java : classi, package e visibilità.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprendere i costrutti essenziali del linguaggio di programmazione Java e le sue caratteristiche principali. Comprendere l’uso dei modificatori di accesso e il concetto di overloading dei metodi.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper sviluppare semplici progetti in Java che prevedono l’uso di classi, metodi, tipi primitivi, array e stringhe.

Unità Didattica 3: Ereditarietà, interfacce e classi astratte in Java
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/3/2)

1. ( 2 ore Lezione ): Aggregazione, composizione ed ereditarietà.
2. ( 2 ore Lezione ): Upcast e classi astratte.
3. ( 3 ore Esercitazione): Classi astratte ed interfacce in Java. Esempi
4. ( 2 ore Laboratorio ): Esercitazione su ereditarietà, interfacce e classi astratte in Java.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprendere il concetto di ereditarietà e la sua importanza nell’ambito della programmazione orientata agli oggetti.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper sviluppare semplici progetti Java che prevedono l’impiego dell’ereditarietà mediante l’uso di interfacce, classi astratte e classi concrete.


Unità Didattica 4: Eccezioni in Java e cenni ai Generics
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 5/3/0)

1. ( 2 ore Lezione ): Introduzione al meccanismo delle eccezioni. Checked exceptions in Java.
2. ( 3 ore Lezione ): Unchecked exception in Java. Introduzione ai Generics
3. ( 3 ore Esercitazione ): Esercitazione sulle eccezioni in Java.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprendere il concetto di eccezione e la sua importanza nel processo di sviluppo di un progetto software. Saper distinguere tra eccezione controllata e non controllata. Comprendere il concetto di tipo generico.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper sviluppare semplici esempi di progetto in Java che prevedono l’uso di eccezioni controllate e non controllate.


Unità Didattica 5: Collezioni in Java
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 2/2/4)

1. ( 2 ore Lezione ): Introduzione a Java Collection Framework
2. ( 2 ore Esercitazione ): Java Collections Framework: Set, List, Map. Interfacce Comparable e Comparator.
3. ( 2 ore Laboratorio ): Esercitazione su Java Collection Set e List.
4. ( 2 ore Laboratorio ): Esercitazione su Java Maps.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprendere il concetto di collezione e le differenze fondamentali tra insiemi, liste e mappe.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper sviluppare semplici progetti in linguaggio Java che prevedano l’impiego di collezioni di diverso tipo. Saper scegliere la collezione più idonea alla risoluzione di un problema assegnato.


Unità Didattica 6: Input/Output in Java
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 3/2/0)

1. ( 3 ore Lezione ): Input/Output in Java. Organizzazione del package java.io. Lettura a carattere e binaria. Serializzazione.
2. ( 2 ore Esercitazione): Esercitazione su I/O

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprendere i concetti fondamentali alla base dei meccanismi di gestione input output in Java. Comprendere il concetto di serializzazione.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper sviluppare semplici esempi in Java che prevedono lettura e scrittura mediante stream di caratteri o binario.

Unità Didattica 7: Cenni al multithreading in Java
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/3/0)

1. ( 2 ore Lezione ): Introduzione ai thread in Java. Thread e Runnable. Keyword synchronized.
2. ( 2 ore Lezione ): Gestione attesa attiva in Java con metodi sleep, join, wait, notify.
3. ( 3 ore Esercitazione ): Esempi sui thread in Java

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprendere i concetti fondamentali della programmazione concorrente multithreading. Comprendere il modello produttore-consumatore e il problema dell’attesa attiva.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper sviluppare semplici esempi in Java che prevedono l’impiego di thread.


Unità Didattica 8: Realizzazione di interfacce grafiche in Java
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 8/6/2)

1. ( 2 ore Esercitazione ): Classi annidate
2. ( 2 ore Lezione ): Introduzione a JavaFX
3. ( 2 ore Lezione ): JavaFX binding e osservabilità
4. ( 2 ore Lezione ): MVC pattern - Java FX e FXML
5. ( 3 ore Esercitazione): Esercitazione su Java FXML e background threads
6. ( 3 ore Esercitazione): Concorrenza in JavaFX - Task e Service
7. ( 2 ore Laboratorio ): Esercitazione di riepilogo su JavaFX

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprendere il concetto di evento e i principi fondamentali alla base dello sviluppo di interfacce grafiche. Comprendere il concetto di osservabilità e di binding, Comprendere il pattern Model View Controller. Comprendere l’importanza dei thread secondari e loro interazione con il thread principale in JavaFX.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper sviluppare progetti in Java che prevedono l’uso di interfacce grafiche in JavaFX.


TOTALE ORE LEZIONE/ESERCITAZIONE/LABORATORIO 36/25/11
Metodi Didattici
CONSIDERATA LA NECESSITÀ PER GLI STUDENTI DI ACQUISIRE CONOSCENZE TEORICO-METODOLOGICHE E PROGETTUALI, L’ATTIVITÀ FORMATIVA SARÀ ARTICOLATA IN LEZIONI FRONTALI, ESERCITAZIONI INTERATTIVE.
LE LEZIONI IN AULA RIGUARDERANNO TUTTI GLI ARGOMENTI DEL CORSO.
LE ESERCITAZIONI INTERATTIVE SERVIRANNO A SVILUPPARE LE CAPACITÀ APPLICATE.
PER POTER SOSTENERE LA VERIFICA FINALE DEL PROFITTO E CONSEGUIRE I CFU RELATIVI ALL’ATTIVITÀ FORMATIVA, LO STUDENTE DOVRÀ AVERE FREQUENTATO ALMENO IL 70% DELLE ORE PREVISTE DI ATTIVITÀ DIDATTICA ASSISTITA.
Verifica dell'apprendimento
LA PROVA DI ESAME È FINALIZZATA A VALUTARE NEL SUO COMPLESSO: LA CONOSCENZA E LA CAPACITÀ DI COMPRENSIONE DEI CONCETTI PRESENTATI AL CORSO; LA CAPACITÀ DI APPLICARE TALI CONOSCENZE PER LA RISOLUZIONE DI PROBLEMI MEDIANTE L’ADOZIONE DEL PARADIGMA DELLA PROGRAMMAZIONE AD OGGETTI ED IN PARTICOLARE DEL LINGUAGGIO JAVA; L’AUTONOMIA DI GIUDIZIO, LE ABILITÀ COMUNICATIVE E LA CAPACITÀ DI APPRENDERE. ESSA CONSISTE DI UNA PROVA PRATICA E DI UN COLLOQUIO ORALE.
LA PROVA PRATICA È TESA AD ACCERTARE LE COMPETENZE NEL REALIZZARE PROGRAMMI IN LINGUAGGIO JAVA, ED È REALIZZATA DIRETTAMENTE SUL SISTEMA DI ELABORAZIONE PERSONALE. SONO CONSIDERATE CAPACITÀ MINIME QUELLE DI RISOLVERE IL PROBLEMA PROPOSTO, SENZA ERRORI SINTATTICI RILEVANTI; VICEVERSA SONO RITENUTE CAPACITÀ MASSIME QUELLA DI PERVENIRE A SOLUZIONI ALGORITMICHE CHE SIANO EFFICIENTI E CHE FACCIANO USO DELLE STRUTTURE DATI E DEGLI ALGORITMI PIÙ ADEGUATI, SFRUTTANDO OPPORTUNAMENTE LE LIBRERIE MESSE A DISPOSIZIONE DAL LINGUAGGIO. SONO ESONERATI DALLA PROVA PRATICA GLI STUDENTI CHE HANNO SUPERATO CON ESITO POSITIVO I CONTEST DURANTE IL CORSO.
IL COLLOQUIO ORALE VERTERÀ SU TUTTI GLI ARGOMENTI DEL CORSO E LA VALUTAZIONE TERRÀ CONTO DELLE CONOSCENZE DIMOSTRATE DALLO STUDENTE E DEL GRADO DEL LORO APPROFONDIMENTO, DELLA CAPACITÀ DI APPRENDERE DIMOSTRATA, DELLA QUALITÀ DELL’ESPOSIZIONE.
AI FINI DEL VOTO FINALE LA PROVA PRATICA CONTRIBUISCE AL 60% E LA PROVA ORALE AL 40%. LA LODE E' ATTRIBUITA A QUEGLI STUDENTI CHE DIMOSTRANO LA CAPACITA' DI APPLICARE LE CONOSCENZE ACQUISITE ANCHE IN CONTESTI DIFFERENTI DA QUELLI PROPOSTI DURANTE IL CORSO.
Testi
CLAUDIO DE SIO CESARI, “IL NUOVO JAVA. GUIDA COMPLETA ALLA PROGRAMMAZIONE MODERNA”, HOEPLI INFORMATICA

TESTI ED URL DI CONSULTAZIONE ED APPROFONDIMENTO
- BRUCE ECKEL, ""THINKING IN JAVA (4TH ED.)"", PRENTICE HALL
- HERBERT SCHILDT, “JAVA – THE COMPLETE REFERENCE (9TH ED.), ORACLE PRESS
- JAVA TUTORIALS - HTTP://DOCS.ORACLE.COM/JAVASE/TUTORIAL/

MATERIALE DIDATTICO INTEGRATIVO SARA' DISPONIBILE NELLA SEZIONE DEDICATA DELL'INSEGNAMENTO ALL'INTERNO DELLA PIATTAFORMA E-LEARNING DI ATENEO (HTTP://ELEARNING.UNISA.IT) ACCESSIBILE AGLI STUDENTI DEL CORSO TRAMITE LE CREDENZIALI UNICHE DI ATENEO.
Altre Informazioni
L'INSEGNAMENTO E' EROGATO IN ITALIANO
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2023-01-23]