Programma del Corso A.A. 2013/2014

1. Astrazione procedurale in Java: metodi statici. (dispense e Liskov [cap. 3])

  1. Programmi iterativi. Il problema della specifica e della corettezza: asserzioni logiche.
  2. Precondizioni, postcondizioni, invarianti.
  3. Programmi ricorsivi: precondizioni, postcondizioni, e dimostrazioni di correttezza per induzione.
  4. Confronto tra funzioni ricorsive e iterative.
  5. Introduzione agli Oggetti: Heap, Stack, creazione di un oggetto. equals e ==.
  6. Array: definizione, allocazione, uso. Stringhe. Array bidimensionali.
  7. Oggetti mutabili e immutabili.
  8. Sviluppo di Programmi certificati con array.

2. Astrazione sui Dati in Java: Definizioni di Classi. (vedi Liskov [5])

  1. Classe = struttura dati + metodi.
  2. Variabili di classe e di istanza. Metodi di classe e di istanza.
  3. Primi cenni alla Gerarchia dei Tipi. Metodi ereditati da Object da ridefinire: toString(), clone(), equals(Object o) etc.
  4. Oggetti: creazione, uso, invocazione di metodi. Inizializzazioni e Costruttori.
  5. Regole di visibilità e modificatori di visibilità: public, private e protected.
  6. Overloading di metodi e costruttori.
  7. Esempi di classi che implementano strutture dati: Pile, Code, Alberi.
  8. Specifica di una classe. Invariante di rappresentazione e funzione di astrazione.

3. Gerarchia dei Tipi: Sottoclassi e Interfacce (Liskov [7])

  1. Più a fondo nei tipi di JAVA: sottotipaggio, gerarchia dei tipi, casting.
  2. Overriding di metodi.
  3. Dymamic lookup dei metodi.
  4. Esempi sull'uso di sottoclassi e interfacce.

4. Astrazione sul Controllo: Iteratori. (lucidi + Liskov [6])

  1. Uso di Iteratori.
  2. Definizione di Iteratori.

5. Robustezza dei Programmi: Eccezioni (lucidi + Liskov [4])

  1. Specifica delle eccezioni.
  2. Meccanismo computazionale delle eccezioni: sollevamento, cattura, trattamento.
  3. Corretto uso delle eccezioni: Programmazione Difensiva.

6. Polimorfismo in Java. (vedi Lucidi, esempio liste polimorfe, tutorial Oracle sui Generics)

  1. Polimorfismo indotto dal sottotipaggio.
  2. Esempi tratte dalle "vecchie" strutture dati di libreria: ArrayList, etc.
  3. Polimorfismo: Tipi Generici.
  4. Le "nuove" strutture dati di libreria: ArrayList<E>, etc.

7. Cenno alla definizione di Interfacce Grafiche. (vedi Deitel [14,15])

  1. Separazione tra logica dell'applicazione e interfaccia grafica.
  2. Programmazione a eventi.

8. Testing e Debugging. (Liskov [10])

  1. Black-box e Glass-box testing.
  2. Testing di Procedure, Iteratori, Dati astratti, poliformismo.
  3. 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
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback