venerdì 31 maggio 2013

Lezione 31/5/2013: sigleton e decorator; conclusione del corso

Permettere una singola istanza per una classe: il Singleton Pattern. L'esempio di Paperino e della rete semantica. Il Decorator Pattern: aggiungere responsabilità a una classe senza che essa lo sappia. L'esempio della rappresentazione grafica delle automobili. Conclusione del corso!

APPELLO EXTRA DI LUGLIO!!!
  • scritto: giovedì 25 luglio, aula V MAT ore 9
  • consegna progetto: 24 luglio, entro le ore 22 all'indirizzo email: progetto.naviglimetodologie chiocciola gmail.com
  • discussione progetto, eventuale orale e verbalizzazione: 31 luglio, dalle ore 9 (studio del docente)
Tutte le informazioni aggiornate sugli appelli si trovano sulla pagina relativa alle informazioni sul corso.

mercoledì 29 maggio 2013

Lab 29/5/2013: reflection, rilascio del codice ed esercizi

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.

Esercizi: GestoreClassi, AlberoBinarioDiRicerca con i generici (provate a renderlo iterabile sui nodi).


Lezione 29/5/2013: fuori programma su PlayN!

Lezione "fuori programma" su PlayN: per chi sta sviluppando il mitico progetto SaGa (Sapienza Games)!


Lezione 28/5/2013: esercizi su design pattern

Esercizi su strategy, observer e singleton pattern. MultiMappa con generici.

venerdì 24 maggio 2013

Lezione 24/5/2013: Design pattern (1/2)

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 Factory Pattern e il Simple Factory Pattern: la pizzeria e la pizzeria in franchising.


mercoledì 22 maggio 2013

Lab 22/5/2013: ancora sui generici ed esercizi

Discussione del progetto Sapy. 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.


Lezione 21/5/2013: AWT e Swing

Introduzione alle interfacce grafiche in Java: AWT e Swing. Componenti principali: Container, Panel, Window, Frame, Dialog. Interazione con l'utente. Eventi ed Event Listener. Menù. Altre componenti.


venerdì 17 maggio 2013

Lezione 17/5/2013: esercizio scartaParentesi e tipi generici

Esercizio: metodo ricorsivo scartaParentesi. 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.

Lab 15/5/2013: esercizio dell'esonero

Svolgimento di tutti (!) gli esercizi dell'esonero.

venerdì 10 maggio 2013

Lectio magistralis: Prof. Silvio Micali

Senza parole! Mi ha insegnato, divertito ed emozionato! Indubbiamente un fuoriclasse planetario. Preparatevi anche voi così: fiducia e dubbio!


giovedì 9 maggio 2013

Lab 8/5/2013: esercizi su ricorsione, file, strutture dati e interfacce

Esercizi su ricorsione: ricerca ricorsiva in un array; contaPercorsi, contaPercorsi con stampa e salvataggio dei percorsi in un HashSet; eccezioni per i casi non ammissibili; caricamento di una mappa da file (Scanner vs. BufferedReader(FileReader)) e inversione della mappa (con gestione delle eccezioni); creazione di una multimappa: gestione del caso in cui la collezione "valore" non esiste e quello in cui invece già esiste; compareTo vs. equals e hashCode. Creazione di una classe Studente comparabile mediante interfaccia Comparable e di una classe Classe iterabile mediante interfaccia Iterable. Creazione di diversi tipi di iteratori per la classe Classe e di un Comparator per la classe Studente.

P.S. La prenotazione (obbligatoria) per l'esonero 3 è aperta.


venerdì 3 maggio 2013

Lezione 3/5/2013: Ancora su strutture dati; input & output in Java

Ancora sulle strutture dati: i metodi keySet, values e entrySet di Map; la classe Arrays e la classe Collections. La classe pila: Stack. L'interfaccia coda Queue e l'implementazione mediante LinkedList. Esercizi con pila e coda: parentesi annidate, inversione degli elementi di una coda, calcolatrice in notazione polacca inversa. Esercizio: gli alberi binari usando classi interne per i nodi.

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.

mercoledì 1 maggio 2013

Lezione 30/4/2013: Collezioni

Le Collection. Gerarchia delle interfacce di tipo Collection: Iterable, Collection, List, Set, SortedSet, Queue. Tre modi per iterare su una collezione. L'interfaccia Iterator. Esempio: il Jukebox. Collezioni fondamentali: ArrayList, LinkedList, HashSet, TreeSet, HashMap, LinkedHashMap, TreeMap. Metodi di ogni collezione. ListIterator e il metodo listIterator. Esempi di uso di HashSet e TreeSet. Funzionamento di un HashSet: il metodo hashCode. HashMap e TreeMap: l'interfaccia Map. L'interfaccia Comparable. Ordinamento con l'interfaccia Comparator. Insiemi e mappe con elementi (o chiavi) senza ordinamento, con ordinamento naturale e con ordinamento di inserimento.