PROGRAMMAZIONE AD OGGETTI

Luca GRECO PROGRAMMAZIONE AD OGGETTI

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



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


Obiettivi
L’INSEGNAMENTO MIRA ALL’APPRENDIMENTO DEL 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
COMPRENSIONE DELLA TERMINOLOGIA UTILIZZATA NELL’AMBITO DELLA PROGRAMMAZIONE AD OGGETTI, CON PARTICOLARE RIFERIMENTO AI DIAGRAMMI UML, ALLO STANDARD JAVADOC, ED AL CODICE SORGENTE JAVA.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE APPLICATE
SAPER IMPLEMENTARE IN JAVA UN SISTEMA SOFTWARE GIÀ PROGETTATO IN TERMINI DI DIAGRAMMI DELLE CLASSI, E DESCRITTO IN UML. SAPER IMPIEGARE LE CLASSI DEFINITE NEI PACKAGE STANDARD DI JAVA, E SAPER PROGETTARE I DIAGRAMMI UML PER SEMPLICI APPLICAZIONI.
Prerequisiti
PREREQUISITI: PER IL PROFICUO RAGGIUNGIMENTO DEGLI OBIETTIVI PREFISSATI È RICHIESTA UNA BUONA PRATICA DI PROGRAMMAZIONE IN C.
CORSI PROPEDEUTICI: ALGORITMI E STRUTTURE DATI
Contenuti
INTRODUZIONE.
PRESENTAZIONE DEL CORSO. IL RUOLO DELLA PROGRAMMAZIONE AD OGGETTI NELLA PRODUZIONE DEL SOFTWARE. CENNI DI INGEGNERIA DEL SOFTWARE.


IL MODELLO AD OGGETTI.
IL MODELLO AD OGGETTI: INCAPSULAMENTO, CLASSI ED OGGETTI. COSTRUTTORI E DISTRUTTORI. METODI DI ACCESSO. RIFERIMENTI AD OGGETTI. CLASSI E FUNZIONI AMICHE. OVERLOADING DEGLI OPERATORI.
GESTIONE DELLA MEMORIA E CREAZIONE DINAMICA DI OGGETTI. COMPOSIZIONE ED EREDITARIETÀ. CLASSI DERIVATE E REGOLE DI VISIBILITÀ. IL POLIMORFISMO. METODI VIRTUALI E CLASSI ASTRATTE. GENERICITÀ.
CENNI AL LINGUAGGIO UML E PRINCIPALI DIAGRAMMI: USE CASE DIAGRAM E CLASS DIAGRAM.

IL LINGUAGGIO JAVA
IL SISTEMA DEI TIPI, GLI OPERATORI E LE STRUTTURE PER IL CONTROLLO DEL FLUSSO IN JAVA. CONCETTI DI CLASSE, OGGETTO E METODI. EREDITARIETÀ E POLIMORFISMO IN JAVA. CONTROLLO DELLA VISIBILITÀ DI ATTRIBUTI E METODI. CLASSI ASTRATTE ED INTERFACCE. PACKAGE.


GESTIONE DEGLI ERRORI IN JAVA
IL MODELLO PER LA GESTIONE DELLE ECCEZIONI IN JAVA. ECCEZIONI CONTROLLATE E NONCONTROLLATE. LE CLASSI DEL JDK PER LA GESTIONE DELLE ECCEZIONI. LA GENERAZIONE DI ECCEZIONI.


COLLEZIONI DI STRUTTURE DATI IN JAVA
IMPLEMENTAZIONI ASTRATTE E CONCRETE DI LIST, QUEUE, SET E MAP. ITERATORI. IMPLEMENTAZIONE DEGLI ALGORITMI DI RICERCA ED ORDINAMENTO SULLE COLLEZIONI.


INPUT/OUTPUT IN JAVA
I/O A BYTE E A CARATTERE. I PACKAGE E LE CLASSI PER L'I/O IN JAVA. ECCEZIONI PER LA GESTIONE DELL’I/O.


PROGRAMMAZIONE CONCORRENTE IN JAVA
FONDAMENTI DI PROGRAMMAZIONE CONCORRENTE E MULTITHREAD. SINCRONIZZAZIONE DEI THREAD, CONDIVISIONE DELLE RISORSE, GESTIONE DELLE PRIORITÀ. PROGRAMMAZIONE MULTITHREAD IN JAVA.


PROGETTO DELLE INTERFACCE GRAFICHE
COMPONENTI PRINCIPALI PER LA PROGETTAZIONE DI GRAPHICAL USER INTERFACE (GUI). I PACKAGE AWT E SWING. GESTIONE DEGLI EVENTI NEL JDK 1.2. GESTIONE DEL LAYOUT.

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, “MANUALE DI JAVA 9”, 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/
Altre Informazioni
LA LINGUA DI INSEGNAMENTO È L’ITALIANO.
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2022-05-23]