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.