venerdì 27 maggio 2016

Lezione 27/05/2016: design pattern (3) + conclusione del corso

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

mercoledì 25 maggio 2016

Lab 25/5/2016: esercizi su stream e sul pattern Strategy

Esercizi sugli stream (Titolo) e uso del metodo Stream.reduce nel contesto del pattern Strategy.


Lezione 24/5/2016: design pattern (2)

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. Permettere una singola istanza per una classe: il Singleton Pattern. L'esempio di Paperino e della rete semantica. Il Builder pattern.

venerdì 13 maggio 2016

Lezione 13/5/2016: reflection e rilascio del codice

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ì 11 maggio 2016

Lezione 10/05/2016: ancora sugli stream

IntStream, LongStream, DoubleStream. Passare da uno stream su tipi primitivi a uno stream su oggetti e viceversa. I Collector: joining, toList, toSet, toMap, toCollection, summingInt, averagingInt. Operazioni intermedie: limit, skip, flatMap. Creare un nuovo collector. Ottenere uno stream infinito. Copiare gli stream. Importanza dell'ordine delle operazioni. Ottimizzazione dell'ordine di esecuzione. Stream sequenziali e paralleli. Le mappe in Java 8.

venerdì 6 maggio 2016

Lezione 06/05/2016: 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.

mercoledì 4 maggio 2016

Presentazione dei progetti: 04/05/2016

Abbiamo presentato i due progetti: My Neural Network (MyNN) e Crucy (cruciverba dinamico). Tutte le informazioni accessibili dal gruppo degli studenti!

Lab 04/05/2016: il pattern Builder; esercizio sui generici MultiMappa

Esercizi con il pattern Builder. Esercizio sui generici MultiMappa.


martedì 3 maggio 2016

Lezione 03/05/2016: input/output in Java

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 java.io.File. BufferedReader/FileReader, BufferedWriter/FileWriter. Leggere e scrivere un file di testo formattato: le classi Formatter e Scanner. Il package java.nio: Path, Paths e Files. Serializzare e deserializzare un oggetto. L'interfaccia Serializable e il serialVersionUID. La parola chiave transient.