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.
Blog e sito Web del corso di Metodologie di Programmazione (Corso di Laurea in Informatica, canale M-Z)
venerdì 29 aprile 2016
mercoledì 27 aprile 2016
Lab 27/04/2016: esercizi sulla ricorsione
Esempi: riconoscimento di una stringa palindroma, concatenazione ricorsiva di stringhe, ricerca binaria ricorsiva. Utilizzo di metodi di comodo mediante l'overloading. Strutture dati Esercizi sulla ricorsione: ricerca binaria; generazione di tutte le combinazioni di caratteri; generazione delle permutazioni di una stringa. Labirinto con definizione ricorsiva e mediante matrice labirinto.
martedì 26 aprile 2016
Lezione 26/04/2016: generici (2), ricorsione (1)
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. 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. La ricorsione. Pensare ricorsivamente. Esempio: il fattoriale. Funzionamento della ricorsione: record di attivazione e stack. Non prevedere un caso base: la ricorsione infinita.
venerdì 22 aprile 2016
Lezione 22/04/2016: le collection (2); riferimenti a metodi; interfacce funzionali standard; pila e coda; intro ai generici
Interfacce funzionali standard: Predicate, Function, Supplier, Consumer. Pila e coda in Java. Come scegliere la collection appropriata al proprio problema. Introduzione ai tipi generici.
mercoledì 20 aprile 2016
Lab del 20/04/2016: esercizi su HashSet, con hashCode e equals, TreeSet, comparabilità e riferimenti a metodi
hashCode e equals per il corretto funzionamento di HashSet; comparabilità per il funzionamento di TreeSet/Map.
martedì 19 aprile 2016
Lezione del 19/04/2016: le collection (1/2)
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. I metodi keySet, values e entrySet di Map. Espressioni lambda per specificare il Comparator. Riferimenti a metodi. Riferimenti a metodi:
statici, d'istanza con riferimento, d'istanza con classe. Ordinamento
di una collection in Java 8 vs. Java 7. Metodi di default e statici
dell'interfaccia Comparator.
venerdì 8 aprile 2016
mercoledì 6 aprile 2016
Lab 06/04/2016: TANTI esercizi
Esercizi su: interfacce, classi anonime e classi interne, interfacce funzionali, espressioni lambda.
martedì 5 aprile 2016
Lezione 05/04/2016: Interfacce, classi annidate/interne e classi anonime; interfacce funzionali.
Interfacce in Java: dichiarazione, implementazione. Esempio: Iterabile. Differenza tra interfacce e classi astratte. Ereditarietà multipla: il problema del diamante. Interfacce notevoli. Esercizio: MyString con Iterator e Iterable. Istruzione for "each". Classi interne: classi top-level, classi annidate e interne. Classi anonime. Interfacce funzionali. Cenni sulle espressioni lambda.
venerdì 1 aprile 2016
Lezione 1/4/2016: polimorfismo e classe Object
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: clone, equals, getClass, hashCode, toString. Sovrascrivere i metodi toString, equals e clone. Enumerazioni "avanzate".
Iscriviti a:
Post (Atom)