PROGRAMMAZIONE A OGGETTI - MOD.2
- Anno accademico
- 2021/2022 Programmi anni precedenti
- Titolo corso in inglese
- OBJECT-ORIENTED PROGRAMMING - 2
- Codice insegnamento
- CT0372 (AF:339896 AR:180726)
- 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
Orale opzionale a discrezione del docente per aggiustare il voto.
Progetto opzionale.
Modalità di esame
Metodi didattici
Tutto il codice prodotto a lezione viene regolarmente conservato su un repository Github ed è consultabile.