Politecnico
di Milano
UML (Unified Modeling Language)
un linguaggio di modellazione orientato agli oggetti
Luigi Lavazza
CEFRIEL
[email protected]
© 2005 - CEFRIEL
Sommario




Introduzione ai linguaggi di modellazione
Fondamenti del paradigma object-oriented
UML: il linguaggio
Esempi di modellazione con UML
Unified Modeling Language
2
© 2005 - CEFRIEL
I modelli




Ragionare sui sistemi complessi è difficile.
Costruire sistemi complessi è difficile.
Come fare a valutare aspetti notevoli dei sistemi, o a valutare l’efficacia di soluzioni
costruttive senza affrontare l’intera complessità di un sistema reale?
Usando dei modelli.
Unified Modeling Language
3
© 2005 - CEFRIEL
Modellare: un’idea nuova?


Non proprio
si pensi al modello di cupola del Brunelleschi
Unified Modeling Language
4
© 2005 - CEFRIEL
Caratteristiche del modello



Astrazione
Modularità
Viste molteplici
Unified Modeling Language
5
© 2005 - CEFRIEL
Astrazione


Un sistema reale è caratterizzato da un numero impressionante di elementi.
Spesso, solo una minima parte di tale elementi risultano “interessanti”
– NB: cosa sia interessante dipende dal contesto


Ne consegue che il modello può trascurare i dettagli irrilevanti.
Astrazione = descrizione di un sistema (o di parte di esso) che ne riporta solo le
caratteristiche rilevanti.
Unified Modeling Language
6
© 2005 - CEFRIEL
Astrazione: esempio

Caratteristiche di una persone:
–
–
–
–
–
–
–
–
–

Nome,
Indirizzo
Età
Numero di scarpe
Gruppo sanguigno
Codice fiscale
Fede calcistica
Reddito
…
La stragrande maggioranza dei contesti che possiamo immaginare richiedono la
conoscenza di un sottoinsieme di queste caratteristiche
Unified Modeling Language
7
© 2005 - CEFRIEL
Modularità


Divide et impera
Un sistema è modulare se è diviso in parti che hanno una sostanziale autonomia
individuale ed una ridotta interazione con le altre parti
– i moduli sono scarsamente connessi e fortemente coesi
Unified Modeling Language
8
© 2005 - CEFRIEL
Cinque criteri di modularità

Scomponibilità modulare
– scomporre un problema in sottoproblemi di minori dimensioni e quindi più facilmente affrontabili

Componibilità modulare
– ri-aggregare moduli esistenti per risolvere problemi nuovi
– riusabilità
– ES: Lego

Comprensione modulare
– capire un modulo osservando solo quello e i "confinanti“

Continuità modulare
– un piccolo cambiamento nelle specifiche comporta cambiamenti in un solo (o pochi) moduli
– estendibilità

Protezione modulare
– errori in un modulo influenzano solo il modulo stesso (o al massimo si propagano ai confinanti)
Unified Modeling Language
9
© 2005 - CEFRIEL
Come ottenere la modularità


Unità linguistiche modulari
Poche interfacce
– ciascun modulo deve comunicare con il minor numero possibile di altri moduli
– in un sistema composto da n moduli il numero delle interfacce deve essere quanto più possibile
vicino a (n-1) e lontano da n(n-1)/2

Interfacce piccole
– ogni modulo deve scambiare il minor numero possibile di informazioni con gli altri moduli

Interfacce esplicite
– il fatto che due moduli A e B comunichino deve risultare evidente sia dal codice di A che dal codice
di B

Information hiding
– il modulo deve distinguere tra informazioni pubbliche ed informazioni private
Unified Modeling Language
10
© 2005 - CEFRIEL
Molteplici viste


Un sistema complesso presenta molteplici “aspetti” che devono essere considerati ed
adeguatamente descritti per rappresentare il sistema, ritraendone tutte le
caratteristiche.
Risulta quindi difficile comprimere in un unico modello informazioni di natura anche
molto diversa: si consideri ad esempio il fatto che una rappresentazione adeguata del
sistema deve descrivere
–
–
–
–
–

la struttura statica
il comportamento dinamico
l’organizzazione logica
la distribuzione fisica
ecc.
Soluzione: non un modello, ma più modelli, ciscuno specializzato per fornire un certo
tipo di informazioni
Unified Modeling Language
11
© 2005 - CEFRIEL
Molteplici viste


Un’idea nuova?
Non proprio …
Unified Modeling Language
12
© 2005 - CEFRIEL
Linguaggi di descrizione

Le “descrizioni” vengono prodotte in svariate fasi del processo:
– Descrizione = insieme di affermazioni riguardo una qualche realtà di interesse
– Problem definition = fra l’altro, descrizione del problema da risolvere
– Program design = fra l’altro, descrizione del comportamento del sistema da realizzare

Linguaggi di descrizione = linguaggi adatti a scrivere “descrizioni”
Unified Modeling Language
13
© 2005 - CEFRIEL

Completezza
Caratteristiche dei linguaggi di
descrizione
– Il linguaggio deve mettere a disposizione strumenti per descrivere tutti gli aspetti di interesse.

Accuratezza
– Deve essere possibile costruire una descrizione precisa.

Consistenza
– Il linguaggio deve aiutare a non esprimere concetti contraddittori in diverse rappresentazione della
stessa descrizione.

Comprensibilità
– La descrizione deve essere facilmente comprensibile da parte di chi la deve interpretare.

Formalità
– Rigore con cui sono definite la sintassi e la semantica del linguaggio.

Stile
– Quale aspetto del sistema è più facile descrivere utilizzando il linguaggio (comportamento o
proprietà)
Unified Modeling Language
14
© 2005 - CEFRIEL
Grado di formalità

Informale: tipicamente linguaggio corrente (italiano, inglese)
– Spesso usato perché è usabile con poco sforzo
– Può dar luogo ad ambiguità

Semi-formale (ha sintassi ma poca semantica)
– Facilmente comprensibile, ma possibile fonte di ambiguità

Formale (ha sia sintassi sia semantica rigorosa)
– Ha fondamenti logico-matematici: elimina ambiguità
– Consente di ragionare su e verificare proprietà, anche con strumenti (semi)automatici che
supportano quel linguaggio
– N.B. Non tutte le proprietà sono formalmente verificabili
Unified Modeling Language
15
© 2005 - CEFRIEL
Stile

Stile descrittivo: definisce le proprietà desiderate
– Es. La curva soddisfa l’equazione ax2 + by2 + c = 0.

Stile operazionale: definisce il comportamento desiderato (una “macchina”)
– Es. La curva rappresenta il cammino di un punto che si muove in modo che la somma delle sue
distanze da due punti fissati P1 e P2 rimanga costante.
Unified Modeling Language
16
© 2005 - CEFRIEL
Politecnico
di Milano
Il paradigma object-oriented
© 2005 - CEFRIEL
I concetti base del paradigma
Object-Oriented





