Programma

0. Ciclo di vita e qualità del software

Il contesto organizzativo. Il ciclo di sviluppo dei programmi: raccolta dei requisiti, analisi, progettazione & realizzazione, verifica & manutenzione. Le qualità del software: qualità esterne & interne. La modularizzazione. Criteri per la modularizzazione. Object-orientation.

1. Introduzione a Java

Allocazione di variabili e di oggetti, passaggio di parametri, costruttori. Package, derivazione tra classi, ereditarietà, classi astratte, interfacce.

Uso di librerie predefinite, collection framework, uso di classi del collection framework, iteratori. IO. Interfaccie grafiche (Java Swing). Socket. Concorrenza in Java. Debugging e JUnit. Saranno inoltre trattati per completezza Lambda expressions, thread pools ed asynchronous execution.

2. La fase di analisi

Introduzione alla fase di analisi. Il linguaggio UML per l'analisi. Diagrammi strutturali e diagrammi comportamentali e d'interazione: Diagrammi delle Classi, Diagrammi degli oggetti, Diagrammi Stati e Transizioni, Diagrammi delle Attività. Specifica. La metodologia di analisi. Verifiche di qualità.

3. La fase di progetto

Obiettivi e risultati attesi della fase di progetto. Specifica degli algoritmi. Responsabilità sulle associazioni. Uso di strutture di dati. Schemi realizzativi per oggetti e valori. Gestione degli eventi. Aspetti legati alla concorrenza. Pattern realizzativi. API delle classi Java progettate.

4. La fase di realizzazione

Realizzazione in Java dei diagrammi strutturali, comportamentali e d'interazione. La realizzazione di classi. La realizzazione di associazioni. Uso dell'ereditarietà. Programmazione ad eventi e concorrente per realizzare comportamenti dinamici.