venerdì 29 aprile 2016

Lezione 29/04/2016: le eccezioni

Esercizio sulla ricorsione applicata all'elenco dei file in una cartella. La mutua ricorsione. Eccezioni. Casi tipici nella programmazione Java. Eccezioni notevoli. Perché non restituire un valore d'errore. Vantaggi e svantaggi delle eccezioni. Cosa gestire e cosa non gestire con le eccezioni. Il blocco try-catch-finally. La politica catch-or-declare: gestire o ignorare le eccezioni. Creare eccezioni personalizzate. Le parole chiave throw e throws. La classe Throwable. La gerarchia delle eccezioni in Java. Le classi Exception e Error. Eccezioni checked e unchecked. Esercizi (da svolgere a casa): SequenzaAGradini, FloppyDisk, Dizionario e Mappa, Catena di volontari.

mercoledì 27 aprile 2016

Lab 27/04/2016: esercizi sulla ricorsione

Esempi: riconoscimento di una stringa palindroma, concatenazione ricorsiva di stringhe, ricerca binaria ricorsiva. Utilizzo di metodi di comodo mediante l'overloading. Strutture dati  Esercizi sulla ricorsione: ricerca binaria; generazione di tutte le combinazioni di caratteri; generazione delle permutazioni di una stringa. Labirinto con definizione ricorsiva e mediante matrice labirinto.

martedì 26 aprile 2016

Lezione 26/04/2016: generici (2), ricorsione (1)

Tipi generici. Definire e utilizzare una classe generica. Specificare più tipi generici. Estendere le classi generiche. Esercizio: inverti lista generica. Generici e collezioni: interfacce generiche prototipiche. Definire un metodo generico. Calcolare il massimo di una collezione di elementi di tipo generico. Sicurezza dei generici a tempo di compilazione: confronto con gli array. Jolly come tipi generici. Esempio: metodo generico di somma. Cancellazione del tipo (type erasure). Esempio: cancellazione del tipo nella classe Coppia e nel metodo getMassimo. Esercizio: cancellazione del tipo nella classe Pila. La ricorsione. Pensare ricorsivamente. Esempio: il fattoriale. Funzionamento della ricorsione: record di attivazione e stack. Non prevedere un caso base: la ricorsione infinita.


venerdì 22 aprile 2016

Lezione 22/04/2016: le collection (2); riferimenti a metodi; interfacce funzionali standard; pila e coda; intro ai generici

Interfacce funzionali standard: Predicate, Function, Supplier, Consumer. Pila e coda in Java. Come scegliere la collection appropriata al proprio problema. Introduzione ai tipi generici.


martedì 19 aprile 2016

Lezione del 19/04/2016: le collection (1/2)

Le Collection. Gerarchia delle interfacce di tipo Collection: Iterable, Collection, List, Set, SortedSet, Queue. Tre modi per iterare su una collezione. L'interfaccia Iterator. Esempio: il Jukebox. Collezioni fondamentali: ArrayList, LinkedList, HashSet, TreeSet, HashMap, LinkedHashMap, TreeMap. Metodi di ogni collezione. ListIterator e il metodo listIterator. Esempi di uso di HashSet e TreeSet. Funzionamento di un HashSet: il metodo hashCode. HashMap e TreeMap: l'interfaccia Map. L'interfaccia Comparable. Ordinamento con l'interfaccia Comparator. Insiemi e mappe con elementi (o chiavi) senza ordinamento, con ordinamento naturale e con ordinamento di inserimento. I metodi keySet, values e entrySet di Map. Espressioni lambda per specificare il Comparator. Riferimenti a metodi. Riferimenti a metodi: statici, d'istanza con riferimento, d'istanza con classe. Ordinamento di una collection in Java 8 vs. Java 7. Metodi di default e statici dell'interfaccia Comparator.

15/04/2016: prova d'esonero!

Com'è andata? Lo scopriremo presto!


venerdì 8 aprile 2016

Lezione 08/04/2016: lambda, esercizi

Sintassi delle espressioni lambda e differenze con le classi interne. Classi e metodi final. Esercizi: EssereVivente, ListaLinkata di interi modellando l'elemento come classe annidata.


mercoledì 6 aprile 2016

Lab 06/04/2016: TANTI esercizi

Esercizi su: interfacce, classi anonime e classi interne, interfacce funzionali, espressioni lambda.


martedì 5 aprile 2016

Lezione 05/04/2016: Interfacce, classi annidate/interne e classi anonime; interfacce funzionali.

Interfacce in Java: dichiarazione, implementazione. Esempio: Iterabile. Differenza tra interfacce e classi astratte. Ereditarietà multipla: il problema del diamante. Interfacce notevoli. Esercizio: MyString con Iterator e Iterable. Istruzione for "each". Classi interne: classi top-level, classi annidate e interne. Classi anonime. Interfacce funzionali. Cenni sulle espressioni lambda.


venerdì 1 aprile 2016

Lezione 1/4/2016: polimorfismo e classe Object

Polimorfismo: definizione, esempi e casistiche. Esempi: la classe Impiegato, ImpiegatoStipendiato e ImpiegatoACottimo. La parola chiave super per accedere a metodi e campi della superclasse. L'operatore instanceof. Downcasting e upcasting: differenze ed effetti sull'interfaccia pubblica. La classe universale Object e i suoi metodi principali: clone, equals, getClass, hashCode, toString. Sovrascrivere i metodi toString, equals e clone. Enumerazioni "avanzate".