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.