Classi
Oggetti
Generalizzazione/specializzazione
Polimorfismo
Dynamic binding
Unified Modeling Language
18
© 2005 - CEFRIEL
Classe

Una classe definisce un insieme di possibili oggetti
È la descrizione –astratta– di una tipologia di oggetti
Automobile, felino, fenomeno atmosferico, copricapo sono possibili classi.

NB: la classe è una descrizione


– Gli oggetti che descrive sono elementi del mondo reale
– La classe esiste su un piano diverso
Unified Modeling Language
19
© 2005 - CEFRIEL
Classe: dati e comportamento



La classe descrive sia le caratteristiche statiche degli oggetti che il loro comportamento
(le operazioni in cui possono essere coinvolti)
Attributi: sono i “dati” che caratterizzano la classe
Esempio:
– La classe conto corrente avrà gli attributi: numero, titolare, saldo, ecc.


Operazioni (o “metodi”): sono le operazioni che si può chiedere agli oggetti di eseguire
Esempio:
– La classe conto corrente sarà dotata delle operazioni di versamento, prelevamento, bonifico, ecc.
Unified Modeling Language
20
© 2005 - CEFRIEL
Classi: proprietà pubbliche e private

Contenuti privati
– attributi e metodi accessibili solo dall’interno della classe

Contenuti pubblici
– attributi e metodi accessibili dall’esterno (cioè da altre classi)


Servono a realizzare l’information hiding
È desiderabile che tutti gli attributi siano privati.
– Questo rende la classe accessibile solo attraverso le operazioni pubbliche.
– Conseguenza: la altre classi sanno cosa possono fare con una classe, ma non sanno come la classe
funziona internamente
– Modularità!
– Concetto nuovo? Non proprio: noi conosciamo solo l’interfaccia pubblica della banca, del
videoregistratore, dell’automobile, …
Unified Modeling Language
21
© 2005 - CEFRIEL
Oggetto

Definizione
– Istanza di una classe
– Esemplare corrispondente alla descrizione fornita dalla classe

Ogni oggetto ha associate le proprietà descritte nella classe di cui è istanza
– Tutte le istanze della stessa classe si comportano nello stesso modo
– Ma oggetti diversi che sono istanze della stessa classe avranno valori degli attributi diversi

Esempio:
–
–
–
–
La classe Persona prevede l’attributo età
Rossi e Bianchi sono istanze di persona
Sia Rossi che Bianchi hanno dunque un’età
I valori delle età di Rossi e Bianchi possono chiaramente essere diversi
Unified Modeling Language
22
© 2005 - CEFRIEL
Oggetto

Un oggetto incapsula:
– stato = valore di attributi
– comportamento = metodi


Il comportamento dipende spesso dallo stato
Esempi
– La classe Persona comprende lo stato civile: l’operazione “matrimonio” è disponibile solo se
l’oggetto è nello stato “celibe”
– La classe Motore comprende l’operazione di accensione, che è disponibile solo se gli attributi del
motore indicano che non è guasto ed il carburante è presente.
Unified Modeling Language
23
© 2005 - CEFRIEL
La metafora di interazione



Un metodo si invoca mandando un messaggio all'oggetto
In altre parole: per stimolare un certo comportamento da parte di un oggetto, gli
mandiamo un messaggio contenente l’invocazione del metodo dell’oggetto
corrispondente al comportamento che desideriamo ottenere.
Chi manda i messaggi? Un altro oggetto. Nel modello object-oriented qualunque cosa
è un oggetto.
Prelievo
Persona
Unified Modeling Language
Conto corrente
24
© 2005 - CEFRIEL
Classi: attenzione all’astrazione


Lo scopo semantico della classe e l’astrattezza della descrizione possono portare a
situazioni apparentemente bizzare, ma perfettamente logiche.
Esempio:
–
–
–
–

Scopo semantico = bene materiale, caratterizzato dalla sua descrizione e valore
Classe Bene
La mia auto e il mio box sono istanze della stessa classe
Il cavallo e la stalla del Sig. Rossi sono istanze della stessa classe
Esempio:
– Scopo semantico = gli insegnanti
– Classe Insegnante
– Il sig. Mauro Rossi e il suo fratello genello sono istanze di classi diverse (uno è insegnante, l’altro
no).
Unified Modeling Language
25
© 2005 - CEFRIEL
Classi come insiemi



Una classe può essere vista come un insieme
Le istanze della classe appartengono all’insieme associato alla classe
Esempio
– Classe Libro
– Le istanze “Pinocchio”, “Tom Sawyer”, “Il nome della rosa” appartengono all’insieme dei libri, così
come tutte le altre istanza di Libro.
Unified Modeling Language
26
© 2005 - CEFRIEL
Identità degli oggetti


Un oggetto esiste indipendentemente dal suo valore.
Esistono due relazioni di equivalenza sugli oggetti:
– identità (due oggetti sono in realtà il medesimo oggetto)
– uguaglianza (due oggetti hanno lo stesso valore)

Se l'oggetto é complesso l'uguaglianza può essere "deep" o "shallow".
Unified Modeling Language
28
© 2005 - CEFRIEL
Identità degli oggetti - condivisione


Esempio: una persona ha un nome, un età e un insieme di figli.
Carlo e Maria hanno entrambi un figlio di 15 anni di nome Luca. Sono possibili due
situazioni:
– Luca é il figlio di Carlo e Maria
– Ci sono due persone di nome Luca di 15 anni, uno figlio di Carlo e uno di Maria

Un sistema basato sull'identità rappresenta in modo naturale entrambe le situazioni:
Carlo
Maria
Luca
Unified Modeling Language
29
Carlo
Maria
Luca
Luca
© 2005 - CEFRIEL
Generalizzazione




È una relazione tra classi (cioè tra descrizioni)
Rappresenta il ben noto concetto di generalizzazione (o specializzazione se visto nel
senso inverso)
Una classe A è una generalizzazione di una sottoclasse B se la tipologia rapprersentata
da A comprende come caso particolare (specializzazione) la tipologia B.
Esempi
– La classe Studente è una specializzazione della classe Persona
– La classe Primate è una specializzazione della classe Mammifero, che a sua volta è una
specializzazione della classe Animale

La relazione di generalizzazione non è limitata alle classi, ma può essere usata anche tra altri tipi di descrizioni
Unified Modeling Language
31
© 2005 - CEFRIEL
Generalizzazione

Generalizzazione = relazione "is-a“ (“è un/una”)
– Ogni istanza di una classe è anche istanza di tutte le superclassi
– Fuffy è un felino. Dunque è anche un mammifero e un animale.

La generalizzazione forma una gerarchia
– Non è possibile (neanche indirettamente) che A sia una specializzazione di B e B una
specializzazione di A
Animale
Rettile
Mammifero
Primate
Felino
Unified Modeling Language
Uccello
32
© 2005 - CEFRIEL
Generalizzazione

