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].
Modalità insegnamento
Il corso si svolge in modalità sincrona a distanza (https://elearning.unitelma.it/course/view.php?id=1901).
Le 32 videolezioni sono sempre disponibili.
Settimanalmente:
1) il docente seleziona un gruppo di videolezioni;
2) invita gli studenti a preparare le lezioni;
3) organizza e tiene dei Webinar per approfondire le videolezioni e svolgere esercizi con gli studenti.
I Webinar sono registrati e sempre disponibili.
I forum del corso (https://elearning.unitelma.it/mod/forum/view.php?id=89233, https://elearning.unitelma.it/mod/forum/view.php?id=61534) sono attivi tutto l'anno.
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 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.
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.
Modalità di erogazione
Il corso si svolge in modalità sincrona a distanza (https://elearning.unitelma.it/course/view.php?id=1901).Le 32 videolezioni sono sempre disponibili.Settimanalmente:1) il docente seleziona un gruppo di videolezioni;2) invita gli studenti a preparare le lezioni;3) organizza e tiene dei Webinar per approfondire le videolezioni e svolgere esercizi con gli studenti.I Webinar sono registrati e sempre disponibili.I forum del corso (https://elearning.unitelma.it/mod/forum/view.php?id=89233, https://elearning.unitelma.it/mod/forum/view.php?id=61534) sono attivi tutto l'anno.