Tecniche per la progettazione del software secondo il paradigma orientato agli oggetti: estendibilità e riusabilità. Classi, Interfacce, Oggetti, nascondimento dell’informazione, Ereditarietà semplice e multipla, composizione di oggetti. UML: uso dei diagrammi delle classi. Progettazione per Contratto. Programmazione avanzata in Java: tipi e polimorfismo, invocazione di metodi e delega delle operazioni, RTTI, classi Generiche. Design Patterns.
-Thinking in Java. B. Eckel (Apogeo).
-Progettazione del software e Design Pattern in Java.
C. Horstmann (Apogeo).
Obiettivi Formativi
Conoscenze:
- concetti basilari della metodologia orientata agli oggetti nella progettazione del software;
- caratteristiche principali dei linguaggi orientati agli oggetti, quali Java, e tecniche di programmazione;
- schemi di soluzioni avanzate a problemi ricorrenti nel design del software.
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.
Prerequisiti
Corsi vincolanti: Programmazione
Corsi raccomandati: Algoritmi e strutture dati
Metodi Didattici
Numero di ore relative alle attività in aula: 72
Numero di ore per studio personale e altre attività formative di tipo individuale: 150
Numero di ore per prove in itinere: 8
Modalità di verifica apprendimento
Esame scritto e orale
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.
1. Classe, Interfaccia e implementazione nascosta.
2. UML (Unified Modeling Language): il “diagramma di classi” per l'analisi, la progettazione
e la documentazione.
3. Ereditarietà. Composizione di oggetti e delega di messaggi. Le classi astratte.
4. Classi come Tipi. Polimorfismo per sottotipo e polimorfismo parametrico.
5. Programmazione orientata agli oggetti in Java. Copia di oggetti e serializzazione.
Gestione di errori mediante Eccezioni. Generics. RTTI e Riflessione. Testing dei programmi.
6. Programmazione per contratto: Invarianti, Pre/Post condizioni, Sottocontratti.