1. Introduzione alla programmazione ad oggetti.
Moduli e visibilità nei linguaggi tradizionali, moduli senza
stato e moduli con stato.
Classi e oggetti, campi, istanziazione e costruttori, protezione e
visibilità, ereditarietà e classi derivate, binding dinamico
e metodi virtuali, messaggi e metodi, polimorfismo. Metodi e campi statici.
Programmazione a oggetti in C++. Confronto fra C e C++.
2. Introduzione alla programmazione in Java: confronto fra C++ e
Java.
Tipi -base in C++ e Java. Assenza di puntatori espliciti in Java, garbage
collection.
Compilazione ed esecuzione di un programma Java. Strutturazione in
packages.
La classe Object e la classe Class. Upcasting e downcasting.
Array e vettori in C++ e Java. Classi-involucro.
Ereditarità multipla in C++ e classe-base virtuale, interfacce.Java.
3. La programmazione generica: cenni.
Dall'ML ai templates del C++ (cenni). Una proposta di costrutti per
la programmazione generica in Java (Generic Java).
4. Riflessione e polimorfismo (dr. E. Grasso).
I costrutti per la riflessione in Java. Un esempio di applicazione:
la realizzazione di un ORB riflessivo.
5. L' AWT e il modello degli eventi della versione 1.1
Componenti, contenitori, layout manager, eventi, ascoltatori di eventi,
adattatori. Grafica elementare.
La classe Observable e l'interfaccia Observer: il paradigma MVC.
6. Programmazione per componenti (dr. E. Grasso).
Confronto fra le nozioni di libreria e di framework. Programmazione
per componenti e cenni sui Java Beans.
7. Streams e files.
8. La concorrenza in Java.
La classe Thread e l'interfaccia Runnable, programmi multithreaded.
La sincronizzazione in Java: i locks, i metodi sincronizzati, i metodi
wait e notify e i monitors.
Dove studiare:
C. Horstmann, Practical Object-Oriented Development in C++ and Java,
J. Wiley
C.Horstmann, G. Cornell, Core Java, volume I, Sun Microsystems Press,
Prentice Hall.
J. Hunt, Java and Object Orientation, Springer.
Altri testi consigliati:
Horstmann-Cornell, Core Java, volume II, Sun Microsystems Press, Prentice Hall.