giovedì 29 maggio 2014

Lezione 29/5/2014: La reflection

Introduzione alla Reflection. La classe Class. Ottenere un oggetto di tipo Class: da istanze di tipi non primitivi, da tipi primitivi, da tipi non primitivi, per nome: il metodo Class.forName. Scoprire i campi, metodi e costruttori di una classe. Esempio di uso della Reflection: creare intelligenze artificiali a tempo di esecuzione. Richiamare un determinato metodo a tempo di esecuzione.

Rilascio del codice: i file jar. Creazione di un file jar da console e con Eclipse. Jar eseguibili: il manifesto. Esecuzione di un file jar.

Lab 28/5/2014: esercizi su generici, info su progetto

Esercizi sui generici: alberi generici; coda di priorità generica. Ulteriori informazioni sul progetto.


giovedì 22 maggio 2014

Lezione 22/5/2014: generici (2) ed esercizi sui generici

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. Esercizi (esonero dell'anno scorso): multiinsieme e multimappa generici.

Lab 21/5/2014: visione scritto e progetti

Visione degli scritti. Informazioni su Lucene per il progetto PensieroProfondo e illustrazione di possibili scopi per SaGa 2.0.


Lezione 20/5/2014: Prova scritta!

Vedi subject.


giovedì 15 maggio 2014

Lezione 15/5/2014: Tipi generici (1); esercizi su interfacce notevoli e collections

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.

Esercizi di preparazione: rendere iterabile (con Iterable) e confrontabile una pubblicazione per titolo (usando Comparable) e per numero di citazioni (usando Comparator). Comparator implementato come classe esterna, come classe annidata e come classe anonima. Importanza della corretta implementazione di Object.hashCode e equals per i Set, importanza del rendere comparabile una classe se si usano TreeSet e TreeMap.

mercoledì 14 maggio 2014

Lab 14/05/2014: Esercizi su ricorsione, I/O e Iterable/Comparable

Ancora sulla ricorsione: mutua ricorsione e ricorsione di coda. Esercizi a go-go! Cambio di base ricorsivo; sommaSottrai; Labirinto con esplorazione ricorsiva con filo di Arianna(TM). Rendere la classe Punto iterabile e la classe MyArray iterabile e comparabile. Lettura da file con Scanner e BufferedReader: Parametri, PropertyManager.


martedì 13 maggio 2014

Lezione 13/5/2014: Ricorsione in Java

La ricorsione. Pensare ricorsivamente. Esempio: il fattoriale. Funzionamento della ricorsione: record di attivazione e stack. Non prevedere un caso base: la ricorsione infinita. Esempi: riconoscimento di una stringa palindroma, concatenazione ricorsiva di stringhe, ricerca binaria ricorsiva. Utilizzo di metodi di comodo mediante l'overloading. Strutture dati ricorsive. Esempio: visualizzare il contenuto di una cartella in forma gerarchica. Esercizio: cercare file in una cartella, somma ricorsiva di numeri. La successione di Fibonacci, efficienza e problematiche dell'implementazione ricorsiva. Esercizio: permutazioni di una stringa.



giovedì 8 maggio 2014

Lezione 8/5/2014: 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.

Lab 7/5/2014: Esercizi sulle eccezioni

Gestire le eccezioni nel trasformare interi in stringhe in base k e viceversa. Eccezioni "inattese". Esercizi: SequenzaAGradini e FloppyDisk; Dizionario. UnsupportedOperationException in Iterator.remove.

Lezione 6/5/2014: 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ì 1 maggio 2014

Lab 30/4/2014: Esercizi su classi annidate e interne; interfacce Iterable, Iterator, Comparable, Comparator; mappe.

Esercizi su classi annidate e interne e Iterable: Lista linkata di interi (diverse versioni con classi esterne, classi interne, classi annidate statiche). Strutture dati: mappe. Esercizio sull'implementazione di una multimappa. Oggetti comparabili: le interfacce Comparable e Comparator.