giovedì 28 maggio 2015

martedì 26 maggio 2015

Lezione 26/5/2015: Decorator pattern e conclusione del corso

Il Decorator Pattern: aggiungere responsabilità a una classe senza che essa lo sappia. L'esempio della rappresentazione grafica delle automobili. Conclusione del corso!

martedì 19 maggio 2015

Lezione 19/05/2015: design pattern (2)

Permettere una singola istanza per una classe: il Singleton Pattern. L'esempio di Paperino e della rete semantica. Il Builder pattern. Il Command Pattern e l'esempio della callback. Rivisitazione del pattern Iterator.

giovedì 14 maggio 2015

Lezione 14/05/2015: design pattern (1)

Che cos'è un design pattern. Lo Strategy Pattern: il simulatore di anatre. L'Observer Pattern: un'applicazione di monitoraggio del tempo. La metafora dell'abbonamento. java.util.Observable e java.util.Observer. Separare la creazione degli oggetti. Il Simple Factory e il Factory Pattern.

mercoledì 13 maggio 2015

Lab 13/05/2015: esercizi sugli stream; presentazione dei progetti

Esercizi sugli stream a partire da liste di stringhe e liste di oggetti di tipo Ristorante. Presentazione dei progetti.


martedì 12 maggio 2015

Lezione 12/5/2015: gli stream

La classe Optional. Gli stream: definizione; caratteristiche; operazioni intermedie e terminali. Metodi principali dell'interfaccia java.util.stream.Stream. Comportamento "pigro" (lazy) degli stream. Operazioni senza stato e con stato. Stream ottimizzati per i tipi primitivi: IntStream, DoubleStream e LongStream. Come ottenere uno stream: da elenco di valori, da una Collection, da un array, da un file. Differenza tra iterazione interna ed esterna. Metodi di Stream: min/max, filter, forEach, count, sorted, map, distinct, reduce, collect, anyMatch, allMatch, noneMatch, findFirst, findAny, mapToInt. Collectors: counting, maxBy/minBy, summingInt, averagingInt, joining, toList, toSet, groupingBy, partitioningBy. Stream paralleli. Le mappe in Java 8. Nuove API data e ora.

giovedì 7 maggio 2015

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

mercoledì 6 maggio 2015

Lab 06/05/2015: esercizi su ricorsione e taginvaders

Ancora sulla ricorsione: mutua ricorsione. Cambio di base ricorsivo. Espansione ricorsiva di una stringa generalizzata. Percorso ricorsivo su un array di posizioni. Esercizio per casa: Labirinto con esplorazione ricorsiva con filo di Arianna(TM). Serializzazione e deserializzazione di oggetti. Checkpoint su taginvaders.


martedì 5 maggio 2015

Lezione 05/05/2015: la ricorsione

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.