LINGUAGGI DI PROGRAMMAZIONE: PROGRAMMAZIONE A OGGETTI (LPPO)
docente: Elio Giovannetti

PROGRAMMA A.A. 1998-99

1. Fondamenti della programmazione ad oggetti.
Classi e oggetti, campi, metodi e messaggi. Ereditarietà e classi derivate: estensione e ridefinizione (overriding), binding dinamico. Protezione dei dati e visibilità.
Confronto fra le nozioni di classe e di tipo, e fra le nozioni di sottoclasse e di sottotipo. Binding dinamico e riuso del codice. Relazione fra binding dinamico, sottotipi, e polimorfismo. Upcasting e downcasting. Relazioni fra classi: ereditarietà (is-a), composizione (has-a), uso (uses). Confronto fra ereditarietà e composizione. Diagrammi di classi.

2. Introduzione alla programmazione in Java.
Tipi-base in C e in Java. Assenza di puntatori espliciti in Java, garbage collection.
Confronto fra ridefinizione (overriding) e sovraccarico (overloading) di metodi. Sovraccarico (overloading) di campi.
Creazione e inizializzazione di oggetti: costruttori, inizializzatori, blocchi di inizializzazione di istanza. Costruttori ed ereditarietà.
Metodi e campi statici. Caricamento e inizializzazione di classi. Blocchi di inizializzazione statici.
Compilazione ed esecuzione di un programma Java. Strutturazione in packages. Visibilità di classi, metodi, e campi. Visibilità ed ereditarietà.
La classe Object e la classe Class.
Array e vettori in Java, confronto con il C, la classe Vector. Classi-involucro. La classe String. Informazione di tipo a tempo di esecuzione (RTTI), errori di tipo a tempo di esecuzione. Riflessione (reflexion), relazioni fra riflessione, polimorfismo, e genericità.
Metodi e classi astratte. Metodi e campi final. Interfacce ed ereditarità multipla. Costanti di compilazione. Realizzazione di tipi enumerativi.
Cenni sul trattamento delle eccezioni.

3. Programmazione per eventi: l' AWT e il modello degli eventi della versione 1.1
Componenti, contenitori, layout manager, eventi, ascoltatori di eventi, adattatori. Classi interne (inner classes), classi interne anonime. Grafica elementare. Applets e integrazione con il web.

4. Streams e files. La serializzazione di oggetti.

5. Progettazione e sviluppo di programmi a oggetti.
Librerie e frameworks. Progettazione per componenti. I design patterns in Java.
 

Dove studiare:
C. Horstmann, G. Cornell, Core Java, volume I, Sun Microsystems Press, Prentice Hall.
M. Bertacca, A. Guidi, Introduzione a Java, McGraw-Hill Italia (35000 lire).

Altri testi consigliati:

Horstmann-Cornell, Core Java, volume II, Sun Microsystems Press, Prentice Hall.