Perché usiamo la generalizzazione nei modelli?
– Condivisione di proprietà
• Le sottoclassi hanno tutte le proprietà delle super-classi
• Possono essere descritte incrementalmente
– Compatibilità
• Le sottoclassi sono compatibili con le superclassi
• Ad es. se la maestra chiede di disegnare un animale, va bene sia il disegno di un felino che di
un rettile
Unified Modeling Language
33
© 2005 - CEFRIEL
Condivisione di proprietà
Eredita le proprietà di
Figura
Aggiunge le Operazioni:
Perimetro
Area
FiguraChiusa
Poligono
Rettangolo
Unified Modeling Language
Attributi:
Colore
Operazioni:
Rotazione
Disegno
Figura
Ellisse
FiguraAperta
Eredita le proprietà di
FiguraChiusa
Aggiunge gli attributi:
Fuoco1 e Fuoco2
Eredita le proprietà di
FiguraChiusa (e quindi
anche di Figura)
Aggiunge l’attributo:
NumeroLati
34
© 2005 - CEFRIEL
Quando usare la generalizzazione?



Quando esistono classi “simili” (cioè che condividono un insieme di proprietà) che –
rispetto agli scopi del modello– presentano differenze rilevanti.
NB: possono esistere tipologie di modelli molto diverse nel mondo reale, ma che
rispetto allo scopo semantico richiesto dal modello possono essere rappresentate
mediante un’unica classe (cioè mediante un’unica astrazione).
Regola: non creare una specializzazione se non ce n’è bisogno.
Unified Modeling Language
35
© 2005 - CEFRIEL
Polimorfismo

Conseguenza dell’esistenza di generalizzazione e della compatibilità delle sottoclassi
rispetto alle superclassi
Disegno
Il disegno “sa” di
essere composto da
figure, cui può
chiedere di ruotare o
disegnarsi.
Non sa nulla delle
possibili
specializzazioni,
salvo che saranno
compatibili
Composto_da
Figura
FiguraChiusa
Poligono
Attributi:
Colore
Operazioni:
Rotazione
Disegno
FiguraAperta
Ellisse
Rettangolo
Unified Modeling Language
36
© 2005 - CEFRIEL
Polimorfismo

Un riferimento polimorfico:
– ha un tipo statico
• Nell’esempio precedente, il disegno è composto di oggetti di tipo Figura
– ha un tipo dinamico: può riferirsi, nel corso dell'esecuzione del programma, a istanze di più di una
classe;
• Nell’esempio precedente, il disegno a un certo punto potrebbe comprendere solo un ellisse, più tardi
solo due rettangoli
Unified Modeling Language
37
© 2005 - CEFRIEL
Dynamic binding

Binding:
– Il collegamento tra il nome di una operazione e la sua implementazione

Dynamic binding:
– Un oggetto invia un messaggio a un altro oggetto, di cui ignora il tipo dinamico
– L’operazione eseguita dipende dal tipo effettivo dell’oggetto ricevente
Unified Modeling Language
38
© 2005 - CEFRIEL
Dynamic binding: esempio
Tipo statico
Rotazione
Disegno
Figura
Composto_da
FiguraChiusa
Poligono
Ellisse
Rettangolo
Unified Modeling Language
39
FiguraAperta
Se il disegno è composto
di ellissi la rotazione
eseguita è quella delle
ellissi, se il disegno
contiene rettangoli la
rotazione eseguita è
quella definita nella classe
Rettangolo, ecc.
© 2005 - CEFRIEL
Politecnico
di Milano
Unified Modeling Language
© 2005 - CEFRIEL
Unified Modeling Language




È un insieme di linguaggi che, utilizzati congiuntamente, consentono di
descrivere/modellare tutti (o quasi) gli aspetti rilevanti di un sistema, secondo con un
approccio object-oriented
Notazione grafica
Linguaggio semi-formale
Stile misto
– parzialmente dichiarativo, parzialmente operazionale

Standard OMG per la modellizzazione di sistemi Object-Oriented sin dal 1997
Unified Modeling Language
41
© 2005 - CEFRIEL
Situazione

Dove trovare informazioni costantemente aggiornate:
– http://www.rational.com
– http://www.omg.org
– internet newsgroup comp.object
2004
Unified Modeling Language
42
© 2005 - CEFRIEL
Indice

Diagrammi UML
– Class e Object Diagram
– Use Case Diagram
– Interaction Diagram
• Sequence Diagram
• Collaboration Diagram
–
–
–
–
–
Composite structure Diagram
Statechart Diagram
Activity Diagram
Component Diagram
Deployment Diagram
Unified Modeling Language
43
© 2005 - CEFRIEL
I class diagram

Forniscono una vista strutturale (statica) del sistema in termini di
– classi
• attributi
• operazioni
– relazioni tra classi (associazioni, generalizzazioni, ...)

Un class diagram rappresenta uno schema concettuale
– se una classe A è in relazione con una classe B, allora ogni istanza di A sarà in relazione con
un’istanza di B
Unified Modeling Language
44
© 2005 - CEFRIEL
Classi

Una classe descrive un gruppo di oggetti con caratteristiche comuni
– attributi
– comportamento

Gli oggetti (istanze) di una stessa classe differiscono tra loro per i valori degli attributi e
per le relazioni che li legano ad altri oggetti.
Unified Modeling Language
45
© 2005 - CEFRIEL
Notazione generale per le classi

Nel caso più generale la notazione è la seguente.
NomeClasse
nome-attributo-1: tipo-dato-1 = valore-di-default-1
nome-attributo-2: tipo-dato-2 = valore-di-default-2
....
nome-operazione-1 (lista-argomenti-1): tipo-reso-1
nome-operazione-2 (lista-argomenti-2): tipo-reso-2
....
Esempi
Persona
Nome: string
Età: int
CambiaLavoro
CambiaIndirizzo
Unified Modeling Language
File
Disegno
Nome: string
Dimensione: int
Creazione: data
Titolo: string
Altezza: int
Larghezza: int
Stampa
Stampa
Ruota(gradi: int)
46
© 2005 - CEFRIEL
Operazioni

Un operazione è una funzione o una trasformazione applicabile ad un’istanza di
una classe (ogni operazione ha come argomento implicito un oggetto obiettivo)
– La stessa operazione può essere definita in classi diverse
– Il comportamento dipende dalla classe a cui appartiene l'oggetto obiettivo
Classi con attributi e
operazioni
Persona
Nome: string
Età: int
File
Nome: string
Dimensione: int
Creazione: data
CambiaLavoro
CambiaIndirizzo
Unified Modeling Language
Stampa
47
Disegno
Titolo: string
Altezza: int
Larghezza: int
Stampa
Ruota(gradi: int)
© 2005 - CEFRIEL
Relazioni in UML

In un Class Diagram vengono rappresentate relazioni oltre alle classi:
–
–
–
–
Associazioni (semplici, aggregazioni, composizioni)
Relazioni di generalizzazione
Relazioni di dipendenza
Relazioni di raffinamento
Unified Modeling Language
48
© 2005 - CEFRIEL
Associazioni

