Il 0% ha trovato utile questo documento (0 voti)
10 visualizzazioni67 pagine

UML - Corretto by MP

Il documento fornisce una panoramica sui diagrammi UML, evidenziando la differenza tra modelli statici e dinamici, e descrivendo vari tipi di diagrammi come diagrammi delle classi e degli oggetti. Viene approfondita la modellazione strutturale, le operazioni, la visibilità degli attributi e le associazioni tra classi. Inoltre, si discute di concetti come classi astratte, polimorfismo e classi associazione, fornendo esempi pratici per illustrare le relazioni tra classi e oggetti.

Caricato da

lombrico
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
10 visualizzazioni67 pagine

UML - Corretto by MP

Il documento fornisce una panoramica sui diagrammi UML, evidenziando la differenza tra modelli statici e dinamici, e descrivendo vari tipi di diagrammi come diagrammi delle classi e degli oggetti. Viene approfondita la modellazione strutturale, le operazioni, la visibilità degli attributi e le associazioni tra classi. Inoltre, si discute di concetti come classi astratte, polimorfismo e classi associazione, fornendo esempi pratici per illustrare le relazioni tra classi e oggetti.

Caricato da

lombrico
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 67

Elementi di UML (3)

Università degli Studi di Bologna


Facoltà di Scienze MM. FF. NN.
Corso di Laurea in Scienze di Internet
Anno Accademico 2004-2005

Laboratorio di Sistemi e Processi Organizzativi

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 dei componenti Diagramma dei casi d'uso

Diagramma di deployment Diagramma di sequenza

Diagramma di collaborazione

Diagramma di stato

Diagramma di attività

UML 2
Modellazione strutturale

• Modellazione strutturale: Rappresenta


una vista di un sistema software che pone
l’accento sulla struttura degli oggetti (classi
di appartenenza, relazioni, attributi,
operazioni)
• Il Diagramma delle classi descrive il tipo
degli oggetti che compongono il sistema e
le relazioni statiche esistenti tra loro

UML 3
Diagrammi di struttura statica

• Mostrano le entità del sistema connesse


secondo le relazioni statiche che le
caratterizzano
• Due viste possibili:
– di classe (class diagram)
– d'istanza (object diagram)

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

• Per ottenere accesso alla parte dati di un oggetto


sono rese disponibili funzioni dell'oggetto apposite

• Nell'analisi ci si riferisce a tali funzioni come


operazioni

• Nella progettazione sono chiamate metodi

• Incapsulazione (opacità dei dati): mascherare la


parte dati di un oggetto sotto uno strato di
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.

• La sottosezione superiore contiene l'identificatore


dell'oggetto che è sempre sottolineato

• L'identificatore di un oggetto può essere uno qualunque


dei seguenti:

• Il solo nome della classe, per esempio: Conto.

• Il solo nome dell'oggetto, per esempio: contoJim.


Questo identifica un oggetto specifico, ma non dice a
quale classe esso appartenga. Utile per un'analisi
molto preliminare

• Il nome dell'oggetto concatenato al nome della


classe, separati dai due punti: contoJim:Conto
UML 8
Esempio di oggetto

Nome Nome
dell'oggetto della classe

Sottosezione nome
contoJim:Conto

Sottosezione attributo numero:int = 1234567


correntista: String = “Jim Arlow”
saldo: double = 300.00

Nome tipo valore


dell'attributo dell'attributo dell'attributo

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

• Solitamente il rettangolo che rappresenta una classe è


suddiviso in 3 compartimenti:
1- Nome
2- Attributi: attribute:Type=”default value”
3- Metodi: MethodName(List of parameters): ReturnType

• E' possibile personalizzare il numero e il tipo di


compartimenti specificando il nome di ogni compartimento

UML 10
Esempio di classe
Nome
della classe

Sottosezione nome
Conto
numero:int
Sottosezione attributo correntista: String
saldo: double

Sottosezione operazione +create()


+deposito()
+prelievo()
visibilità

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>>

contoJim:Conto contoFab:Conto contoLau:Conto

numero:int = 801 numero:int = 802 numero:int = 803


saldo: double = 300.00 saldo: double = 3000.00 saldo: double = 420.00

UML 12
Attributo
• Il nome dell'attributo è l'unica parte
obbligatoria
visibilità nome molteplicità:tipo=valoreIniziale
opzionale obbligatorio opzionale

• Nella progettazione i valori iniziali aiutano a


garantire che gli oggetti siano creati con
uno stato iniziale utilizabile e consistente
• Nell'analisi i valori iniziali aiutano ad
evidenziare vincoli del problema
UML 13
Tipi di visibilità
+ (visibilità pubblica): ogni elemento che può
accedere alla classe può anche accedere a ogni
suo membro con visibilità pubblica
- (visibilità privata): solo le operazioni della
classe possono accedere ai membri con visibilità
privata
# (visibilità protetta): solo le operazioni
appartenenti alla classe o ai suoi discendenti
possono accedere ai membri con visibilità
protetta
~ (visibilità package): ogni elemento nello stesso
package della classe (o suo sottopackage
annidato) può accedere ai membri della classe
con visibilità package
UML 14
Operazione
• Le operazioni sono funzioni vincolate a una certa
classe
Segnatura dell'operazione

