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++.<br />
Contenuti dell'insegnamento
Richiami sul linguaggio C++: tipi di dato; espressioni; istruzioni; funzioni; campo d'azione e ciclo di vita; funzioni sovraccaricate; classi.<br />
Cenni sulla programmazione per contratto: pre-condizioni, post-condizioni ed invarianti di classe.<br />
Inizializzazione, assegnamento e distruzione.<br />
Eccezioni e gestione delle risorse; tecniche per la gestione dinamica della memoria.<br />
Ereditarietà semplice: differenze tra contenimento, ereditarietà privata ed ereditarietà pubblica.<br />
Polimorfismo dinamico: funzioni virtuali; il principio di sostituzione di Liskov.<br />
Progetto di interfacce software: tipi concreti, tipi astratti, classi di interfaccia e classi implementative; ereditarietà multipla e virtuale.<br />
Polimorfismo statico: template di funzione e template di classe.<br />
La libreria standard STL: contenitori, iteratori ed algoritmi generici; oggetti funzione.<br />
Ambiente di sviluppo: il compilatore g++; il debugger gdb; automazione del processo di compilazione: make; controllo delle versioni: cvs.<br />
Documentazione di interfacce software: doxygen.
Programma esteso
- - -
Bibliografia
B. Stroustrup. C++: Linguaggio, libreria standard, principi di programmazione, terza edizione, Addison-Wesley, 2000.<br />
<br />
S. Lippman, J. Lajoie. C++: Corso di programmazione,<br />
terza edizione, Addison-Wesley, 2000.
Metodi didattici
<br />
Modalità verifica apprendimento
- - -
Altre informazioni
- - -