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)
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
L’insegnamento è una delle attività formative di base del corso di laurea in Informatica che, assieme al modulo 1, consentono allo studente di acquisire la conoscenza e la comprensione dei principali paradigmi di programmazione e di acquisire la capacità di progettare e implementare software secondo le tecniche, gli stili e le metodologie più moderne.
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).

Il corso mira a sviluppare nello studente la necessaria familiarità con il paradigma della Programmazione ad Oggetti e nel contempo consolidare le basi di programmazione acquisite durante il primo anno.

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.
Programmazione ad oggetti base insegnata nel modulo 1: Java, classi, interfacce, polimorfismo, subtyping.
Algoritmi imperativi su strutture dati elementari: array, liste, collection, alberi.
Conoscenza di base del linguaggio Java e del linguaggio C++.
. Elementi avanzati di Java e approfondimenti di C++
. 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++
Joshua Bloch
"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
Esame scritto a fine corso.
Orale opzionale a discrezione del docente per aggiustare il voto.
Progetto opzionale.
Corso frontale con schermo del computer sul megaschermo.
Tutto il codice prodotto a lezione viene regolarmente conservato su un repository Github ed è consultabile.
Italiano
scritto
Programma definitivo.
Data ultima modifica programma: 21/03/2022