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
Non ci sono propedeuticità formali, tuttavia è consigliabile aver superato o almeno frequentato il corso di Fondamenti di Programmazione.
Testi di riferimento
La pagina del corso include tutto il materiale didattico necessario: video, slide ed eserciziari. Tuttavia, si consiglia di fare riferimento ad almeno un testo tra quelli consigliati [1, 2, 3].[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.
Modalità insegnamento
Il corso prevede lezioni e laboratori.
Frequenza
La partecipazione sincrona alle attività del corso non è obbligatoria.
Modalità di esame
Il calendario degli appelli di esame è consultabile al seguente link: https://www.studiareinformatica.uniroma1.it/appelli-d-esame L' esame consta di una prova scritta e di un progetto: Prova scritta: da svolgere a partire dalla sessione estiva. Consiste di domande a risposta aperta e di esercizi. L'obiettivo è di verificare la preparazione degli studenti ed in particolare le conoscenze acquisite. Progetto: le specifiche del progetto saranno rese disponibili durante il corso. Consiste nello sviluppo di un software con il linguaggio Java. Il progetto viene svolto autonomamente dagli studenti o in gruppi di al massimo 2/3 persone. L'obiettivo è di verificare le capacità di programmazione con il linguaggio Java acquisite durante il corso. 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 consegna del progetto è possibile solo fino a febbraio (l'appello di marzo è solamente per la prova scritta). La prenotazione su Infostud è necessaria per il sostenimento della prova scritta o per la verbalizzazione finale (in caso contrario, la verbalizzazione sarà rimandata all'appello successivo), ma non per la discussione del solo progetto.
Modalità di erogazione
Il corso prevede lezioni di teoria e laboratori