Programma
Syllabus:
- Introduzione alla programmazione a oggetti
- Hello, World! La REPL in Java 9
- Tipi di dato fondamentali
- Introduzione a JRE, JDK ed Eclipse
- Conversioni di tipo
- Concetti fondamentali di programmazione orientata agli oggetti
- Incapsulamento e inizializzazione di default
- La classe String
- Riferimenti a oggetti, heap & stack, metodi statici
- Strutture di controllo; costrutti iterativi
- Iterazione; array
- Costanti ed enumerazioni
- Ereditarietà, classi e metodi astratti. Le parole chiave this e super nei costruttori
- Overloading e overriding. Visibilità: public, private, protected e default.
- Ereditarietà vs. composizione.
- Polimorfismo. Downcasting e upcasting.
- La classe Object
- La parola chiave final.
- Interfacce. Differenze con le classi astratte. Ereditarietà multipla. Interfacce notevoli.
- Programmazione funzionale: interfacce funzionali ed espressioni lambda. Riferimenti a metodi.
- Stream ed espressioni lambda.
- Classi top-level, annidate statiche e interne
- Introduzione alla modularizzazione Java 9
- Eccezioni: try-catch-finally. Politica catch-or-declare. Parole chiave throw e throws. Le classi Throwable, Exception ed Error. Eccezioni checked e unchecked.
- Collezioni: gerarchia, classi fondamentali e loro metodi. Tre modi per iterare su una collezione. Iterable e Iterator. Interfaccia Comparable. Ordinamento con Comparable e Comparator
- Collezioni: insiemi e mappe senza ordinamento, con ordinamento natural e con ordinamento di inserimento. Metodi. Classi Arrays e Collections. La classe pila Stack e l'interfaccia coda Queue.
- Implementazione mediante LinkedList
- Input/Output
- Ricorsione in Java. Uso dell'overloading.
- Uguaglianza in Java.
- Tipi generici.
- Design pattern: strategy, observer, factory, decorator, callback, MVC.
- Reflection. La classe Class.
Prerequisiti
Familiarità con i concetti di base della programmazione, come quelli trattati nel corso di Fondamenti di Programmazione.
Testi di riferimento
Il materiale didattico verra` messo a disposizione degli studenti tramite il sito del corso (eventuali registrazioni, slide, ed eserciziari). Tuttavia, si consiglia di fare riferimento ad almeno un testo tra quelli consigliati [1, 2, 3].
Frequenza
La partecipazione sincrona alle attività del corso non è obbligatoria ma consigliata.
Modalità di esame
L'esame consiste in una prova scritta, una prova orale ed un progetto:
Prova scritta: da svolgere a partire dalla sessione estiva.
Progetto: le specifiche del progetto saranno rese disponibili durante il corso. Nel caso in cui il progetto permetta lo svolgimento di gruppo, il progetto può essere svolto individualmente o, se il progetto lo consente, da un gruppo di al più 2 studenti. Il superamento del progetto richiede, oltre alla consegna di ciò che è richiesto dalle specifiche, anche una discussione individuale del progetto. Il progetto può essere consegnato 5 giorni prima della data dell'esame SCRITTO che si intende sostenere. Il voto relativo al progetto dipende sia dal materiale consegnato che dalla discussione orale. Se ci sono significativi indizi che portano a credere che il progetto consegnato sia stato copiato in tutto o in parte, il progetto è considerato nullo per tutti gli studenti coinvolti, incluso chi ha permesso di copiare.
Prova orale: da svolgere dopo aver passato sia la prova scritta e dopo aver consegnato il progetto. L'obiettivo della prova orale è sia di verificare le conoscenze acquisite nel corso sia di discutere con il docente il progetto presentato.
L'esame è considerato superato con successo se si ottiene la sufficienza (ovvero 18/30) sia nella prova scritta che nel progetto. Il voto finale è ottenuto calcolando la media ponderata dei voti ottenuti: 60% prova scritta e 40% progetto. Le due prove possono essere superate in modo indipendente (ovvero in date differenti) e in qualsiasi ordine. Tuttavia la validità dei voti ottenuti nelle due prove termina con l'ultima sessione dell'anno accademico (ovvero entro la sessione di gennaio-febbraio dell'anno seguente o, nel caso di studenti lavoratori/fuori corso ecc., nella sessione di marzo-aprile). La prenotazione su Infostud è necessaria per il sostenimento della prova scritta o per la prova orale (verbalizzazione finale); in caso contrario, la verbalizzazione sarà rimandata all'appello successivo.
Bibliografia
[1] Claudio De Sio Cesari. Manuale di Java 9 - Programmazione orientata agli oggetti con Java standard edition 8 Hoepli, 2018.[2] Herbert Schildt. Java: The Complete Reference, eleventh edition. Mcgraw-Hill Osborne Media, 2018.[3] Cay S. Horstmann. Concetti di informatica e fondamenti di Java. Apogeo, 7a edizione, 2019.