Programmazione Orientata agli Oggetti

Docente Ing. Riccardo Ortale


Materiale didattico:

 

Lezione

Argomenti

Materiale

01-10-2008

Presentazione del corso. Dalla programmazione imperativa alla programmazione orientata agli oggetti. Principi base dell'approccio object-oriented. Concetti di classe e oggetto. Relazioni tra classi ed oggeti. Proprietà fondamentali della programmazione orientata agli oggetti: classificazione, incapsulamento, ereditarietà, polimorfismo.

Download

Documentazione del codice. Organizzazione dei file in packages.  Download

02-10-2008

Esercitazione sui richiami a Java (a cura dell'Ing. Noemi Tempera).

Download

08-10-2008

Overloading di metodi e costruttori. 

Download

Ereditarietà (in Java): concetti di superclasse (supertipo o anche classe base), sottoclasse e membri ereditabili. Overriding di metodi. Differenze tra overloading ed overriding.  Le keyword final e super. Ereditarietà singola e multipla (cenni alle interfacce in Java).

La superclasse universale Object: i metodi clone(), equals(Object o), toString().

Download

 

15-10-2008

Polimorfismo. Conversione dei tipi: upcasting (esplicito ed implicito), downcasting. Classi astratte. Polimorfismo e compilazione: controllo statico dei tipi e risoluzione di tipo early binding per i metodi in overloading. Polimorfismo ed esecuzione (interpretazione): controllo dinamico dei tipi e risoluzione di tipo (late) dynamic binding per i metodi in overriding. Esercitazione.

Download

17-10-2008

Esercitazione (a cura dell'Ing. Noemi Tempera)

Download

22-10-2008

Ereditarietà multipla. Utilità e svantaggi.  Ereditarietà: dettagli ed approfondimenti
L'ereditarietà multipla in Java: le interfacce. Differenze tra classi ed interfacce. Raffinamento delle nozioni di tipo, supertipo e sottotipo alla luce delle interfacce. Utilità delle interfacce: ruoli e riuso. Le interfacce Comparable e Comparator. Esempi.

Download

Un esempio su un caso particolare di estensione di classi ed implementazione di interfacce

Esercitazione.

Download

24-10-2008

Esercitazione (a cura dell'Ing. Noemi Tempera)

Download

29-10-2008 Aspetti evoluti sull'utilizzo delle interfacce in Java: l'estensione di interfacce. Discussione riepilogativa e comparativa dei meccanismi per la creazione di nuovi tipi base in Java. Discussione riepilogativa e comparativa dei meccanismi per la creazione di nuovi tipi in Java, definiti come estensione di tipi preesistenti.

Nozioni di tipo statico e tipo dinamico. Relazione tra tipo statico ed overloading. Relazione tra tipo dinamico ed overriding.

Download
Esercitazione Download
05-11-2008 La gestione delle eccezioni in Java. Motivazioni. La gerarchia delle eccezioni in Java: eccezioni di tipo checked ed unchecked. La clausola throws. L'effetto di una eccezione. Politiche di gestione delle eccezioni: delega e gestione diretta tramite try-catch-finalize. Esempi.

Cenni sulla gestione dell'I/O in Java: stream di caratteri e/o di byte. Esempi.

Download
07-11-2008 Esercitazione (a cura dell'Ing. Noemi Tempera) Download

Download

12-11-2008 Le strutture dati fondamentali in Java. Motivazioni ed aspetti basilari dei Generics. Download
Collezioni e liste generiche. L'interfaccia Collection<E>. L'interfaccia Iterator<E>. Iterazione for-each. Collezioni e tipi primitivi: boxing e unboxing. L'interfaccia List<E>. Le classi concrete ArrayList<E> e LinkedList<E>. Funzioni di utilità su liste: la classe Collections. Criteri di ordinamento: le interfacce Comparable<T> (ordinamento naturale) e Comparator<T> (ordinamento diverso da quello naturale). Esempi di uso. Download
14-11-2008 Esercitazione (a cura dell'Ing. Noemi Tempera) Download
19-11-2008 Insiemi generici.Criteri di equivalenza tra elementi per la gestione dei duplicati negli insiemi. Le interfacce Set<E> e SortedSet<E>. Cenni alle tavole hash. Le implementazioni di Set<E>: la classe HashSet<E> ed i metodi hashcode()  ed equals(); la classe TreeSet<E> ed i metodi compareTo() e compare(). Criteri generali per la definizione coerente dei metodi hashcode(), equals() e compareTo() (o compare()). Esempi uso. Download

Esempi d'uso relativi ad HashSet e TreeSet

Mappe generiche. Il concetto di mappa. Le interfacce Map<K,V> e SortedMap<K,V>. I metodi dell'interfaccia Map<K,V>. Le implementazioni dell'interfaccia Map<K,V>: le classi Download

Esempio sulle Mappe

Esercitazione di ricapitolazione Download

 

Si ringrazia il Prof. Merialdo per aver reso pubblicamente disponibile il materiale didattico del proprio corso.