giovedì 31 maggio 2012

Lezione 31/5/12: reflection e rilascio

Ancora sui tipi generici: la parola chiave super. Overloading dei metodi generici. Tipi raw.

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.

IMPORTANTE: prenotazione all'appello dell'11 giugno. Clicca QUI.


mercoledì 30 maggio 2012

Lab del 30/5/12: esercizio sui generici; progetto

Esercizio sulle successioni con i generici. Discussione del progetto. Le note esplicative sono online sul sito google del corso!

domenica 27 maggio 2012

Lezione 24/5/12: GUI

Concetto di interfaccia grafica. Metafora dell'armadio IKEA. Gerarchia AWT/Swing. Componenti principali: Base, Widget, Layout, Graphics. JFrame, JPanel, JLabel, JButton, Component, Container, JComponent. Interazione con l'utente: eventi e sorgenti. Gli EventListener: MouseListener, KeyListener, ActionListener. JMenu, JDialog, JSplitPane, JScrollPane, JRadioButton, JCheckBox, JComboBox, JTextField, JTextArea. Layout. Disegno personalizzato.


Lab del 23/5/12: esercizi d'esonero, generici e progetto

Esercizi d'esonero sulla ricorsione: conta percorsi, MangiaDoppioniConsecutivi, somma minimale, sequenza k-esplosiva. Esercizi sull'I/O: biblioteca. Esercizi sulle collection: inversione di una mappa. Generici: implementazione della Pila generica. Delucidazioni sul progetto.


martedì 22 maggio 2012

Lezione 22/5/12: Tipi generici

Ancora sulle strutture dati: alberi, alberi binari, definizione in Java. Esercizio: ricerca in un albero binario.

Tipi generici. Definire e utilizzare una classe generica. Specificare più tipi generici. Estendere le classi generiche. Esercizio: la classe Pila. Generici e collezioni: interfacce generiche prototipiche. Definire un metodo generico. 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.

  (cancellazione del tipo)

mercoledì 16 maggio 2012

Lab del 16/5/12: esercizi su ricorsione, collezioni e I/O

Esercizi sulla ricorsione: conteggio delle occorrenze di una lettera; verifica del contenimento di un intero in un array; calcolo del numero di occorrenze totali e in posizione pari di un carattere in una stringa; stampa della lista delle posizione delle occorrenze; verifica della presenza di caratteri ripetuti in una stringa.

Esercizi su I/O e collezioni: lettura e recupero di successioni; verifica se un carattere appare k volte in una stringa.



Lezione 15/5/12: ancora su strutture dati, pile e code

Ancora su strutture dati: interfacce fondamentali (Iterable, Collection, List, Set, OrderedSet, Queue), insiemi e mappe con elementi (o chiavi) senza ordinamento, con ordinamento naturale e con ordinamento di inserimento. 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.

giovedì 10 maggio 2012

Lezione 10/5/12: collezioni in Java

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. Algoritmi sulle collezioni: la classe Collections. Algoritmi sugli array: la classe Arrays. Ordinamento "naturale" degli oggetti. L'interfaccia Comparable. Ordinamento con l'interfaccia Comparator.


Lab del 9/5/12: esercizi sulla ricorsione in Java

Esercizi: Teseo, il minotauro e il labirinto di Creta (e il filo di Arianna!) sia nella versione con labirinto rappresentato da una struttura ricorsiva di corridoi, sia nella sua rappresentazione matriciale (caricata da file). Gestione dell'I/O: DatabasePersone, valutazione in and e or di espressioni valutabili.


Lezione 8/5/12: ancora su ricorsione; input & output

Ancora su ricorsione: la successione di Fibonacci, efficienza e problematiche dell'implementazione ricorsiva. Esercizio: permutazioni di una stringa. Esercizio: Teseo, il minotauro e il labirinto di Creta (versione con struttura dati ricorsiva e con labirinto a matrice). Mutua ricorsione. Esempio: pari e dispari. Esercizio: SommaSottrai. Ricorsione di coda. Esercizio: and tra espressioni "valutabili" in una lista. Esercizio: la Torre di Hanoi.

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.


giovedì 3 maggio 2012

Lezione 3/5/12: ricorsione in Java

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.

Le specifiche del progetto sono online!!!

mercoledì 2 maggio 2012

Lab del 2/5/12: soluzioni secondo esonero e presentazione progetto

Visione dei compiti, soluzioni del secondo esonero e presentazione di una "bozza" del progetto (avventura testuale e/o grafica).