SSD: ING-INF/05
CFU: 9
Insegnamenti propedeutici (se previsti dall'Ordinamento del CdS)
Fondamenti di Informatica
Eventuali prerequisiti
Nessuno
Obiettivi formativi
L'insegnamento si propone di fornire agli studenti le competenze metodologiche, teoriche e pratiche di programmazione procedurale e di programmazione orientata agli oggetti necessarie al corretto sviluppo di progetti software di piccole e medie dimensioni.
Risultati di apprendimento attesi
Conoscenza e capacità di comprensione
Lo studente deve dimostrare di conoscere e saper elaborare i concetti alla base della programmazione modulare e della programmazione orientata agli oggetti. Il percorso formativo intende fornire le conoscenze e gli strumenti che consentiranno agli studenti di sviluppare capacità autonome e sviluppo di semplici applicazioni secondo i paradigmi di programmazione procedurale orientata agli oggetti.
Capacità di applicare conoscenza e comprensione
Lo studente deve dimostrare di saper applicare le competenze acquisite progettando e implementando semplici applicazioni software, utilizzando il linguaggio di programmazione di riferimento (C++) e il linguaggio UML. In particolare deve saper riconoscere e realizzare le relazioni tra classi ed oggetti nel dominio e nel contesto proposto e saper implementare le strutture dati di base (lista, pila, coda).
Programma - Syllabus
- Aspetti avanzati di programmazione procedurale: Ricorsione; Allocazione dinamica della memoria; Gestione delle eccezioni; Sovraccarico delle funzioni; Funzioni inline.
- Programmazione modulare: astrazione sui dati e sul controllo, il concetto di modulo, relazioni tra moduli, accoppiamento, information hiding, tecniche e strumenti per la modularizzazione, compilazione separata, l’utility make.
- Strutture dati, Tipi di dato astratto: Liste, Pile, Code, Algoritmi di ricerca e ordinamento; ADT: Tipi di dato astratto.
- Programmazione orientata agli oggetti: Il paradigma OO; Classi e Oggetti; Ereditarietà; Polimorfismo.
- La programmazione orientata agli oggetti e la programmazione generica in C++: Classi, oggetti, costruttori e distruttori; Operatori e sovraccarico degli operatori; Conversioni di Tipo; Ereditarietà ed ereditarietà multipla; La gerarchia per le operazioni di ’I/O e uso delle librerie standard; Polimorfismo, classi Astratte; altri meccanismi di incapsulamento (namespace).
- Programmazione generica: Template, funzioni e classi modello, presentazione della Standard Template Library
- Progettazione e linguaggio UML: Progettazione del software (cenni); Fasi della Progettazione Orientata agli Oggetti; Il linguaggio UML nella progettazione O.O.; da UML a C++.
Materiale didattici
Si veda sito web del docente della materia
Modalità di svolgimento dell'insegnamento
Lezioni frontali (50%), esercitazioni (25%) e attività di laboratorio (25%).
Verifica di apprendimento e criteri di valutazione
Modalità di esame
L'esame si articola in prova scritta e orale. I quesiti sono esercizi di programmazione