Una Associazione individua una “connessione” logica tra classi
– Il significato della relazione è specificato solo attraverso l’etichetta dell’associazione
– si traduce in una connessione fra oggetti istanze delle classi coinvolte nell’associazione
Nome (opzionale)
dell'associazione
Città
CapoluogoDi
Nome: string
Regione
Nome: string
Nota: una associazione è naturalmente bidirezionale.
Unified Modeling Language
49
© 2005 - CEFRIEL
Cardinalità nelle associazioni


Indica il numero di istanze di una classe che possono essere associate ad una singola
istanza dell’altra classe
Può non essere specificata ad uno degli estremi (“association-end”) o a entrambi
– E in questo caso non significa cardinalità pari a 1!
Unified Modeling Language
50
© 2005 - CEFRIEL
Cardinalità delle associazioni
P1
P2
Mondo reale
Px
P6
P3
P5
P4
Indicazione (opzionale) di molteplicità
Poligono
Unified Modeling Language
0..* Derfinito_da
3..*
Punto
51
© 2005 - CEFRIEL
Notazione per la cardinalità
Persona
Possiede
Nome: string


0..*
Auto
Modello: string
Nota: Il class diagram indica che una persona può possedere un numero qualsiasi di auto
Quanti sono i proprietari di una singola auto?
– Il diagramma non fornisce questa informazione, dato che la cardinalità della partecipazione di Persona
all’associazione risulta non specificata!
– Inoltre, dato che l’associazione è navigabile in una sola direzione, data un’auto non è mai possibile risalire ai
suoi (o al suo) proprietario
Unified Modeling Language
52
© 2005 - CEFRIEL
Ruoli nelle associazioni

Una classe può partecipare ad un’associazione con un ruolo specifico, che può essere
indicato
1..*
Persona
Lavora per
Impiegato
0..1
DatoreDiLavoro
Azienda
Il ruolo (opzionale)
Unified Modeling Language
53
© 2005 - CEFRIEL
Attributi delle associazioni
(Association Class)

In molti casi alcune proprietà sono proprie dell'associazione piuttosto che delle classi
coinvolte.
1..*
1..*
Studente
Corso
Frequenza
anno_accademico
profitto
Questa è la notazione per indicare
che una associazione possiede
alcuni attributi
Unified Modeling Language
Non si tratta di attributi dello studente
perché cambiano da corso a corso.
Nè sono attributi del corso (ad es. ogni
corso è frequentato da studenti diversi in
anni diversi)
54
© 2005 - CEFRIEL
Associazioni esclusive

Talvolta un’associazione può esistere verso una classe o verso un’altra (non verso
entrambe)
Persona
Partita IVA
{xor}
Azienda
Unified Modeling Language
55
© 2005 - CEFRIEL
Diagrammi delle Istanze
(Object Diagram)


Descrivono singole istanze di classi (oggetti) e associazioni (links) rappresentate in un
particolare class diagram
Adatti a descrivere esempi o situazioni specifiche (punti di vista o “fotografie” delle
istanze esistenti in un certo istante di tempo)
Unified Modeling Language
56
© 2005 - CEFRIEL
Oggetti: Notazione grafica

Scopo delle istanze è solitamente di fornire degli esempi di oggetti, oppure evidenziare
oggetti di particolare rilevanza.
Classe
Order
Istanze
: Order
MyOrder: Order
Unified Modeling Language
57
MyOrder: Order
number=0
amount=10000
© 2005 - CEFRIEL
Link e Object Diagram



Un legame (link) è una connessione fisica o concettuale fra due istanze.
Mentre un'associazione connette due classi, un link connette due oggetti.
I link sono istanze delle associazioni.
presidente
cittadino
Italia: Repubblica
Unified Modeling Language
cittadino
58
C.A.Ciampi: Persona
Dario Fo: Persona
© 2005 - CEFRIEL
Object diagram: Esempio
P1
P2
Mondo reale
P6
P3
P5
P4
P1: Punto
Diagramma degli oggetti
P2: Punto
P3: Punto
Pol: Poligono
P4: Punto
P5: Punto
P6: Punto
Unified Modeling Language
59
© 2005 - CEFRIEL
Aggregazione

È un caso particolare di associazione molto comune che significa: “è un insieme di".
Il rombo “vuoto” si legge "è un insieme di"
3..*
Poligono
Punto
Essendo un tipo
particolare di
associazione è
sempre possibile
specificare la
cardinalità
Modello equivalente che usa una associazione convenzionale:
Poligono
Unified Modeling Language
InsiemeDi
60
3..*
Punto
© 2005 - CEFRIEL
Composizione

È un caso particolare di aggregazione che significa: “è composto da".
– i componenti non possono esistere senza il contenitore
– la proprietà da parte del contenente è esclusiva
• Quindi la molteplicità dal lato dell’aggregato non può essere >1
• Può essere qualsiasi per gli elementi componenti
PC
1..*
0..1
Monitor
1..4
HardDisk
Unified Modeling Language
UnitàBase
1..2
CD
Mouse
Tastiera
1..2
1..3
ModuloRAM
61
CPU
0..1
Coprocessore
© 2005 - CEFRIEL
Relazioni di aggregazione:
Semantica
Avanzato
Dipendenza delle parti
dall’oggetto composito
dipendente
esclusiva
1
indipendente
0..1
Proprietà
?
condivisa
?

1..*
*
+ semantica di propagazione delle operazioni
definita dall’utente (necessaria)
Varianti
1
esclusiva, dipendente, ma assenza di
operazioni
Unified Modeling Language
62
propagazione delle
© 2005 - CEFRIEL
Associazioni riflessive

Una associazione o aggregazione si dice riflessiva ( o ricorsiva) se coinvolge oggetti
della stessa classe
– una associazione ricorsiva indica che più oggetti della stessa classe interagiscono e collaborano
in qualche modo
Corso
0..*
0..*
precedenza
Unified Modeling Language
63
© 2005 - CEFRIEL
Generalizzazione
StessoAutore
0..*
Documento è una generalizzazione
di Libro e di File
Documento
Titolo
Attributi, operazioni e associazioni
vengono ereditati dalle sottoclassi
{simmetrica}
0..*
Copia()
generalizzazione
Libro
Numero_pagine
File
Dimensione_in_KB
File e libro sono sottoclassi
di documento
Stampa_di
Esempio di Object Diagram
TomSawyer : Libro
StessoAutore
HuckleberryFinn: Libro
Stampa_di
HF.doc: File
StessoAutore
Unified Modeling Language
64
© 2005 - CEFRIEL
Generalizzazione ed ereditarietà:
Esempi (2)
Persona

– attributi
– metodi
- String nome
- String indirizzo
+ Persona(String nome, String ind)
+ stampa()
+ String nome()
+ String indirizzo()
La classe Studente eredita dal padre:


