METODOLOGIE DI PROGRAMMAZIONE
cod. 16433

Anno accademico 2011/12
3° anno di corso - Primo semestre
Docente
Settore scientifico disciplinare
Informatica (INF/01)
Field
Attività formative affini o integrative
Tipologia attività formativa
Affine/Integrativa
48 ore
di attività frontali
6 crediti
sede: PARMA
insegnamento
in - - -

Obiettivi formativi

La programmazione orientata agli oggetti si fonda su alcuni principi (incapsulamento, ereditarietà, polimorfismo, ecc.) che l'esperienza ha mostrato essere fondamentali per lo sviluppo di software chiaro, conciso, riutilizzabile e di facile manutenzione. I linguaggi di programmazione più diffusi rendono disponibili alcuni strumenti e tecniche che portano allo sviluppo di codice aderente ai principi suddetti. Il corso si propone di presentare le caratteristiche avanzate del linguaggio di programmazione C++, mostrando come un loro utilizzo corretto e consapevole porti al raggiungimento degli obiettivi preposti.

Prerequisiti

Si assume la conoscenza del frammento imperativo del linguaggio C++.

Contenuti dell'insegnamento

Richiami sul linguaggio C++: tipi di dato; espressioni; istruzioni; funzioni; campo d'azione e ciclo di vita; funzioni sovraccaricate; classi.
Cenni sulla programmazione per contratto: pre-condizioni, post-condizioni ed invarianti di classe.
Inizializzazione, assegnamento e distruzione.
Eccezioni e gestione delle risorse; tecniche per la gestione dinamica della memoria.
Ereditarietà semplice: differenze tra contenimento, ereditarietà privata ed ereditarietà pubblica.
Polimorfismo dinamico: funzioni virtuali; il principio di sostituzione di Liskov.
Progetto di interfacce software: tipi concreti, tipi astratti, classi di interfaccia e classi implementative; ereditarietà multipla e virtuale.
Polimorfismo statico: template di funzione e template di classe.
La libreria standard STL: contenitori, iteratori ed algoritmi generici; oggetti funzione.
Ambiente di sviluppo: il compilatore g++; il debugger gdb; automazione del processo di compilazione: make; controllo delle versioni: cvs e git.
Documentazione di interfacce software: doxygen.

Programma esteso

- - -

Bibliografia

B. Stroustrup.
C++: Linguaggio, libreria standard, principi di programmazione,
terza edizione, Addison-Wesley, 2000.

S. Lippman, J. Lajoie.
C++: Corso di programmazione,
terza edizione, Addison-Wesley, 2000.

B. Eckel.
Thinking in C++, Volumes 1 and 2,
seconda edizione, 2003.

Metodi didattici

Lezioni frontali ed esercitazioni.

Modalità verifica apprendimento

Esame scritto ed orale.

Altre informazioni

- - -