visibilità nome (nomeParametro:tipoParametro, . . . ): tipoRestituito

• La segnatura è costituita da:


– Nome dell'operazione (scritto in camelCase)
– Tipi di tutti i parametri
– Tipo restituito
• Ogni operazione di una classe deve avere una sua
unica segnatura

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à

• Operazioni con ambito di istanza possono accedere


sia ad altre operazioni o attributi con ambito di
istanza sia con ambito di classe
• Operazioni con ambito di classe possono accedere
solo ad altre operazioni e attributi con ambito di
classe (altrimenti non si saprebbe quale istanza
scegliere)
UML 17
Diagrammi degli oggetti
• Gli oggetti collegati assumono dei ruoli l'uno rispetto
all'altro
• I collegamenti sono connessioni dinamiche tra oggetti,
quindi non necessariamente stabili nel tempo

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

• Le sottoclassi Rettangolo e Cerchio ereditano tutti


gli attributi, operazioni e vincoli della superclasse
Figura
• Che errore di modellazione è stato commesso?

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 *

+create() composto_da incluso_in +create()


+spedisci()
+chiudi()

UML 25
Le associazioni
• Molteplicità:
datoreLavoro dipendente
Azienda 1 * Persona

Un'Azienda impiega molte Persone


Una Persona lavora per un'unica Azienda

• 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:

A partire da questo diagramma di classe,


quale può essere un possibile diagramma degli oggetti?
UML 29
Esempio: associazione riflessiva

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

• Aggiungiamo la regola per cui ogni Persona


percepisce uno stipendio da ogni Azienda in cui è
impiegata
• Dove sistemiamo l'attributo stipendio?
• Lo stipendio è una proprietà dell'associazione
stessa

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?

• Trasformandola in una vera classe

• 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

• Al posto di specificare il tipo effettivo degli


attributi e dei parametri e valori restituiti dei
metodi, è possibile definire una classe,
facendo riferimento a dei parametri

• Tali parametri possono essere sostituiti da dei


valori effettivi per creare delle nuove classi

UML 39
Esercizio sui Template di classe

Date queste classi, quali sono i parametri?

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

Contro del binding implicito: la classe istanziata


non può veramente avere un suo nome

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

Questo modello evidenzia che saldo deriva dalla


collezione delle Transazione di
ContoBancario
UML 47
Aggregazione e composizione
Aggregazione e composizione sono speciali
forme di associazione che specificano una
relazione whole-part (tutto-parte) tra
l'aggregato e le parti componenti.

•Aggregazione: relazione poco forte (le parti


esistono anche senza il tutto)

•Composizione: relazione molto forte (le parti


dipendono dal tutto, per esempio i muri e la
stanza)

UML 48
Aggregazione e composizione

Computer 0..1 0..* Stampante Aggregazione

*
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

L'istanza del diagramma delle classi


nel diagramma degli oggetti è corretta?

UML 51
Esempio di aggregazione
I cicli
NON
sono
ammessi

• Il diagramma degli oggetti precedente è


sbagliato, poiché i cicli non sono ammessi.
• Come si può modellare questa situazione nel
diagramma delle classi?
UML 52
Soluzione

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

• È rappresentata come una classe con lo stereotipo

<<interface>>

• Non ha attributi ma soltanto metodi dichiarati.

• L'implementazione dell'interfaccia può essere indicata


con un piccolo cerchio vuoto (o con una relazione di
realizzazione)

• Utile per raggruppare operazioni comuni a più classi,


quando le classi non sono tutte correlate ad una
particolare classe padre.

UML 60
Entità: le interfacce

UML 61
Entità: le interfacce

• L'idea è quella di separare le specifiche di una


funzionalità (l'interfaccia) dall'implementazione
della stessa da parte di un classificatore, quale
una classe.

• L'interfaccia definisce un “contratto” che viene


implementato dal classificatore

• Progettare per implementazione: progettazione


in cui si definiscono le classi e le si connettono
tra loro

• Progettare per contratto: definire le interfacce e


connetterle alle classi che le realizzano

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

• Un'interfaccia è simile ad una classe astratta


senza attributi e con un insieme di operazioni
completamente astratte

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.

• [AN02] Arlow, Neustadt, UML e Unified


Process, McGraw-Hill, 2002

• [BSL02] Bennett, Skelton, Lunn, Introduzione


a UML, McGraw-Hill collana Schaum's, 2002
• I diagrammi sono stati realizzati con Dia
http://www.gnome.org/projects/dia/

UML 67

Potrebbero piacerti anche