UML - Corretto by MP
UML - Corretto by MP
UML 1
I diagrammi canonici (1.5)
Diagrammi
Modello statico Modello dinamico
(struttura del sistema) (comportamento del sistema)
Diagramma delle classi Diagramma degli oggetti
Diagramma di collaborazione
Diagramma di stato
Diagramma di attività
UML 2
Modellazione strutturale
UML 3
Diagrammi di struttura statica
UML 4
Modellazione strutturale:
diagrammi
Il modello statico di riferimento per la modellazione
strutturale permette di mostrare:
• le entità presenti nel modello (classi, interfacce,
componenti, nodi, ecc.)
• la struttura interna
• le relazioni statiche tra entità
Tipi di diagrammi:
• Diagrammi di struttura:
• Vista statica: class diagram,
• Vista dinamica: object diagram
• Diagrammi d’implementazione: component
diagram, deployment diagram
UML 5
Operazioni, metodi e incapsulazione
• Un oggetto è l'istanza di una classe
• Un oggetto può essere visto come un pacchetto
coeso di dati e funzioni
UML 6
Le Classi Gli oggetti
ClassName ObjectName: ClassName
attribute attribute:datatype=default:value
attribute:data_type
attribute:datatype=default:value
operation
operation()
operation(argument_list):result_type
UML 7
Entità: gli oggetti
• In UML l'oggetto è rappresentato tramite un rettangolo
con due sottosezioni.
Nome Nome
dell'oggetto della classe
Sottosezione nome
contoJim:Conto
UML 9
Entità: le classi
• Una classe descrive un insieme di oggetti che condividono
gli stessi attributi, operazioni, metodi, relazioni e semantica
• È rappresentata da un rettangolo
UML 10
Esempio di classe
Nome
della classe
Sottosezione nome
Conto
numero:int
Sottosezione attributo correntista: String
saldo: double
UML 11
Classi e oggetti
La relazione esistente tra una classe e gli oggetti di
quella classe è la relazione <<istanzia>>
Conto
numero:int
correntista: String
saldo: double
+create()
+deposito()
+prelievo()
<<istanzia>> <<istanzia>>
<<istanzia>>
UML 12
Attributo
• Il nome dell'attributo è l'unica parte
obbligatoria
visibilità nome molteplicità:tipo=valoreIniziale
opzionale obbligatorio opzionale
UML 15
Ambito
• Ambito di istanza:
– Gli oggetti hanno una propria copia degli
attributi, quindi oggetti diversi possono avere
diversi valori negli attributi
– Le operazioni agiscono su oggetti specifici
• Ambito di classe:
– Gli oggetti di una stessa classe condividono lo
stesso valore per un attributo
– Le operazioni non operano solo su una particolare
istanza della classe, ma alla classe stessa. Ad
esempio: costruttori e distruttori di classe.
UML 16
Ambito e accessibilità
UML 18
Le relazioni statiche
Ci sono due tipi principali di relazione statica tra classi
in un class diagram
• Associazione
• Sottotipo
Persona CartaIdentità
associazione
Autista sottotipo
UML 19
Esempio
UML 20
Esempio: overriding
• Per ridefinire una operazione della superclasse, una
sottoclasse deve avere una propria operazione con
identica segnatura
• Ad esempio, la soluzione al problema della slide
precedente è:
UML 21
Classe Astratta e Polimorfismo
• Operazione astratta: operazione priva di
implementazione la cui implementazione è
demandata alle sottoclassi
• Una classe con una o più operazioni astratte è
astratta e non può essere istanziata
• Operazioni e classi astratte sono indicate
scrivendone il nome in corsivo
• Le classi che possono essere istanziate sono dette
classi concrete
• Operazioni che possono avere implementazioni
differenti sono dette polimorfe
UML 22
Esempio: classe astratta e polimorfismo
Grazie al polimorfismo oggetti di classi differenti
(come Rettangolo e Cerchio) hanno operazioni
con la stessa segnatura, ma con implementazione
diversa.
UML 23
Cos'è un'associazione?
• Se esiste un collegamento tra oggetti allora deve
esistere un'associazione tra le loro classi,
poiché un collegamento è l'istanziazione di
un'associazione
UML 24
Le associazioni
• Un'associazione rappresenta una connessione tra
due o più classi
• La classe ha la responsabilità di notificare una certa
informazione ad un'altra classe
• Bidirezionale
• La molteplicità indica quanti oggetti di una classe
possono far riferimento ad ogni oggetto dell'altra
Ordine LineaOrdine
numero:int numero:int
prezzo: double prezzo: double
Contiene
1 *
UML 25
Le associazioni
• Molteplicità:
datoreLavoro dipendente
Azienda 1 * Persona
• Navigabilità:
Ordine Cliente
numero:int nome
prezzo: double indirizzo
Contiene
* 1
+create() credito()
+spedisci()
+chiudi()
UML 26
Le molteplicità
Le molteplicità sono della forma:
• 0..1 Zero o 1
• 1 Esattamente 1
• 0..* Zero o più
• * Zero o più
• 1..* 1 o più
• 1..6 da 1 a 6
• 1..3,7 da 1 a 3, oppure 7
UML 27
Esempio
UML 28
Associazioni riflessive
• Si ha un'associazione riflessiva se
– una classe ha una associazione con se
stessa
– quindi oggetti della classe possono avere
collegamenti con oggetti della stessa classe
• Ad esempio:
UML 30
Esempio: gerarchia
UML 31
Esempio: rete
UML 32
Associazioni e attributi
• Che correlazione c'è tra associazioni e
attributi delle classi?
• Ad esempio:
UML 33
Classi associazione
UML 34
Classi associazione
• La classe associazione connette due classi e
definisce un insieme di caratteristiche proprie della
associazione stessa
• Le istanze dell'associazione sono collegamenti,
dotati di attributi e operazioni, la cui identità
individuale è stabilita esclusivamente dalle identità
degli oggetti alle estremità del collegamento
• Quindi si possono usare le classi associazione solo
quando ogni collegamento ha una identità univoca
• Nell'esempio precedente si sta affermando che una
Persona può avere una sola Posizione in una data
Azienda
UML 35
Reifica di una classe associazione
• Come si reifica (o rende reale) la relazione di classe
associazione?
• ovvero:
UML 36
Associazioni qualificate
• Sono elementi di modellazione utili per illustrare
come reperire degli oggetti specifici di un insieme
• Dato un oggetto Club collegato a un insieme di
oggetti Socio, come si può navigare fino a uno
specifico oggetto Socio?
UML 37
Classi di progettazione
• Le classi di progettazione sono classi le cui
specifiche sono talmente complete da poter
essere implementate
• Una classe di progettazione è benformata se
rispetta le seguenti caratteristiche:
– completezza e sufficienza;
– essenzialità;
– massima coesione;
– minima interdipendenza.
UML 38
Template di classe
• I template di classe consentono la
parametrizzazione dei tipi
UML 39
Esercizio sui Template di classe
UML 40
Soluzione dell'esercizio sui template
UML 41
Istanziazione del template
• I nomi dei parametri sono locali al template
• Operazione di binding: associare ai parametri
dei valori specifici
• Istanziazione di un template: crare nuove
classi tramite l'operazione di binding
• Binding esplicito: istanziare il template usando
la relazione di dipendenza con lo stereotipo
<<bind>>
• Binding implicito: nel nome della classe si usa
il nome del template seguito dai valori per i
parametri
UML 42
Binding implicito
UML 43
Classi annidate
• Classe annidata: classe definita all'interno
della definizione di un'altra classe
• È accessibile solo alla classe esterna e agli
oggetti di quella classe
UML 44
Cos'è una dipendenza?
Una dipendenza è una relazione tra due
elementi, dove un cambiamento a uno di essi (il
fornitore) può influenzare l'altro (il cliente)
•Uso: il cliente utilizza alcuni dei servizi resi
disponibili dal fornitore per implementare il proprio
comportamento
•Astrazione: una relazione tra cliente e fornitore in
cui il fornitore è più astratto dle cliente
•Accesso: il fornitore assegna al cliente un qualche
tipo di permesso di accesso al proprio contenuto
•Binding: il fornitore assegna al cliente dei parametri
che saranno istanziati a valori specifici dal cliente
UML 45
Cos'è una dipendenza?
• Uso: <<usa>>, <<chiama>>, <<parametro>>,
<<invia>>, <<istanzia>>
• Astrazione: <<origine>>, <<rifinisce>>, <<deriva-
da>>
• Accesso: <<accede>>, <<importa>>, <<friend>>
• Binding: <<bind>>
UML 46
Esempio di astrazione
UML 48
Aggregazione e composizione
*
Foglie
*
Albero 1
Rami Composizione
1
Tronco
UML 49
Semantica dell'aggregazione
• L'aggregato può in alcuni casi esistere
indipendentemente dalle parti, ma in altri
casi no.
• Le parti possono esistere
indipendentemente dall'aggregato
• L'aggregato è in qualche modo incompleto
se mancano alcune delle sue parti
• È possibile che più aggregati condividano
una stessa parte
• L'aggregazione è transitiva
• L'aggregazione è asimmetrica
UML 50
Esempio di aggregazione
UML 51
Esempio di aggregazione
I cicli
NON
sono
ammessi
UML 53
Semantica della composizione
• Ogni parte può appartenere ad un solo
composito per volta
• Il composito è l'unico responsabile di tutte
le sue parti: questo vuol dire che è
responsabile della loro creazione e
distruzione
• Il composito può rilasciare una sua parte, a
patto che un altro oggetto si prenda la
relativa responsabilità
• Se il composito viene distrutto, deve
distruggere tutte le sue parti o cederne la
responsabilità a qualche altro oggetto
UML 54
Reificare associazioni uno-a-uno
Ad esempio se A è il tutto e B una parte:
UML 55
Reificare associazioni molti-a-uno
Ad esempio se A è il tutto e B una parte:
UML 56
Reificare associazioni molti-a-uno
Ad esempio se A è la parte e B il tutto:
UML 57
Classi contenitore
Ad esempio se A è la parte e B il tutto:
UML 58
Classi associazione
UML 59
Entità: le interfacce
• Insieme di operazioni che una classe offre ad altre
classi
<<interface>>
UML 60
Entità: le interfacce
UML 61
Entità: le interfacce
UML 62
Entità: le interfacce
• Ogni operazione dell'interfaccia deve avere:
• La segnatura completa
• La semantica dell'operazione
• Opzionalmente uno stereotipo, vincoli e valori
etichettati
• Le interfacce non possono avere:
• Attributi
• Implementazione delle operazioni
• Relazioni navigabili dall'interfaccia a nessun
altro tipo di classificatore
UML 63
Interfacce e interdipendenze
• Le interfacce consentono di collegare tra loro
classi senza introdurre interdipendenze
• Ad esempio: la classe Stampante è in grado
di stampare qualunque cosa implementi
l'interfaccia Stampabile
UML 64
Interfacce e sottosistemi
• Le interfacce sono efficienti e utili nella
modellazione dei sottosistemi
• Ad esempio: il sottosistema GUI conosce
esclusivamente le interfacce GestoreClienti e
GestoreConti e non sa nulla di specifico dell'altro
sottosistema
UML 65
Interfacce: vantaggi e suggerimenti
• La progettazione per interfacce svincola il
modello da dipendenze dell'implementazione e
ne aumenta la flessibilità e la estendibilità
• Tiene sotto controllo le interdipendenze
presenti nel modello
• Separa il modello in sottoinsiemi coesi
però
• La corretta modellazione di un sistema è più
importante della sua modellazione flessibile
• Bisogna utilizzare interfacce semplici e utili
UML 66
Riferimenti
• [UML 1.5] OMG UML Specification v. 1.5.
UML 67