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).


sabato 28 aprile 2012

giovedì 19 aprile 2012

Lezione 19/4/12: eccezioni

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: SequenzaAGradini, FloppyDisk, Dizionario e Mappa, Catena di volontari.

IMPORTANTE: Registrazione obbligatoria per la prova intermedia di martedì 24 aprile (aula I NEC, ore 9.30). Clicca qui per registrarti.


Lab del 18/4/12: esercizi di preparazione alla prova intermedia

Esercizi: Successioni, Tassonomia di animali, Marvel vs. Disney, RaccoltaDifferenziata.



mercoledì 18 aprile 2012

Lezione 17/4/12: interfacce e classi interne

Interfacce in Java: dichiarazione, implementazione. Esempio: Iterabile. Differenza tra interfacce e classi astratte. Ereditarietà multipla. Interfacce notevoli. Esercizio: Successione, Animali. Classi interne: classi top-level, classi annidate e interne. Classi annidate statiche. Utilità delle classi interne. Esercizio: Disney vs. Marvel.

IMPORTANTE: Registrazione obbligatoria per la prova intermedia di martedì 24 aprile (aula I NEC, ore 9.30). Clicca qui per registrarti.


giovedì 12 aprile 2012

Lezione 12/4/12: polimorfismo, classe Object, liste

Polimorfismo: definizione, esempi e casistiche. Esempi: la classe Impiegato, ImpiegatoStipendiato e ImpiegatoACottimo. La parola chiave super per accedere a metodi e campi della superclasse. L'operatore instanceof. Downcasting e upcasting: differenze ed effetti sull'interfaccia pubblica. La classe universale Object e i suoi metodi principali. Sovrascrivere i metodi toString, equals e clone. Enumerazioni e costruttori. Metodi e classi final, classi final della libreria standard. Le liste in Java: la classe ArrayList.


Lab dell'11/4/12: LibreriaComponibile ed EssereVivente

Abbiamo introdotto gli ArrayList e visto un esempio di modellazione a oggetti mediante liste, la LibreriaComponibile (con Scaffale e Libro). Un secondo esercizio visto in laboratorio è stato l'EssereVivente, classe astratta di una serie di esseri con funzioni vitali, eventuale possibiltà di risorgere (Fenice), di morire 7 volte (Gatto), ecc.


mercoledì 4 aprile 2012

Lab del 4/4/12: tris ed esercizi su ereditarietà

Le classi ScacchieraTris e Tris. Migliorie con la modellazione delle celle (classe Casella da enum a classe vera e propria) e dei giocatori (GiocatoreUmano, GiocatoreComputer). Esercizi sull'ereditarietà: espressioni matematiche (Espressione, Costante, Variabile, EspressioneComposta, ecc.) e gioco dell'oca (classi GiocoDellOca, Giocatore, Casella, CasellaVuota, CasellaPunti, CasellaSpostamento). Sbizzarritevi!


Lezione 3/4/2012: ereditarietà

Una lezione molto molto importante sull'ereditarietà: abbiamo introdotto il concetto di ereditarietà, di classi e metodi astratti, parole chiave this e super nei costruttori. Overloading e overriding: significato, contratto e differenze. Modificatori di visibilità: public, private, protected e default.