Un oggetto Studente può essere trattato
esattamente come un oggetto Persona
In cosa solitamente può differenziarsi la classe
erede
– aggiunta di attributi e metodi
– i metodi possono essere ridefiniti
Studente
- int matricola
- String esami[ ]
- int voti[ ]
+ Studente(String nome, String ind, int mat)
+ aggiungiEsame(String nome, int voto)
+ int mediaVoti()
Unified Modeling Language
65
© 2005 - CEFRIEL
Generalizzazione: Esempi (3)
Poligono
+ Colore colore
+ sposta(float dx, float dy)
+ ruota(Punto centro, float angolo)
+ disegna(Schermo s)
Rettangolo
Triangolo
+ float diagonale()
VeicoloCommerciale
+ int pesoCarico
+ int pesoVuoto
+ boolean articolato
Autoveicolo
Unified Modeling Language
+ String targa
+ String modello
VeicoloPrivato
+ stampaLibretto()
+ int numeroPorte
+ int numeroPosti
66
© 2005 - CEFRIEL
Significati della generalizzazione


Una sottoclasse può ridefinire alcune proprietà della superclasse
Una sottoclasse può anche ridefinire il protocollo delle operazioni
– Cioè in una sottoclasse si può ridefinire un’operazione ereditata dalla superclasse, cambiandone
anche parametri e tipo restituito
Unified Modeling Language
67
© 2005 - CEFRIEL
Uso della delega (delegation)


Devo definire la classe pila (col solito significato)
Dispongo di una classe Sequenza, che vorrei riutilizzare
Pila
Sequenza
- content
insert(pos:int, x:item)
delete(pos:int)
push(x:item)
pop(): item
Sequenza
insert(pos:int, x:item)
delete(pos:int)
Pila
push(x:item)
pop(): item
Unified Modeling Language
così la pila erediterebbe
la possibilità di inserire
e togliere elementi da così la pila contiene
qualunque posizione (tipicamente nella
parte privata) una
sequenza di elementi
68
© 2005 - CEFRIEL
Classi astratte


Una classe astratta è una classe che non può essere direttamente istanziata
Può (anzi deve) avere delle sottoclassi concrete
– e queste possono essere istanziate (se non sono astratte a loro volta)
Figura
{abstract}
Classi
astratte
Poligono
{abstract}
Cerchio
Classi
concrete
Quadrato
Triangolo
Unified Modeling Language
Notazione
alternativa:
nome della
classe in corsivo
69
© 2005 - CEFRIEL
Classi astratte (2)

Il termine “astratto” viene anche utilizzato per per descrivere una operazione per la
quale non è stata definita una implementazione
– Le operazioni astratte di una classe si rappresentano scrivendo il nome in corsivo

Una classe astratta può avere operazioni concrete
– Almeno una operazione deve essere astratta

Tipicamente vengono usate
– per mettere a fattor comune un'astrazione di un certo tipo
– per favorire il riuso
Unified Modeling Language
70
© 2005 - CEFRIEL
Classi astratte: Esempio

Il disegno è composto di figure. Non importa come sono fatte. Il disegno sa solo che per disegnare
(draw) se stesso può chiamare il metodo draw delle figure.
– Aggiungendo una sottoclasse a figura il codice di gestione dei disegni non cambia!
1..*
Figura
+figuraPart #Position : Pos
1..* +draw()
Gruppo_Figure
1
Unified Modeling Language
Poligono
1
71
Disegno
+draw()
Linea
+lineaPart 3..*
© 2005 - CEFRIEL
Eredità multipla
Veicolo
{superficie}
{propulsione}
Veicolo
Terrestre
Veicoloa
SpintaUmana
Auto
Bicicletta
VeicoloTerrestre e
VeicoloaSpintaUmana
sono sottoclassi non
disgiunte di Veicolo
BarcaaRemi
Bicicletta eredita sia da
VeicoloTerrestre, sia da
VeicoloaSpintaUmana
Unified Modeling Language
72
© 2005 - CEFRIEL
La delega
La delega consiste nel "delegare" una entità apposita (es. RapportoDiLavoro) a
svolgere particolari operazioni.
Persona
Lavoratore
Dipendete
Persona
Rapporto
DiLavoro
Lavoratore
Autonomo
Lavoro
Dipendete
Dipendete
ConPartitaIva
Con delega (eredità semplice)
Senza delega (eredità multipla)
Unified Modeling Language
Lavoro
Autonomo
73
© 2005 - CEFRIEL
Vincoli relativi sulle associazioni
dipendente
0..*
Persona
impiegato
1..*
datore di
lavoro
0..1
0..1
Azienda
capo
0..1
Persona.datore_di_lavoro =
Persona.capo.datore_di_lavoro
Nota: in generale, i diagrammi consentono più gradi di libertà di
quanti se ne vogliano effettivamente lasciare.
Per introdurre vincoli e restrizioni bisogna ricorrere a una notazione
testuale.
OCL (Object constraint Language) fa questo in modo formale (è un
linguaggio logico).
Unified Modeling Language
74
© 2005 - CEFRIEL
Dipendenza

Relazione che indica una dipendenza di varia natura tra elementi di un modello UML
– Si può avere dipendenza tra classi, packages, use cases, etc.

Individua una connessione “semantica” tra due elementi, uno dei quali è dipendente
dall’altro
– Una modifica nell’elemento indipendente ha effetti su quello dipendente
Unified Modeling Language
75
© 2005 - CEFRIEL
Dipendenza: Esempio
Classe D
Classe B
Classe A
<<instantiates>>
<<calls>>
Unified Modeling Language
operationZ()
Classe C
76
© 2005 - CEFRIEL
Costrutti di raggruppamento

Modulo: raggruppa classi, associazioni e generalizzazioni
– fornisce una vista del problema
– diminuisce la complessità del problema

La suddivisione in moduli può essere fatta in diversi modi.
– Criterio: forte coesione, scarse connessioni
Unified Modeling Language
77
© 2005 - CEFRIEL
Packages



Forniscono un costrutto di raggruppamento per gli elementi definiti in un modello UML
A volte si utilizza il termine subsystem per indicare un package
È possibile definire delle relazioni (tipicamente di dipendenza, raffinamento, generalizzazione) tra
packages diversi
A
A
B
A1
A2
B1
B
Unified Modeling Language
78
© 2005 - CEFRIEL
Use Case Diagram

È una tipica interazione tra l’utente e il sistema informatico.
– Esempi per un word processor:
• sottolinea una parte di testo
• crea un indice

Quindi, uno use case
–
–
–
–

rappresenta una funzione visibile dall’utente
rappresenta un obiettivo specifico (atomico) per l’utente
può essere di “dimensioni” diverse
Descrive
• Il sistema
• L’ambiente
• Le relazioni fra sistema e ambiente
Ogni caso di utilizzo identificato
– È etichettato con un nome
– Viene descritto graficamente
– Viene descritto con del testo (la notazione grafica non basta)
Unified Modeling Language
83
© 2005 - CEFRIEL
Use Case:
Elementi caratteristici


