Progettazione del Software - A.A. 2015/2016
Diario delle lezioni
Dettaglio degli argomenti svolti durante le lezioni.
-
Lezione del 29-02-2016
Informazioni generali sul corso: obiettivi e motivazioni. Gli attori nella progettazione del SW. Classificazione
delle applicazioni SW. Ciclo di vita del SW. Qualità interne ed esterne. Principi guida nello sviluppo
del SW.
- Slide del corso
.
-
Lezione del 01-03-2016
La modularizzazione. I principi della modularizzzazione. Esempi di cattiva e buona modularizzazione. Principi di
base dell'orientazione agli oggetti. Classi, oggetti ed ereditarietà.
- Slide del corso
.
-
Lezione del 07-03-2016
Introduzione all'analisi. Introduzione ad UML. Oggetti. Classi. Attributi. Associazioni. Link. Ruoli. Attributi
di associazione.
- Slide del corso
.
-
Lezione del 08-03-2016
Esercitzione. La molteplicità delle associazioni ed attributi. Le associazioni n-arie. I commenti. Le
associazioni ordinate.
- Slide del corso
.
-
Lezione del 14-03-2016
Generalizzazione ed ereditarietà in UML. Ereditarietà multipla. Il problema delle classi
disgiunte. La specializzazione di attributi ed associazioni. Esercitazione.
- Slide del corso
.
-
Lezione del 15-03-2016
Esercitazione. Operazioni. Specializzazione di operazioni. Tipo di dato complessi. Semantica dei diagrammi delle
classi: riassunto.
- Slide del corso
.
-
Lezione del 21-03-2016
Aspetti metodologici nella costruzione del diagramma delle classi. Controllo di qualità sul diagramma
delle classi. Scelta tra attributi e classi. Scelta tra classi e associazioni. Verifiche sulle generalizzazioni.
Verifiche sulle specializzazioni. Esercitazione.
- Slide del corso
.
-
Lezione del 22-03-2016
Il diagramma degli use case. Cosa è uno Use Case. Gli Attori. Le associazioni. I Documenti di Specifica.
La specifica di una Classe. La specifica di un Use Case. La specifica di una operazione. Precondizioni e
Postcondizioni. Esercitazione.
- Slide del corso
.
-
Lezione del 04-04-2016
Il diagramma degli stati e transizioni UML. Cosa sono gli Stati e le transizioni e come si rappresentano. Le
attività. Gli stati composti. Aspetti metodologici nella costruzione del diagramma degli stati e delle
transizioni. Controllo di qualità del diagramma degli stati e delle transizioni. Esercitazione.
- Slide del corso
.
-
Lezione del 05-04-2016
Il diagramma degli stati e transizioni UML - Esercitazione. Introduzione al linguaggio Java. La macchina
virtuale di Java ed la compilazione di un programma Java. Tipi di dato in Java. Riferimenti ed oggetti.
Allocazione della memoria. Campi dati static.
- Slide del corso
.
-
Lezione del 11-04-2016
Funzioni in Java. Comunicazione fra unità di programma. Side-effect. Qualificatori dei campi dato.
Overloading di funzioni. I construttori. Esercitazione.
- Slide del corso
.
-
Lezione del 12-04-2016
I package ed il loro uso. Livelli di accesso di una classe. Derivazione fra classi. Principi fondamentali della
derivazione. Gerarchie di classi in Java. Casting.
- Slide del corso
.
-
Lezione del 18-04-2016
Livelli di accesso dei campi di una classe. Regole di visibilità tra campi. Costruttori di classi
derivate. Overloading e Overriding. Late binding. Classi e metodi final.
- Slide del corso
.
-
Lezione del 19-04-2016
Sovrascrittura dei campi dati. Le classi astratte. Le interfacce. Esercitazione.
- Slide del corso
.
-
Lezione del 02-05-2016
La classe Object. Overriding della funzione toString(). La classe Java Class. La funzione isInstance().
L'operatore instanceof. La funzione getclass(). Uguaglianza superficiale e profonda tra oggetti. Overriding
della funzione equals(). Esercitazione.
- Slide del corso
.
-
Lezione del 03-05-2016
Uguaglianza profonda in classi derivate. Overriding della funzione hashCode(). Copia superficiale e profonda di
oggetti. Overriding della funzione clone(). Copia profonda in classi derivate. Esercitazione.
- Slide del corso
.
-
Lezione del 09-05-2016
Le eccezioni. Propagazione delle eccezioni. Le istruzioni try-catch-finally. La clausola throws. Eccezioni
checked vs unchecked. Gerarchia delle eccezioni. Definire una propria classe di eccezioni. Come lanciare una
eccezione. Introduzione al Java Collections Framework. Interfacce del Collections Framework. I Generics.
Interfaccia Collection. Interfaccia Set. Gli iteratori ed il loro uso. Interfaccia List. Il ListIterator.
Implementazioni di Collection.
- Slide del corso
.
-
Lezione del 10-05-2016
Input alla fase di progetto. Output della fase di progetto. Caso di studio. Progetto: algoritmi. Progetto:
responsabilità sulle associazioni. Molteplicità e responsabilità. Tabella delle
responsabilità. Responsabilità dei ruoli.
- Slide del corso
.
-
Lezione del 16-05-2016
Scelta delle strutture dati. Corrispondenza tra tipi UML e JAVA. Tabella di corrispondenza tipi UML e Java.
Realizzazione di tipi UML. Gestione delle precondizioni: verifica lato server e verifica lato client. Gestione
delle proprietà di classi UML ed assunzioni di default. Tabella di gestione delle proprietà di
classi UML.
- Slide del corso
.
-
Lezione del 17-05-2016
La fase di realizzazione: input ed output. Traduzione in Java del diagramma degli use case. Traduzione in Java
del diagramma delle classi. Realizzazione di classi UML con soli attributi: metodologia per i campi dati e per i
campi funzione. Il problema dei valori non ammessi: verifica lato server e verifica lato client. Gestire la
molteplicià degli attributi. Realizzare classi con attributi e operazioni. Esercitazione.
- Slide del corso
.
-
Lezione del 23-05-2016
Realizzazione di associazioni. Associazione con molteplicità 0..1 a responsabilità singola e senza
attributi. Associazioni che insistono più volte sulla stessa classe. Associazione con molteplicità
0..* a responsabilità singola e senza attributi.
- Slide del corso
.
-
Lezione del 24-05-2016
La realizzazione di attributi di associazione. La realizzazione naive e non. Associazioni 0..1 con attributi e
associazioni 0..* con attributi. Esercitazione.
- Slide del corso
.
-
Lezione del 30-05-2016
Responsabilità doppia. Come gestire vincoli di cardinalità massima e minima. Le associazioni
n-arie.
- Slide del corso
.
-
Lezione del 31-05-2016
Realizzazione di generalizzazioni. Information hiding e generalizzazione. Generalizzazione e strutturazione in
package. La ridefinizione. Generalizzazioni disgiunte e complete. Organizzazione in packages. Simulazione di
esame.
- Slide del corso
.