Metodologie di Programmazione: Lezioni
Arrays. Argomenti dalla linea di comando. Numero variabile di parametri. Errori ed eccezioni (prima parte): catturare eccezioni con try-catch. Esempi. Esercizi.throw. Esempi. Esercizi.extends, polimorfismo. Super-classe/sotto-classe, super-tipo/sotto-tipo. Costruttori e super. Ridefinire, @Override, dynamic binding. Cast e instanceof. final applicato a metodi e classi. Sotto-tipi e array. La classe Object: metodi equals e toString. Esempi. Esercizi.abstract: metodi astratti, modificatore protected. Design patterns: Template. Interfacce interface: implements, contratto, metodi di default. Esempi. Esercizi.Comparable<T>. Esempi. Esercizi.Collection<E>, List<E>, Set<E>, Map<E>. Tabelle hash e il metodo hashCode. Rappresentazione di alberi tramite mappe. Genericità (seconda parte): wildcard, limitazioni extends e super. Esempi. Esercizi.Path, informazioni circa file e directory. Errori ed eccezioni (terza parte): checked exception, gerarchia delle eccezioni, try-with-resources. Lettura di file di testo: la classe Files in java.nio.file. Scrittura di testo in file: principali metodi. Lettura e scrittura di bytes in file. Esempi. Esercizi.Stream e le loro operazioni: operazioni intermedie e terminali. Pipeline e programmazione stile dichiarativo. Il tipo Optional: motivazioni e uso. Le principali operazioni sui flussi e i collettori in Collectors. Esempi. Esercizi.Thread, creazione, stati della vita di un thread Thread.State, thread corrente Thread.currentThread(), interruzione di un thread interrupt e "addormentamento" Thread.sleep. Uso di thread per la reattività di un'applicazione. Informazioni sui thread attivi: daemon threads, Thread.getAllStackTraces(). Esempi. Esercizi.java.net, downloading di una pagina web. Cenni su espressioni regolari: Pattern e Matcher. Computazioni asincrone: ExecutorService, Future, Executors. Esecuzioni multithreading per interrogare servizi web. Esempi. Esercizi.synchronized, variabili atomiche, visibilità e volatile. Strategie per thread safety: dati condivisi, confinamento, immutabilità e lock. Esempi. Esercizi.ExecutorService per eseguire molti task: CachedThreadPool e WorkStealingPool. Ridurre le dipendenze tra task. Uso di ExecutorCompletionService e LongAdder. Design pattern produttore-esecutore: code sincronizzate ConcurrentLinkedQueue. Uso del framework Fork-Join. Esempi. Esercizi.Stage, Scene, scene graph. Controlli e layout: Group, VBox, HBox, Button, Slider, ComboBox. Gestione degli eventi: handler e listener. Esempi. Esercizi.WebView, WebEngine, ContextMenu, MenuItem. Proprietà e binding. Task asincroni: Worker. Icone e risorse. Esercizi.Worker, Task, Service. Esecuzione asincrona sul JavaFX Application Thread: Platform.runLater. Monitorare il progresso di un task: ProgressIndicator. Cancellare un task. Esercizi.Canvas. Generazione labirinti.wait-notify, esecuzioni periodiche con Timeline. Loading di class file: URLClassLoader.Class, Method, Constructor, Field, Parameter. Trattamento dei tipi: Type, ParameterizedType. Esempi. Esercizi.23 Mag 2016