Uno Use case consente di individuare il comportamento (in termini di funzionalità
offerte) di un sistema o di una qualsiasi altra entità definita nel sistema senza entrare
nel dettaglio della struttura interna dell’entità
Uno Use Case individua una tipologia di possibili utilizzi del sistema (descritti
testualmente)
Unified Modeling Language
84
© 2005 - CEFRIEL
Use case diagram
Use case
<<include>>
Actor
Unified Modeling Language
85
© 2005 - CEFRIEL
Use case diagram

Esempio: Sistema per la gestione delle vendite dei prodotti di una azienda
– Si vuole descrivere la possibilità da parte del venditore di effettuare l’evasione di un ordine
Use-Case
Acquisizione Ordine
Attore
Venditore
Confine del sistema
(non sempre indicato esplicitamente)
Unified Modeling Language
86
© 2005 - CEFRIEL
Actor (attori)

Attore = Entità esterna al sistema che interagisce con il sistema assumendo un
particolare ruolo
– non c’è necessariamente corrispondenza tra attori e individui precisi
– possono esserci diversi utenti con lo stesso ruolo, e diversi ruoli possono essere ricoperti dallo
stesso utente
– possono esserci diversi attori che esercitano lo stesso use case, e diversi use case possono essere
esercitati dallo stesso attore
– non è detto che un attore corrisponda a uno o più persone: può essere un sistema esterno
• nonostante l’icona standard utilizzata per la rappresentazione
Unified Modeling Language
87
© 2005 - CEFRIEL
Relazioni tra attori e use case
Associazione: Identifica la partecipazione di
un attore ad uno Use Case
Venditore
Immissione
Ordine
Generalizzazione: Il supervisore può
partecipare a tutti gli use case cui
partecipa il Venditore (compatibilità!)
Supervisore
Unified Modeling Language
Attribuzione
credito
88
© 2005 - CEFRIEL
Use case diagram: esempio
Cliente
Verifica stato ordine
Venditore
Acquisizione Ordine
Attribuzione credito
Addetto al magazzino
Evasione ordine
Unified Modeling Language
Supervisore
89
© 2005 - CEFRIEL
Use Case, Use Case Instances e
Scenari


Uno Use Case individua una tipologia di “storie” d’uso del sistema
Una istanza dello Use Case individua una specifica storia d’uso
– Specifica una delle possibili sequenze di azioni che possono avvenire durante lo svolgimento dello
use case

Scenario: È una istanza di use case corredata da una descrizione esplicita
– Il termine “scenario” non è usato in modo sempre consistente.
Unified Modeling Language
90
© 2005 - CEFRIEL
Scenari

Uno “scenario” individua e descrive esplicitamente una particolare istanza di uno
use case, ovvero una delle possibili varianti
– Ad es. un ordine può essere elaborato regolarmente, o può mancare la merce ordinata o può
mancare il credito nei confronti dell’ordinante, … Ciascuno di questi casi è uno scenario
specifico dello use case “gestione ordini”.


Ogni Use Case è caratterizzato da uno scenario base (sequenza tipica di eventi) e
da un numero, imprecisato a priori, di varianti
Le varianti possono essere aggiunte nei successivi raffinamenti dello use case
Unified Modeling Language
91
© 2005 - CEFRIEL
Relazioni tra Use Cases

Esistono tre tipi di relazioni possibili tra use cases:
– Generalizzazione
• Simile alla generalizzazione tra classi
– Inclusione
• Il comportamento individuato dallo use case target viene incluso nella sequenza di azioni svolta dalle
istanze dello use case base
<<include>>
– Estensione
• Le funzionalità individuate da uno use case base vengono estese, al verificarsi di opportune condizioni,
con funzionalità definite in un altro use case
<<extend>>
Unified Modeling Language
92
© 2005 - CEFRIEL
Esempio
base use case
<<extend>>
[Order created, P1 ]
Place Order
Extension Points:
P1: After order
creation
Customer
<<include>>
<<include>>
Request
Catalog
with Order
extension use case
<<include>>
SalesPerson
Supply
Customer
Data
Order
Product
Arrange
Payment
Pay
Cash
Unified Modeling Language
93
Pay by Money
Transfer
© 2005 - CEFRIEL
I requisiti non funzionali



Gli use case non sono adatti a specificare i requisiti non funzionali.
Poiché tali requisiti sono di importanza fondamentale occorre inventarsi un modo per
descriverli comunque.
UML non fornisce alcuna soluzione. Quindi solitamente si ricorre ad una specifica
testuale che viene allegata agli use case diagrams.
Unified Modeling Language
94
© 2005 - CEFRIEL


Interaction diagram e comportamento
dinamico del sistema
Sono diagrammi che descrivono come gruppi di oggetti collaborano nel mostrare un
certo comportamento.
Tipicamente rappresentano il comportamento di uno specifico use case
– in termini di specifici oggetti e messaggi scambiati

Ci sono due tipi di interaction diagram:
– Sequence diagram
– Collaboration diagram
Unified Modeling Language
95
© 2005 - CEFRIEL
Sequence diagram

Mostra una interazione tra oggetti come sequenza temporale di azioni.
– oggetti partecipanti
– sequenze (temporali) di messaggi scambiati
– non si vedono le associazioni tra oggetti
Unified Modeling Language
96
© 2005 - CEFRIEL
Sequence diagram: notazione
Oggetti
Obj2
Obj1
Obj3
Messaggi
a:do_this()
Istanti di
tempo
Vincolo
temporale
b:do_that()
{b-a < 1 sec.}
This call is routed
through the network
c
c’
Commento
Messaggio che impiega un
certo tempo per essere
ricevuto
Unified Modeling Language
Tempo
97
© 2005 - CEFRIEL
Esempio: sequence diagram
physician
waveform
controller
heart rate
parameter
physician sets up
use 4 waveforms
for patient
monitoring
setsweep
alarm
manager
alarm
display
patient
Rate=50
Rate=47
speed(25)
set bradycardia
alarm
set tachycardia
alarm
Rate=0
asystole event
physician’s
intervention
Unified Modeling Language
raise
bradycardia alarm
alarm text
Rate=45
lower
bradycardia alarm
clear alarm
98
© 2005 - CEFRIEL
Notazione estesa: terminologia
Agente
Oggetto
preesistente
Oggetto
creato da op()
“lifeline”
dell’oggetto
Oggetto
creato da foo(x)
Obj3:C3
op()
Obj1:C1
condizione,
equivale a
if (x>=0) {
Obj2=new(C2);
Obj2.foo(x);
}
else
Obj3.bar(x);
Unified Modeling Language
[x>=0] foo(x)
[x<0] bar(x)
Obj2:C2
doit(w)
99
© 2005 - CEFRIEL
Notazione estesa: terminologia
Attivazioni
Obj4:C4
Obj2:C2
Messaggi
“return”
doit(z)
doit(w)
Confluenza delle
due possibili
evoluzioni
Attivazione
ricorsiva
more()
Distruzione
dell’oggetto
Unified Modeling Language
101
Oggetto che prosegue
la sua esistenza dopo
queste interazioni
© 2005 - CEFRIEL
Collaboration diagram

