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.

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.