Programma del Corso A.A. 2013/2014
1. Astrazione procedurale in Java: metodi statici. (dispense e Liskov [cap. 3])
- Programmi iterativi. Il problema della specifica e della corettezza: asserzioni logiche.
- Precondizioni, postcondizioni, invarianti.
- Programmi ricorsivi: precondizioni, postcondizioni, e dimostrazioni di correttezza per induzione.
- Confronto tra funzioni ricorsive e iterative.
- Introduzione agli Oggetti: Heap, Stack, creazione di un oggetto.
equals
e ==.
- Array: definizione, allocazione, uso. Stringhe. Array bidimensionali.
- Oggetti mutabili e immutabili.
- Sviluppo di Programmi certificati con array.
2. Astrazione sui Dati in Java: Definizioni di Classi. (vedi Liskov [5])
- Classe = struttura dati + metodi.
- Variabili di classe e di istanza. Metodi di classe e di istanza.
- Primi cenni alla Gerarchia dei Tipi. Metodi ereditati da Object da ridefinire:
toString()
, clone()
, equals(Object o)
etc.
- Oggetti: creazione, uso, invocazione di metodi. Inizializzazioni e Costruttori.
- Regole di visibilità e modificatori di visibilità:
public
, private
e protected
.
- Overloading di metodi e costruttori.
- Esempi di classi che implementano strutture dati: Pile, Code, Alberi.
- Specifica di una classe. Invariante di rappresentazione e funzione di astrazione.
3. Gerarchia dei Tipi: Sottoclassi e Interfacce (Liskov [7])
- Più a fondo nei tipi di JAVA: sottotipaggio, gerarchia dei tipi, casting.
- Overriding di metodi.
- Dymamic lookup dei metodi.
- Esempi sull'uso di sottoclassi e interfacce.
4. Astrazione sul Controllo: Iteratori. (lucidi + Liskov [6])
- Uso di Iteratori.
- Definizione di Iteratori.
5. Robustezza dei Programmi: Eccezioni (lucidi + Liskov [4])
- Specifica delle eccezioni.
- Meccanismo computazionale delle eccezioni: sollevamento, cattura, trattamento.
- Corretto uso delle eccezioni: Programmazione Difensiva.
6. Polimorfismo in Java. (vedi Lucidi, esempio liste polimorfe, tutorial Oracle sui Generics)
- Polimorfismo indotto dal sottotipaggio.
- Esempi tratte dalle "vecchie" strutture dati di libreria:
ArrayList
, etc.
- Polimorfismo: Tipi Generici.
- Le "nuove" strutture dati di libreria:
ArrayList<E>
, etc.
7. Cenno alla definizione di Interfacce Grafiche. (vedi Deitel [14,15])
- Separazione tra logica dell'applicazione e interfaccia grafica.
- Programmazione a eventi.
8. Testing e Debugging. (Liskov [10])
- Black-box e Glass-box testing.
- Testing di Procedure, Iteratori, Dati astratti, poliformismo.
- Unit e integration testing.
9. Miscellanea: Reflection (vedi lucidi)
--
IvanoSalvo - 05 Mar 2014
This topic: Metod_prog/AD
> WebHome > ProgrammaDelCorso
Topic revision: r11 - 2016-03-12 - IvanoSalvo