Collaboration: interazione tra parti di un sistema per un certo scopo
– si isolano parti di sistema e si trascurano le interazioni non essenziali allo scopo


L’interazione è descritta in rapporto agli oggetti e alle relazioni che li legano.
Non c’è una dimensione precisa per il tempo
– le sequenze temporali sono descrivibili numerando i messaggi in modo progressivo
Unified Modeling Language
102
© 2005 - CEFRIEL
Esempio di interazione
oggetto
: OrderEntryWindow
1: prepare()
: Order
messaggio
auto-delega
ordine nella sequenza
di messaggi
5: NeedToReorder()
2*: prepare()
LineaTrenini : OrderLine
3: check()
4: [check() == true] remove()
MagazzinoTrenini : Stock
6: new
7: [check() == true] new
: DeliveryItem
Unified Modeling Language
: ReorderItem
103
© 2005 - CEFRIEL
State diagram



Rappresentano il comportamento di una classe di oggetti, descrivendone i possibili
stati e la reazione ad eventi esterni, in termini di cambiamenti di stato e/o azioni
svolte.
I diagrammi di stato danno un'astrazione di stati, eventi e transizioni
Gli stati dei diversi oggetti evolvono concettualmente in parallelo (sincronizzati dagli
eventi comuni).
Unified Modeling Language
104
© 2005 - CEFRIEL
Concetti fondamentali: stati


È l'insieme dei valori degli attributi e dei link posseduti da un oggetto in un certo
istante
Ci interessa lo stato astratto
– esempio: motore acceso/spento (non ci interessa il numero di giri/min.)
– può corrispondere a diverse - anche infinite - combinazioni di valori degli attributi

Lo stato influenza il comportamento
– L'oggetto reagisce in modo qualitativamente diverso agli eventi esterni, in funzione dello stato in
cui si trova.
– Esempio: prelievo da un conto corrente con saldo negativo
Unified Modeling Language
105
© 2005 - CEFRIEL
Concetti fondamentali: stati


Il comportamento quantitativo è influenzato dal valore degli attributi, dei link e dei
parametri delle operazioni
Uno stato perdura nel tempo
– finché un evento non fa cambiare stato all’oggetto (es. un versamento fa passare un conto corrente
da saldo negativo a saldo positivo)
Unified Modeling Language
106
© 2005 - CEFRIEL
Concetti fondamentali: eventi

Evento = stimolo esterno
– E' istantaneo
• il tempo è un attributo implicito
– Se due eventi sono legati da relazione causa/effetto sono ordinati nel tempo.
– Può causare nell'oggetto destinatario un cambio di valore, di stato o la produzione di ulteriori
eventi.
– Si intende che un evento ha una individualità ben definita
• raggruppabili in classi di eventi (con attributi caratterizzanti)
– La risposta ad uno stimolo dipende dallo stato, e può implicare una transizione di stato
• esempio del versamento su CC
Unified Modeling Language
107
© 2005 - CEFRIEL
Diagramma degli stati: Esempio
Chiamante.Aggancia
Inattivo
Chiamante.Aggancia
Chiamante.Sgancia
T
Tono
Tono
Pronto
TimeOut
Compone(n)
Compone(n)
Compos.
Numero
Tono
Occupato
Connesso
Unified Modeling Language
Occupato
T
NumNonValido Messaggio
Vocale
NumValido
ProntoA
Connettere
Instradato
Tono
Libero
Ricevente.Sgancia
108
© 2005 - CEFRIEL
Stati iniziali e finali

Alcuni oggetti hanno diagrammi degli stati ciclici, altri possono avere stati iniziali e/o
finali.
Inizio
AlBianco
Muovere
Mossa
Bianca
VinceIlNero
Stallo or Accordo
Mossa
Nera
AlNero
Muovere
Unified Modeling Language
Matto or Abbandono
Stallo or Accordo
Matto or Abbandono
109
Patta
VinceIlBianco
© 2005 - CEFRIEL
Condizioni



Sono funzioni booleane sui valori degli oggetti.
Sono valide in un intervallo di tempo
Sono utili come guardie delle transizioni di stato (non basta l'evento, deve essere verificata la
condizione).
Condizione
Evento
Pronto
Unified Modeling Language
Verde [incrocio.stato=libero]
110
InCorsa
© 2005 - CEFRIEL
Operazioni

Durante la loro vita gli oggetti eseguono operazioni.
– associate allo stato (attività)
– associate alle alle transizioni (azioni)

Le attività hanno una durata
– continue
– sequenziali

Le azioni sono istantanee
Unified Modeling Language
111
© 2005 - CEFRIEL
Operazioni

Azioni
– Sono operazioni che hanno durata istantanea (rispetto alla granularità del tempo). Tipicamente produzione
di eventi.
– Sono associate alle transizioni di stato oppure all'ingresso o all'uscita da uno stato.

Attività
– Sono operazioni con durata significativa.
– Sono associate ad uno stato
• Continue o sequenziali

Transizioni automatiche
– Se uno stato ha una attività associata e una freccia senza eventi esce da questo, la freccia indica la transizione
svolta automaticamente al completamento della attività.
Unified Modeling Language
112
© 2005 - CEFRIEL
Notazione generale
In caso di
ricezione
dell'evento1
nello stato A
viene eseguito
azione3 senza
cambio di
stato (e quindi
senza azioni di
entry ed exit)
StatoA
do: attività1
entry / azione1
exit / azione2
event1 / azione3
event2 / azione4
Transizione automatica
(evento scatenante
fine della attività1)
Unified Modeling Language
Transizione causata
dall'evento evento3 sotto
condizione condizione1.
Vengono eseguite azione2 e
azione5
event3 [condizione1] / azione5
event4 [condizione2] / azione6
Pseudo transizione causata dall'evento evento4
nell'ordine vengono eseguiti: azione2, azione6,
azione1
113
© 2005 - CEFRIEL
Azioni consistenti nell'invio di
eventi

Molto spesso le azioni consistono nell'inviare un evento ad un altro oggetto.
– esempio: transazione tra stati di un oggetto Window
right-mouse-down(location) [location in window] /
object:=pick-object(location); object.highlight()
One object
selected
No object
selected
invio di messaggio a object
Unified Modeling Language
114
© 2005 - CEFRIEL
Invio di eventi




Gli eventi possono avere attributi
Il destinatario può essere unico o un intero set di oggetti.
Tutti gli oggetti riceventi che riconoscono l'evento possono accettarlo e reagire in
parallelo.
Attenzione alle corse critiche
Unified Modeling Language
115
© 2005 - CEFRIEL
Invio di eventi: notazione grafica
Il segnale accende o spegne
Il VCR a seconda dello stato
corrente
“power” button
/VCR.togglePower
“power” button
/television.togglePower
Unified Modeling Language
116
© 2005 - CEFRIEL
Problemi dei diagrammi a stati
piatti

