Tecniche per il design del software secondo il paradigma orientato agli oggetti: estendibilità e riusabilità. Nascondimento dell’informazione, Classi, Interfacce, Oggetti, Ereditarietà, composizione di oggetti. UML: uso dei diagrammi delle classi e di interazione. Test automatici. Principi di Design e Design patterns.
Materiale didattico (slide e tutorial) disponibile sul sito Moodle del corso https://e-l.unifi.it/course/view.php?id=11479
Eventuali libri per approfondire certi argomenti saranno consigliati durante il corso.
Obiettivi Formativi
Conoscenze acquisite:
- Meccanismi avanzati per la progettazione Object-Oriented Programming;
- Principi di design per la progammazione pulita e schemi di soluzioni avanzate a problemi ricorrenti nel design del software.
- Tecniche di base per il test automatico
Competenze acquisite (al termine del corso)
gli studenti dovranno dimostrare di saper usare la metodologia orientata agli oggetti nella progettazione e implementazione di componenti software, che siano facilmente estendibili e riusabili.
Capacità acquisite (al termine del corso):
capacità di sviluppare software flessibile, utilizzando tecniche avanzate orientate agli oggetti e testarlo.
Prerequisiti
Corsi vincolanti: Programmazione
Corsi raccomandati: Algoritmi e strutture dati
Metodi Didattici
lezioni in aula e alcune esercitazioni
Altre Informazioni
Eventuali altre informazioni (incluse le modalità di ricevimento) saranno fornite durante il corso tramite il sito Moodle del corso
Modalità di verifica apprendimento
L'esame si compone di un progetto individuale da svolgere a casa (in cui lo studente deve dimostrare di aver compreso i principi di design e programmazione OO mostrati durante il corso, applicandoli alla realizzazione di un semplice sistema software, inclusi i test automatici) e di una prova orale con interrogazione su tutto il programma e sul progetto sviluppato.
Per accedere alla prova orale è necessario aver presentato un progetto che è stato valutato sufficiente. Il progetto deve essere svolto in Java. Il software sviluppato nel progetto è a scelta dello studente.
Nella prova orale verrà valutata la conoscenza degli argomenti presentati, l'acquisizione del linguaggio tecnico adeguato al contesto.
Il voto finale consisterà della media dei voti del progetto e della prova orale (se entrambi sufficienti).
Programma del corso
La metodologia orientata agli oggetti per la costruzione del software: tecniche di progettazione e costrutti linguistici per ottenere codice estendibile, riusabile e compatibile.
Classe, Interfaccia e implementazione nascosta.
UML (Unified Modeling Language): il “diagramma di classi” per l'analisi, la progettazione
e la documentazione.
Ereditarietà. Composizione di oggetti e delega di messaggi. Le classi astratte.
Classi come Tipi. Polimorfismo per sottotipo e polimorfismo parametrico.