L'obiettivo principale del corso consiste nel rendere gli studenti in grado di programmare in linguaggi orientati agli oggetti. Inoltre, il corso illustrerà i principi di base della programmazione funzionale. Le principali conoscenze acquisite saranno: - principi di base della programmazione orientata agli oggetti - tecniche di programmazione ad oggetti - il linguaggio di programmazione Java - cenni di programmazione funzionale Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno: - analisi e soluzione di problemi mediante codice ad oggetti in Java - implementazione di semplici algoritmi in programmazione funzionale
Prerequisiti
E’ necessario avere acquisito e assimilato le seguenti conoscenze: - principi della programmazione strutturata - linguaggio C - semplici strutture di dati - algoritmi di base
Metodi didattici
Il corso prevede 48 ore di lezione più tutorato. Le lezioni riguardano gli argomenti del corso e includono anche semplici prove al calcolatore da parte degli studenti. Le lezioni saranno trasmesse in streaming e registrate.
Verifica Apprendimento
L'esame consiste in una prova in cui gli studenti dovranno scrivere un programma in Java che legga dati da file di testo e li elabori. Il programma deve essere scritto al calcolatore. Inoltre la prova include un esercizio di programmazione funzionale in Java. La prova dura 2 ore. Vale 32 punti. E' consentito usare materiale didattico. Il codice del programma deve poter essere compilato senza errori, altrimenti il compito non verrà corretto.
Testi
I testi di riferimento sono - dispense del docente - Walter Savitch, Programmazione di base e avanzata con Java - 3/Ed, Pearson, 2024
Contenuti
Introduzione alla programmazione orientata agli oggetti (OOP) (10 ore): OOP classica, OOP in Java, oggetti composti, package, stringhe, array, wrapper, IDE. OOP in Java (14 ore): Ereditarietà, subtyping, polimorfismo, la classe Object, classi astratte e interfacce, eccezioni, input/output. Java Collection Framework (JCF) (12 ore): JCF, generici, JCF con generici. Programmazione funzionale con Java (12 ore): espressioni lambda, Stream API.