Diventano poco espressivi e troppo ingarbugliati al crescere delle dimensioni del
problema.
– Ad esempio, il numero di collegamenti possibili tra stati è quadratico nel numero di stati.

Soluzione: diagrammi strutturati
– la strutturazione favorisce la descrizione sintetica di sistemi complessi
• L'attività corrispondente ad uno stato può essere espansa in un diagramma a stati di più basso livello,
dove ogni stato rappresenta una fase dell'attività.
• Generalizzazione (specializzazione delle attività, gerarchie di ereditarietà, ...)
– Aggregazione (stati concorrenti)
Unified Modeling Language
117
© 2005 - CEFRIEL
Diagrammi a stati strutturati


Uno stato strutturato equivale ad una scomposizione OR degli stati: l'oggetto si trova, all'interno di uno
stato più generale, in un qualunque sotto-stato.
I sottostati ereditano le transizioni dei loro superstati (a meno di overriding)
levaR
Folle
Questa
transizione,
risposta
all'evento
ferma, viene
ereditata da
tutti i sottostati di
MarciaAvanti
Unified Modeling Language
RetroMarcia
levaN
Cambio Automatico
levaF
levaN
MarciaAvanti
ferma
accelera
Prima
accelera
Seconda
decelera
118
Terza
decelera
© 2005 - CEFRIEL
Diagramma di stato: esempio (1)
Unified Modeling Language
119
© 2005 - CEFRIEL
Sottostati concorrenti
Unified Modeling Language
120
© 2005 - CEFRIEL
Concorrenza di due attività
Distratto
Naturalmente
Attento
do: appunti
noia
do: sbadiglia
richiamo
do: gratta
richiamo
Sincronizzazione
Transazione complessa
Unified Modeling Language
Forzatamente
Attento
do: ghirigori
121
© 2005 - CEFRIEL
Activity Graph e Activity Diagram

Sono dei casi speciali di macchine a stati, in cui
– tutti gli stati (o quasi) contengono un’azione o una attività
– tutte le transizioni (o quasi) sono causate dal completamento delle azioni/attività negli stati



Un activity graph è associato ad una classe, o all'implementazione di un’operazione, o
ad uno use case.
Un Activity Diagram è un diagramma contenente un activity graph
Lo scopo deglio activity graph è di evidenziare l’evoluzione guidata dall’elaborazione
interna, in contrapposizione agli eventi esterni (meglio trattati negli state diagram).
Unified Modeling Language
122
© 2005 - CEFRIEL
[ non c'è caffè ]
Scegli
bevanda
[ c'è il caffè ]
[ C'è la Coca Cola ]
Riempi serbatoio
con acqua
Riempi filtro
con caffè
Prendi
tazze
Un Activity
Graph
Inserisci filtro in
macchina caffè
Prendi lattina
di Coca cola
Accendi
macchina caffè
^macchinaCaffe.accendi
Prepara
caffè
Luce macchina caffè accesa
Versa caffè
Unified Modeling Language
Bevi
123
© 2005 - CEFRIEL
Swimlanes (corsie)
oggetti
responsabili di
azioni
oggetto in ingresso
o in uscita da
un’azione
Customer
Request
product
Sales
Order
[in progress]
Order
[forwarded]
Process
order
Pay bill
Bill
[paid]
Find
product
Bill
[unpaid]
Order
[delivered]
azioni
Receive
order
Unified Modeling Language
Warehouse
Ship
product
124
Order
[completed]
stati
degli
oggetti
© 2005 - CEFRIEL
Implementation diagram

Component diagram
– mostrano la struttura del codice

Deployment diagram
– mostrano la struttura del sistema run-time
Unified Modeling Language
125
© 2005 - CEFRIEL
Component diagram

Mostra le dipendenze tra componenti software
– sorgenti, binari, eseguibili
– esistenti a compile-time, a link-time, a run-time

I moduli sono rappresentati come tipi di componenti
– le istanze si vedono nei deployment diagram

I diversi componenti offrono e usano interfacce specifiche
– Primo passo verso Component Programming
Unified Modeling Language
126
© 2005 - CEFRIEL
Componenti
spell-check
dictionary
synonyms
+RoutingList
mailer
-MailQueue
mailer
+Mailbox
Realizes
+Mailbox
+RoutingList
-MailQueue
mailer
+Mailbox
+RoutingList
-MailQueue
Unified Modeling Language
127
© 2005 - CEFRIEL
Component diagram

Un’architettura a “layer”:
dipendenze
Unified Modeling Language
128
© 2005 - CEFRIEL
Component diagram con icone ad-hoc
hello.class
hello.java
hello.html
hello.jpg
Unified Modeling Language
129
© 2005 - CEFRIEL
Deployment diagram

Mostrano la configurazione a run-time degli elementi attivi a run-time (e dei
componenti, processi e oggetti che vi “vivono”).
– processi e/o processori



Istanze di componenti software rappresentano le manifestazioni run-time delle unità di
codice.
Componenti che non esistono a run-time non appaiono in questi diagrammi.
I legami fra processi possono essere
– Connettori passivi
• Generici
• Specializzati con opportuni commenti
– Connettori attivi
• Modellati con opportuni processi
Unified Modeling Language
130
© 2005 - CEFRIEL
Associazioni

Rappresentano le connessioni fisiche tra i nodi
Client1
Server
Client2
Unified Modeling Language
131
© 2005 - CEFRIEL
Nodi e componenti

Un grafo
– nodi = risorsa computazionale
Server: Host
<<database>>
Meetings
• possono contenere istanze di
componenti e/o oggetti
– archi = comunicazione
:scheduler
reservations
• tipicamente indicano una
relazione di utilizzo
myPC: PC
:planner
Unified Modeling Language
132
© 2005 - CEFRIEL
Nodi e componenti
Server: Host
Mirror: Host
:scheduler
reservations
:scheduler
<<tcp/ip>>
<<tcp/ip>>
myPC: PC
<<tcp/ip>>
:planner
Unified Modeling Language
133
© 2005 - CEFRIEL
Dove trovare altre informazioni


Esistono diverse collezioni di link a siti web contenenti informazioni su strumenti e
prodotti vari.
www.cetus-links.org
– una collezione estesa di riferimenti a siti sull’analisi e progettazione OO (non necessariamente
UML).
Unified Modeling Language
134
© 2005 - CEFRIEL
Bibliografia: Libri





Terry Quatrani, Visual Modeling with Rational Rose and UML, Addison-Wesley
Unified Modeling Language User Guide
Unified Modeling Language Reference Manual
H. Eriksson, M. Penker, UML Toolkit, J. Wiley
M. Fowler, UML distilled, Addison-Wesley
Unified Modeling Language
135
© 2005 - CEFRIEL
Bibliografia: URL

Rational/IBM
– http://www-306.ibm.com/software/rational/

Object Management Group
– http://www.omg.org
Unified Modeling Language
136
© 2005 - CEFRIEL
Scarica

UML_ridotto