E. Vicario, "Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++", Editrice Esculapio
D.S. Malik, "Programmazione in C++", Apogeo
L.J. Aguilar, "Fondamenti di programmazione in C++", McGraw-Hill
B. Eckel, "Thinking in C++", disponibile gratuitamente (in versione HTML) su: http://www.mindview.net/Books/DownloadSites
Gamma, Helm, Johnson, Vlissides, "Design patterns", Pearson Education
Materiale (lucidi e link aggiuntivi) presente sul sito web del corso (http://www.micc.unifi.it/bertini/).
Obiettivi Formativi
Acquisire le conoscenze di base per la programmazione object oriented e uso di design pattern di base.
Gli studenti saranno in grado di programmare secondo le tecniche object oriented in C++, avranno una conoscenza di base di meccanismi di analisi e programmazione object oriented. Verranno acquisite conoscenze relativi a pattern di progettazione del software.
Prerequisiti
La conoscenza della programmazione C è requisito fondamentale.
Metodi Didattici
Il corso prevede attività di laboratorio ed esercitazioni per il 40%, precedute da lezioni sugli argomenti che saranno oggetto della esercitazione.
Sarà usato un sistema web per la valutazione automatica di esercizi di programmazione, che verranno assegnati durante il corso.
Altre Informazioni
Tutto il materiale del corso è mantenuto sul sito di e-learning dell'Università di Firenze.
Il calendario degli esami è mantenuto aggiornato sul sito web: http://www.micc.unifi.it/bertini e sul sistema di Ateneo.
Modalità di verifica apprendimento
Ci sono due modalità per la verifica dell'apprendimento medianti le quali si verifica:
- la conoscenza dei costrutti base del linguaggio C++
- la conoscenza dei concetti di base della programmazione object oriented
- la capacità di disegnare classi e metodi
- la capacità di applicare design pattern di base alla progettazione di classi
1) Esame scritto ed orale:
L'esame scritto consiste di una serie di 3-4 domande su gli aspetti teorici di tutti gli argomenti del corso e di 2-4 domande relative a brevi problemi di programmazione. L'esame orale consiste di domande relative agli argomenti del compito scritto e su argomenti correlati.
E' prevista una prova intermedia per la valutazione della conoscenza del C++, che può sostituire in caso di valutazione positiva le domande di teoria del compito.
2) Elaborato di programmazione:
Il contenuto dell'elaborato di programmazione deve essere concordato col docente. Ogni 10-14 giorni lo studente si incontra con il docente per mostrare lo stato di avanzamento, discutere di eventuali problemi ed avere indicazioni e commenti relativi al lavoro svolto.
Programma del corso
Il linguaggio C++:
-Classi e oggetti
-Data Abstraction
-I metodi
-Operator Overloading
-Class Inheritance e Multiple Inheritance
-Funzioni virtuali e classi di base astratte
-Polimorfismo
-Programmazione generica e template
-La gestione delle eccezioni
Meccanismi di analisi e programmazione object oriented
-incapsulamento
-delega
-inversione di responsabilita'
-sostituibilità
-ereditarietà di implementazione e di interfaccia
-problema della classe di base fragile
-allocazione delle risorse
-responsabilità, coesione e accoppiamento
Introduzione ai design pattern e idiomi
-RAII
Design pattern fondamentali:
-Observer
-Factory e Singleton
-Adapter