giovedì 30 aprile 2015

Lezione 30/04/2015: I/O

Input & output: gli oggetti System.out e System.in. InputStream, PrintStream e la classe Scanner. File di testo e file binari. Gli stream. Gerarchie di classi stream. Leggere e scrivere un file di testo: la classe File. Leggere e scrivere un file di testo formattato: le classi Formatter e Scanner. Serializzare e deserializzare un oggetto. L'interfaccia Serializable e il serialVersionUID. Esempio: il fumetto serializzabile.

mercoledì 29 aprile 2015

martedì 28 aprile 2015

Lezione 28/04/2015: Le eccezioni

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.

giovedì 23 aprile 2015

Lezione 23/04/2015: i tipi generici

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.

Lab 22/04/2015: hashCode e equals; presentazione dell'esonero 3

Importanza dell'implementazione di hashCode e equals ed esempi di malfunzionamenti con HashSet; importanza dell'implementazione di Comparable per l'uso di TreeSet o TreeMap. Presentazione del terzo esonero: TagInvaders!

martedì 21 aprile 2015

Lezione 21/04/2015: le collection (2); riferimenti a metodi; interfacce funzionali standard

hashCode e equals per il corretto funzionamento di HashSet; comparabilità per il funzionamento di TreeSet/Map. 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. Interfacce funzionali standard: Predicate, Function, Supplier, Consumer. Pila e coda in Java. Come scegliere la collection appropriata al proprio problema.


Prova intermedia: 17/4/2015

La foto parla da sé!


giovedì 9 aprile 2015

Lezione del 09/04/2015: le collection (1)

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.

mercoledì 8 aprile 2015

Lab 08/04/2015: annullato

Il laboratorio di oggi annullato causa prolungamento inatteso di lavori all'interno.

mercoledì 1 aprile 2015

Lab 01/04/2015: esercizi

Esercizio su interfaccia Resettabile. Esercizio Filtro, FiltroIntero, FiltroPrimo, FiltroDispari, MultiFiltro con gestione delle eccezioni. Rendere iterabile una stringa (con iterator come classe interna). Rendere iterabile un treno (con iterator di vagoni ripreso dall'iterator della lista). Rete sociale e Utenti.