Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
(UML)
Alessandro Margara
alessandro.margara@polimi.it
Modellazione
• Modello è una descrizione astratta del sistema
– In cui è inclusa anche una descrizione dell’ambiente in cui il sistema dovrà
operare
2
UML
• Il software non dispone ancora di tecniche
efficaci per descriverne la struttura, le
funzionalità e le prestazioni
3
Principali diagrammi
• Diagrammi di struttura
– Diagrammi delle classi, diagrammi degli oggetti, diagrammi dei
componenti, diagrammi delle strutture composte, diagrammi
dei package e diagrammi di deployment
• Diagrammi di comportamento
– Diagrammi dei casi d'uso, diagrammi delle attività e diagrammi
delle macchine a stati
• Diagrammi di interazione
– Diagrammi di sequenza, diagrammi di comunicazione,
diagrammi di temporizzazione e diagrammi di interazione
generale
4
CASI D'USO (USE CASES)
Scopo
• Sono diagrammi comportamentali che
descrivono i requisiti del sistema
6
Esempi
7
Esempi
8
CLASS DIAGRAM
Dettagli nella descrizione
• UML consente di esprimere graficamente livelli
crescenti di dettaglio nella descrizione delle entità
10
Diagramma delle classi
• Descrizione statica
• Una classe è composta da tre parti
– Nome
– Attributi (lo stato)
– Metodi (il comportamento)
• Attributo: visibilità nome: tipo [molteplicità] = default {stringa di proprietà}
• Metodo: visibilità nome (lista parametri): tipo di ritorno {stringa di proprietà}
• Visibilità: + public, - private, # protected, ~ friendly
• Parametro: direzione nome: tipo = default
Persona
Persona
tutte le persone - nome: String
- nome: String
devono essere nate - cognome: String
dopo l1/1/1960 - cognome: String
- dataNascita: Date
- dataNascita: Date
- numPersone: int
+ siSposa(p: Persona): boolean
+ siSposa(p: Persona): boolean
+ compieAnni(d: Date): boolean
+ compieAnni(d: Date): boolean
11
Traduzione
12
Associazioni
Persona 1..* 1 Casa
vive
13
Esempio
dirige
subalterni 0..*
Persona Azienda
superiore - nome: String
- nome: String
0..1 - cognome: String 0..* lavora 1 - fatturato: int
- anni: int - numDipendenti: int
dipendenti azienda
+ assume(p: Persona): int
...
14
Esempio
Persona 1..* 1 Casa
vive
- persone - casa
15
Esempio
class Persona {
private String nome;
Persona private String cognome;
private Date dataNascita;
- nome: String
- cognome: String
private static int numPersone;
- dataNascita: Date + marito public Persona marito;
- numPersone: int 0..1 public Persona moglie;
+ siSposa(p: Persona): boolean
+ compieAnni(d: Date): boolean
public boolean siSposa(Persona p) {
…
+ moglie
}
0..1
matrimonio public boolean compieAnni(Date d) {
…
}
}
16
Esempio
Persona Prestito
- nome: String - ammontare: int
- cognome: String 1 0..* - rata: int
- codFiscale: String - dataInizio: Date
intestatario prestiti
- stipendio: int - dataFine: Date
+ chiedePrestito(somma: int): void
...
0..* clienti 0..* prestiti
1 banca
0..* Banca
banche
17
Esempio
class Persona { class Prestito {
private String nome; private int ammontare;
private String cognome; private int rata;
private String codFiscale; private Date dataInizio;
private int stipendio; private Date dataFine;
} private Persona intestatario;
private Banca banca;
class Banca { }
private Persona[] clienti;
}
18
Classi associazione
Studente Corso
1..* 1..*
DatiCorso
- voto: int
- frequenza: int
+ votoMassimo(): int
19
Aggregazioni
• Le aggregazioni sono una forma particolare di
associazione
• Una parte è in relazione con un oggetto (part-of)
1 Telaio
Automobile 1 Motore
1
4 Ruota
20
Composizioni
• Una relazione di composizione è un’aggregazione forte
– Le parti componenti non esistono senza il contenitore
• Creazione e distruzione avvengono nel contenitore
• Le parti componenti non sono parti di altri oggetti
21
Associazioni riflessive
• Un’associazione è riflessiva se coinvolge oggetti
della stessa classe
Corso
Precedenze
22
Ereditarietà (generalizzazione)
Veicolo Veicolo
Terrestre APedali
• Può portare a conflitti fra attributi o servizi con lo stesso nome ereditati da classi
diverse
23
Classi astratte
Le classi astratte non possono avere esemplari
Disegno Figura
1..* 1..*
Geometrica
24
Interfacce
Le interfacce, come le classi astratte, non possono avere esemplari
25
Interfacce
Relazione di utilizzo Implementa
FiguraGeometrica Vector
- vertici: List
+ add(o: Object): boolean
List + get(index: int): Object
26
Interfacce ed ereditarietà
Implementa
27
Diagramma degli oggetti
28
Package
• Meccanismo di strutturazione, definisce uno spazio di nomi
• Decomposizione gerarchica e dipendenze tra package
– Vedremo un concetto di package simile in Java
29
Package
30
DIAGRAMMI DI INTERAZIONE
Diagrammi di interazione
• Descrivono il comportamento dinamico di un gruppo di
oggetti che “interagiscono” per risolvere un problema
• UML propone
– Diagrammi di sequenza
– Diagrammi di comunicazione
32
Esempio
Un attore che
interagisce con Potrebbe diventare Potrebbe diventare
il sistema una classe una classe
Scegli informatica
Le risposte restano
implicite
33
Raffinamento
Pippo
seleziona(informatica)
disponibile()
aggiungi(pippo)
conferma(informatica)
34
Qualcosa in più
Periodo di “attività”
dell’oggetto relativo
Lifeline
(linea tratteggiata)
rettangolo: attività
Risposta esplicita
L’oggetto cessa
di esistere
35
Tipi di messaggi
36
Esempio
37
Frames di interazione
prenota
Operazioni disponibilità
opzionali
Prenotazione
associa
38
Alternative
39
Diagrammi di comunicazione
40
Esempio
41
Macchine a stati finiti
• Rappresentano il comportamento dei singoli
oggetti di una classe in termini di
– Eventi a cui gli oggetti (la classe) sono sensibili
– Azioni prodotte
– Transizioni di stato
• Identificazione degli stati interni degli oggetti
42
Primo esempio
• Il diagramma degli stati di un'aula
43
Esempio
44
Eventi e condizioni
• Funzioni booleane sui valori degli oggetti
verde [incrocio.stato=libero]
Pronto InCorsa
45
Aggiungiamo elementi
Attesa Warning
scatto [non luce]
entry/visualizza Da eseguire
quando si entra
scatto [luce]
nello stato
spegni
Memorizzazione
spegni
do/memorizza
Da eseguire
fintanto che si
rimane nello stato
46
Stato completo
Nome
attributo1: tipo1 = val.iniziale
attributo2: tipo2 = val.iniziale
do / attività0
entry / attività1 event3 [condizione1] / attività5
exit / attività2
event1 / attività3
event2 / attività4
event4 [condizione2] / attività6
47
Decomposizione OR
• Un macro stato equivale ad una scomposizione OR degli stati
– Solo uno degli stati costituenti può essere attivo in un certo istante
• Ad essere precisi, uno XOR
Warning Attesa
spegni
entry/visualizza scatto [non luce]
Memorizzazione
48
Decomposizione AND
• Duale rispetto al caso OR
– Uno stato attivo per ciascun macrostato
– Modella operazioni ed attività concorrenti
49
History
• History può essere associata a stati non foglia
S
A A1 B
A2 H
50
Il diagramma della carriera di studente
51
Diagrammi dei componenti
• Utili per “decomporre” il sistema in esame
Interfacce
ISelezione
IDisplay
offerte/richieste
Prodotti
ISelezione IDisplay
Prodotti
SceltaProdotto IContaSoldi
<<delegate>> <<delegate>>
Distributore 1
Caffè Controllo Prodotto
Pagamento
IGettoniera IContaSoldi
<<delegate>>
SelezioneBevanda 1
Soldi
<<delegate>>
ILatte
<<delegate>> 1
Latte
IGettoniera
ILatte ICaffè
ICaffè
Funzioni <<delegate>>
Caffè
1
offerte dal
componente DistributoreCaffè 52