|
|
|
Metodologie di Programmazione
|
|
|
- Docente
-
Dott. Enea Zaffanella
- Collaboratore didattico
-
Prof. Roberto Bagnara
- Collaboratore didattico per il corso integrativo
-
Dott. Giulio Destri
- Aula
-
Aula C (Dipartimento di Matematica, piano terra).
- Finalità
-
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.
È previsto un corso integrativo
(12 ore di lezione) che si occuperà di presentare
lo Unified Modeling Language ed il suo utilizzo per l'analisi
e la progettazione di software.
- Programma del corso
-
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.
- Documentazione di interfacce software: doxygen.
- Testi consigliati
-
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.
- Mailing list
-
Metodologie-Programmazione
- Corso integrativo:
UML nella progettazione software
- Introduzione al linguaggio UML.
- Le problematiche dei progetti complessi e come UML può aiutare.
- I diagrammi principali e il loro uso:
- Funzionalità del sistema: Use case diagram.
- Struttura e relazioni fra i componenti: Class diagram.
- Comportamento dinamico di un sistema:
Sequence Diagram, Collaboration Diagram, Activity diagram,
StateChart Diagram.
- Cenni ai Component Diagram, Deployment Diagram, Design Patterns.
- Case Study: uso di UML per la modellazione
e la progettazione di sistemi semplici.
- Organizzazione di un progetto con UML.
- Scelta dei diagrammi da utilizzare.
- Lucidi delle lezioni:
-
UML nella progettazione software
(pdf, 1147 Kb).
|
|
|