PROGRAMMAZIONE A OGGETTI - MOD.2
- Anno accademico
- 2023/2024 Programmi anni precedenti
- Titolo corso in inglese
- OBJECT-ORIENTED PROGRAMMING - 2
- Codice insegnamento
- CT0372 (AF:401992 AR:250738)
- Lingua di insegnamento
- Italiano
- Modalità
- In presenza
- Crediti formativi universitari
- 6 su 12 di PROGRAMMAZIONE A OGGETTI
- Livello laurea
- Laurea
- Settore scientifico disciplinare
- INF/01
- Periodo
- II Semestre
- Anno corso
- 2
- Sede
- VENEZIA
- Spazio Moodle
- Link allo spazio del corso
Inquadramento dell'insegnamento nel percorso del corso di studio
L'obiettivo dell’insegnamento è fornire conoscenze relative alla programmazione ad oggetti in generale ed al linguaggio Java in particolare.
Dall'edizione 2021-2022 il corso offre anche un approfondimento di C++, del suo object system e del suo template system, con confronti tra programmazione ad oggetti (OOP) e programmazione generica (GP).
Risultati di apprendimento attesi
Come per ogni corso di programmazione è fondamentale che il percorso formativo coniughi elementi metodologici a continui stimoli sperimentali, attraverso l'invito alla risoluzione autonoma di esercizi e problemi applicativi.
Lo studente che avrà frequentato con profitto il corso avrà acquisito una conoscenza approfondita dei linguaggi Java e C++, dei principali design pattern e delle tecniche di programmazione avanzate. Allo stesso tempo potrà contare su una competenza generale per quanto riguarda la programmazione ad oggetti e le regole che sottendono alla progettazione e sviluppo di software secondo tale paradigma. Competenze che potranno essere facilmente trasferite a diversi linguaggi e contesti.
Prerequisiti
Algoritmi imperativi su strutture dati elementari: array, liste, collection, alberi.
Conoscenza di base del linguaggio Java e del linguaggio C++.
Contenuti
. Programmazione ad eventi, callback, anonymous classes
. Eccezioni, error reporting, resource tracking
. Polimorfismo parametrico: generics, constraints, polimorfismo first-class
. Programmazione funzionale pura/impura codificata ad oggetti: lambda espressioni, function objects, closures
. Design pattern: factory, singleton, command, listener-observer, consumer-producer
. Tecniche di programmazione avanzata: type-driven programming ad oggetti
. Confronti tra OOP e GP, tra Java e C++
Testi di riferimento
"Effective Java Third Edition"
Addison-Wesley Professional, 2017
Kamalmeet Singh, Adrian Ianculescu, Lucian-Paul Torje
"Design Patterns and Best Practices in Java"
Packt Publishing Ltd, 2018
Scott Meyers
"Effective Modern C++"
O'Reilly Media Inc, 2015
Modalità di verifica dell'apprendimento
Una prova orale sarà richiesta a discrezione del docente valutando caso per caso. Essa ha lo scopo di aggiustare il voto dello scritto qualora fosse sotto la soglia della sufficienza o qualora fosse esplicitamente richiesto dallo studente.
E' anche possibile consegnare al docente un progetto tra quelli proposti sulla pagina Moodle. Si tratta di una cosa del tutto opzionale, che ha valore innanzitutto come esercizio di coding con lo scopo di migliorare l'apprendimento dei concetti del corso; tuttavia, qualora il risultato dovesse rivelarsi di particolare qualità, il docente arrotonderà il voto dell'esame tenendone conto opportunamente.
Modalità di esame
Metodi didattici
Tutto il codice prodotto a lezione viene regolarmente conservato su un repository Github ed è consultabile.