Gli argomenti principali trattati durante il corso sono indicati qui di seguito. Gli esempi sono sviluppati utilizzando il linguaggio di programmazione Java, mediante l’ambiente di sviluppo con interfaccia grafica BLUEJ.
Concetti e metodologie Nozioni di base: moduli interagenti, messaggi e metodi, classi e istanze, gerarchie di classi ed ereditarietà, overriding di metodi, eccezioni. Progettazione orientata agli oggetti: identificazione delle componenti e definizione delle responsabilità; definizione del comportamento e delle interazioni fra moduli; specifica dell'interfaccia; concetto di stato. Benefici della programmazione orientata agli oggetti: incapsulamento delle informazioni, maggiore affidabilita' e potenzialità di riutilizzo del codice, condivisione di codice, polimorfismo, rapidità di prototipazione. Ereditarietà: sottoclassi, tipi e compatibilità per sostituzione. Specializzazione e altre forme di ereditarietà. Ereditarietà del codice ed ereditarietà del comportamento. Selezione dinamica dei metodi. Polimorfismo e variabili polimorfe. Overloading. Overriding: sostituzione e raffinamento. Metodi astratti. Linguaggio di programmazione Java Caratteristiche e costrutti principali del linguaggio Java. Realizzazioni di classi in Java: struttura di un programma; campi per rappresentare le variabili di stato; costruttori; attributi di campi e metodi; istanziazione di oggetti; ereditarietà e interfacce. Modello degli eventi in Java. Gestione delle eccezioni. Garbage collection. Alcune caratteristiche avanzate dell'ambiente di programmazione basato su Java. Progetto di interfacce verso l'utente (GUI) attraverso la libreria Application Windowing Toolkit (AWT) di Java: componenti e layout manager. Input e output in Java. Altre classi di utilità : Math, Random, System, String. Grafica elementare in Java. Applet e programmazione per la rete. Discussione di esempi in Java. Concetti ricorrenti: Livelli di astrazione; astrazione sui dati; stato; approccio object-oriented; incapsulamento dell'informazione; riutilizzo del codice.