I pattern Observer, Factory, Command/Callback. Riassunto dei design pattern. Consigli per il futuro. Conclusione del corso!
Blog e sito Web del corso di Metodologie di Programmazione (Corso di Laurea in Informatica, canale M-Z)
venerdì 29 maggio 2020
giovedì 28 maggio 2020
Lab del 27/05/2020 (Google meet, 2 ore): moduli ed esercizi sul Builder
Creare moduli e codificarne le dipendenze: requires, exports, requires transitive. Esercizi sul pattern builder.
lunedì 25 maggio 2020
Lezione del 22/05/2020 (Google meet, 3 ore): ancora sugli stream
Operazioni su IntStream, DoubleStream, LongStream e passaggio da uno stream all'altro. Ottenere uno stream infinito. L'operazione intermedia flatMap. Ottenere uno stream infinito e iterare su uno stream: il metodo Stream.iterate.
IntStream.range e rangeClosed. Copiare gli stream. Importanza dell'ordine delle operazioni.
Ottimizzazione dell'ordine di esecuzione. Stream sequenziali e
paralleli.
Lezione del 20/05/2020 (Google meet, 1.5 ore): introduzione al pattern singoletto e al pattern builder
Revisione delle specifiche di VerbAtlas. Introduzione al singoletto e al builder.
lunedì 18 maggio 2020
venerdì 15 maggio 2020
Lezione del 15/05/2020 (Google meet, 3 ore): eccezioni e intro agli stream
Generici e covarianza e controvarianza. La classe Optional. Gli stream: definizione; caratteristiche; operazioni intermedie e terminali. Metodi principali dell'interfaccia java.util.stream.Stream.
Comportamento "pigro" (lazy) degli stream. Operazioni senza stato e con
stato. Stream ottimizzati per i tipi primitivi: IntStream, DoubleStream
e LongStream. Come ottenere uno stream: da elenco di valori, da una
Collection, da un array, da un file. Il pattern Builder, la sua importanza nel paradigma orientato agli oggetti e il suo uso negli stream mediante operazioni intermedie e terminali. Operazioni intermedie e terminali degli stream.
martedì 12 maggio 2020
Lezione dell'11/05/2020 (Google meet, 2 ore): i generici
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.
Lezione dell'08/05/2020 (Google meet, 1.5 ore): presentazione dei progetti
Presentazione dei due progetti: API di VerbAtlas e Traffic!
mercoledì 6 maggio 2020
Lezione del 29/04/2020 (Google meet, 1.5 ore): esercizi sulla ricorsione
Esercizi sulla ricorsione: generazione di stringhe binarie di lunghezza k; generazione di permutazioni di caratteri.
Lezione del 27/04/2020 (Google meet, 2 ore): ricorsione
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. Ricerca binaria ricorsiva. Utilizzo di metodi di comodo mediante l'overloading. Utilizzo di metodi di comodo mediante l'overloading. Strutture dati ricorsive.
giovedì 23 aprile 2020
Lezione del 24/04/2020 (Google meet, 3 ore): riferimenti a metodi; ordinamento; metodi di Comparator; interfacce funzionali; introduzione ai generici
Espressioni lambda per specificare il Comparator. 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. Interfacce funzionali standard: Predicate, Function, Supplier, Consumer. Pila e coda in Java. Introduzione ai tipi generici. Generici e collezioni: interfacce generiche prototipiche.
lunedì 20 aprile 2020
Lezione del 20/04/2020 (Google meet, 2 ore): mappe, ordinamento con comparabilità interna ed esterna, riferimenti a metodi
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. Espressioni lambda per specificare il Comparator. Riferimenti a metodi:
statici, d'istanza con riferimento, d'istanza con classe.
venerdì 17 aprile 2020
Lezione del 17/04/2020 (Google meet, 3 ore e mezzo): classi annidate e interne, interfacce funzionali, espressioni lambda, collections
Classi annidate e interne. Operatore this nelle classi interne. Intefacce funzionali. Espressioni lambda. Le Collection. Gerarchia delle interfacce di tipo Collection: Iterable, Collection, List, Set, SortedSet, Queue. Tre modi per iterare su una collezione. L'interfaccia Iterator. Collezioni fondamentali: ArrayList, LinkedList, HashSet, TreeSet, HashMap, LinkedHashMap, TreeMap. Metodi di ogni collezione. ListIterator e il metodo listIterator.
mercoledì 8 aprile 2020
lunedì 6 aprile 2020
venerdì 3 aprile 2020
lunedì 30 marzo 2020
venerdì 27 marzo 2020
Lezione del 27/03/2020 (Google meet, 3 ore): polimorfismo e 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.
lunedì 23 marzo 2020
Lezione del 23/03/2020 (Google meet, 2 ore): 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. Funzionamento dei costruttori nella gerarchia di ereditarietà. Differenza tra overriding e overloading. Visibilità di campi e metodi: pubblica, privata, protetta e di package.
venerdì 20 marzo 2020
Lezione del 20/03/2020 (Google meet, 3 ore): incapsulamento; static; enumerazioni; classi wrapper; auto-boxing e auto-unboxing
Vantaggi dei metodi e dell'incapsulamento. Metodi e campi statici: modalità di accesso dall'interno e dall'esterno della classe. Perché il main() è static? Importazione statica di campi e metodi.
Autoboxing (vedi immagine sotto :-)), auto-unboxing. Classi wrapper
e metodi e costanti delle classi wrapper. Confrontare valori di tipi
primitivi vs. oggetti vs. valori di enumerazioni. Esercizi su heap &
stack.
Enumerazioni. Esempio: SemeCarta e ValoreCarta. Dichiarazione di una enumerazione. Costruttori, campi e metodi di un'enumerazione. I metodi values e valueOf. Enumerazioni e switch.
lunedì 16 marzo 2020
Lezione del 16/03/2020 (Google meet, 8.30-10, 2 ore): gli array
Gli array. Definizione, inizializzazione, accesso agli elementi, lunghezza di un array. Matrici mediante array di array. Esercizio su heap & stack.
venerdì 13 marzo 2020
Lezione del 13/03/2020 (Google meet, 8.30-11.00, 3 ore): strutture di controllo condizionali e iterative
Strutture di controllo: if, else, il problema dell'else sospeso, else if, operatore di selezione ?, istruzione switch. Esercizi: estrazione del carattere centrale, saluto casuale. Introduzione ai costrutti iterativi: while, do..while, for. Le istruzioni break e continue.
lunedì 9 marzo 2020
martedì 3 marzo 2020
Lezione del 02/03/2020: classi, oggetti, campi, metodi e costruttori. L'operatore new.
Consapevolezza del tipo di dato. Conversione esplicita, cast esplicito, cast implicito.
Concetti fondamentali di programmazione orientata agli oggetti: classi vs. oggetti, campi e metodi (inclusi i costruttori). L'operatore new. Esercizi: la classe Contatore.
Concetti fondamentali di programmazione orientata agli oggetti: classi vs. oggetti, campi e metodi (inclusi i costruttori). L'operatore new. Esercizi: la classe Contatore.
venerdì 28 febbraio 2020
Lezione del 28/02/2020: panoramica sul corso, tipi di dato, variabili, letterali
Oggi abbiamo completato l'introduzione al corso, fornito una panoramica sugli argomenti principali del corso (oggetti, incapsulamento, ereditarietà, polimorfismo) e parlato di tipi di dato primitivi, variabili, identificatori e letterali.
Introduzione a JShell. Operatori
aritmetici e booleani, operatori di confronto, operatori di
assegnazione. Il main di una classe.
giovedì 27 febbraio 2020
lunedì 24 febbraio 2020
Lezione del 24/02/2020: introduzione al corso
E la prima lezione è andata!!! Abbiamo introdotto il
corso, il docente e brevemente il linguaggio Java. Non dimenticatevi di iscrivervi al gruppo di discussione.
lunedì 20 gennaio 2020
Pronti, partenza, via!
Benvenuto/a! Se sei uno studente del corso di Metodologie di
Programmazione (prof. Navigli), segui le istruzioni qui riportate per
iscriverti: gruppo di discussione e materiale. Come ogni anno, il corso sarà aggiornatissimo, coinvolgente ed entusiasmante! Quest'anno ci divertiremo con tantissime iniziative!
Iscriviti a:
Post (Atom)