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

PROGRAMMA A.A. 1999-2000

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.
Arrays in Java, confronto con il C. Le Collection in Java 2; implementazione e uso della classe ArrayList. 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.
Gli errori e le eccezioni: la gerarchia di Throwable. Trattamento e propagazione 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 statiche, classi interne annidate, classi interne anonime; visibilità delle classi interne. Grafica elementare: la classe Graphics, i metodi grafici, i metodi paint, repaint e update, ecc. Applets e integrazione con il web.

4. Progettazione e sviluppo di programmi a oggetti.
 

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.