You are on page 1of 50

UML:ClassDiagram

Ing.OrazioTomarchio
Orazio.Tomarchio@diit.unict.it
DipartimentodiIngegneriaInformaticaedelleTelecomunicazioni
UniversitdiCatania

MasterinICT

ClassDiagram

Fornisconounavistastrutturale(statica)delsistema
interminidi
Classi
Attributi
Operazioni

relazionitraclassi(associazioni,
generalizzazioni,.......)
Unclassdiagramrappresentaunoschemaconcettuale
seunaclasseAinrelazioneconunaclasseB,allora
ogniistanzadiAsarinrelazioneconunistanzadiB
2

MasterinICT

Prospettivediverse

Laprospettivaconcuisirealizzaildiagrammapu
essere
concettuale
studiaiconcettiproprideldominiosottostudio,senza
preoccuparsidellalorosuccessivaimplementazione
dispecifica
studiailsoftwaremaalivellodiinterfacciaenondi
implementazione.Quindilattenzioneconcentratasulle
responsabilitdelleclassimanonsuidettagliconcreti
implementativa
ildiagrammafariferimentoalleclassieffettivamente
realizzateconunlinguaggiodiprogrammazioneOOealle
strutturedatieffettivamenteimpiegate.
3

MasterinICT

Similitutidini

Entit/Relazioni
EunaestensionedeidiagrammiEntit/Relazioni.
Introduceclassificazione,istanziazioneeaggregazione.
Definiscenonsologliattributi,maancheleoperazioni.

AltrimodelliOO(Booch,OMT)
Differenzesintattiche

MasterinICT

ConcettodiClasse

Unaclassedescriveungruppodioggetticon
caratteristichecomuni
attributi
comportamento

Glioggetti(istanze)diunastessaclassedifferiscono
traloroperivaloridegliattributieperlerelazioni
chelileganoadaltrioggetti.

MasterinICT

Notazionegeneraleperleclassi

Nelcasopigeneralelanotazionelaseguente.

Nomedellaclasse
nomeattributo1:tipodato1=valoredidefault1
nomeattributo1:tipodato2=valoredidefault2

Nomeoperazione1(listaargomenti1):tiporeso1
Nomeoperazione2(listaargomenti2):tiporeso2

MasterinICT

Esempio1

Vediamounesempio

NumeroCellulare
Nomedellaclasse

prefisso:int
numero:int

attributi

setPrefisso(p:int)

operazioni

setNumero(n:int)
getPrefisso():int
getNumero():int

MasterinICT

Esempio2

Vediamoancoraunesempio

Ordine

Disegno

data
numero:String
prepagato
prezzo:Denaro

Titolo:String
altezza:int
Larghezza:int

Nome:String
et:int

Spedisci()
Chiudi()

Stampa()
ruota(gradi:int)

cambiaLavoro()
CambiaIndirizo()

Persona

Dalpuntodivistaconcettualesipuinizialmente
tralasciarediindicaretuttigliattributietutteleoperazioni
8

MasterinICT

Classi:implementazione

EsisteunacorrispondenzatralarappresentazioneUMLdiunaclasse
elimplementazioneconunlinguaggioOO
(Es.Java)
publicclassFattura{
publicFloatimporto;
publicDatedata=newDate();
Fattura
publicStringcliente;
Importo:Float
staticprivateintfattureEmesse=0;
data:Date
publicFattura(){
cliente:String
fattureEmesse++;
fattureEmesse:int=0
}
Fattura()
//Altrimetodi

//...
}
9

MasterinICT

RelazioniUML

InunClassDiagramvengonorappresentaterelazioni
oltrealleclassi:
Relazionidigeneralizzazione
Associazioni(semplici,aggregazioni,composizioni)

10

MasterinICT

Generalizzazioneedereditariet

Generalizzazione=relazione"isa
Ogniistanzadiunaclasseancheistanzadituttele
superclassi
Larelazionedigeneralizzazionepuessereutilizzata
anchefraaltrielementidellinguaggioUML(packages,
usecases,etc.)

Ereditariet
Meccanismoattraversoilqualeelementispecializzati
incorporanolastrutturaedilcomportamentodielementipi
generali

11

MasterinICT

GeneralizzazionefraclassiI

Le classi figlie (o sottoclassi) ereditano gli attributi


della classe padre (superclasse) e ne possono
aggiungerealtri.
Inoltre esse ereditano anche i metodi, ma essi
possonoessereridefinitinellaclassefiglia
(cfr.conilconcettodipolimorfismodeilinguaggidi
programmazioneOO).

12

MasterinICT

Esempio(1):generalizzazione
e
n
o
i
z
za

e
n
Ge

z
i
l
ra

Generalizzazione
diuomoedonna

persona
DataNascita

uomo

donna

Posizionemilitare

NumeroGravidanze

Sottoclassedipersona
13

MasterinICT

Esempio(2):generalizzazione
persona

nome:String
Indirizzo:String
Persona(Stringnome,Stringind)

Stampa()
Nome():String
Indirizzo():String

studente
matricola:int
esami[]:String
voti[]:int
Studente(Stringnome,Stringind,intmat)
aggiungiEsame(Stringnome,intvoto)

mediaVoti():int

laclasseStudenteereditadal
padre:
attributi
metodi

UnoggettoStudentepuessere
trattatoesattamentecomeun
oggettoPersona

Incosasolitamentepu
differenziarsilaclasseerede?
aggiuntadiattributiemetodi
imetodipossonoessere
ridefiniti
14

MasterinICT

Esempio(3):generalizzazione

Classepadre
poligono
colore:Colore

Classefiglia

triangolo

sposta(floatdx,floatdy)
ruota(Puntocentro,floatangolo)
disegna(Schermos)

Classefiglia

rettangolo
diagonale():float

15

MasterinICT

..ancoraunesempio
autoveicolo
targa:String
modello:String
stampaLibretto()

VeicoloPrivato
numeroPorte:int
numeroPosti:int

VeicoloCommerciale
pesoCarico:int
pesoVuoto:int
articolato:boolean

16

MasterinICT

Principiodisostituzione
OSSERVAZIONE

In una generalizzazione, una classe figlia deve


rappresentareunvalidosostitutodellaclassepadre.
Cio,inqualunquepuntodelcodiceappaialaclassepadre,deve
esserepossibilesostituirlaconlaclassefiglia.

Ilviceversa,invece,nonvero.
Questoprincipiopuessereutileperindividuareerrorinelle
generalizzazionipresentinelloschema.

17

MasterinICT

Associazioni

UnaAssociazioneindividuaunaconnessionelogicatra
classi
sitraduceinunaconnessionefraoggetti,istanzedelle
classicoinvoltenellassociazione

Ilconcettodiassociazionepresenteanchenella
modellazioneconcettualedidatabase(EntityRelationship)
Nomeassociazione
(opzionale)

Citt
Nome:string

Capoluogodi

Regione
Nome:string

18

MasterinICT

Cardinalitnelleassociazioni

Indicailnumerodiistanzediunaclassechepossono
essereassociateadunasingolaistanzadellaltraclasse
Esistonomoltoconvenzionidiverseperindicarela
molteplicitdiunaassociazione
1..1=1
0..*=*

(1, N)

1..*

(0, 1)

0..1

19

MasterinICT

Indicazionemolteplicit

linea
Nome:string

0..*

Identificatoda>
<Appartienea 2

punto
Nome:string

cit
i
l
p
lte
)
o
e
l
M

ion
z
p
o
e
h
(anc

20

MasterinICT

NotazioneCardinalit

Lamolteplicitsipuindicareconprecisione.
persona
Nome:string

Possiede
1..3,5

auto
Modello:string

Ogniautoha1,2,3o5(manon4)comproprietari
Ognipersonapupossederezerooalpiun'auto(magari
incompropriet)

21

MasterinICT

Notazioneperlacardinalit(1/3)

0ounauto

0..1

auto
Modello:string

0opiauto

0..*

esattamenteunauto

auto
Modello:string

auto
Modello:string

0,da3a5oppure7auto
eoltre

0,3..5,7..*

auto
Modello:string
22

MasterinICT

Notazioneperlacardinalit(2/3)
persona

Nome:string

Possiede
0..*

auto
Modello:string

Nota:Ilclassdiagramindicacheunapersonapu
possedereunnumeroqualsiasidiauto

Quantisonoiproprietaridiunasingolaauto?

23

MasterinICT

Notazioneperlacardinalit(3/3)

Ildiagrammanonforniscequestainformazione,datochela
cardinalitdellapartecipazionediPersonaallassociazione
risultanonspecificata!
Inoltre,datochelassociazionenavigabileinunasola
direzione,dataunautononmaipossibilerisalireaisuoi
(oalsuo)proprietario

24

MasterinICT

NavigabilitI

Lanavigabilitdiunaassociazioneunverso
privilegiatoperessa,esiindicaconunafreccia
sullarigadellassociazione

ordine
Numero:string

cliente
*

1 Nome:string

25

MasterinICT

NavigabilitII

AlivellodispecificalafrecciasignificacheogniOrdine
halaresponsabilitdisegnalareaqualeCliente
appartiene(nonsidicecome),manonilviceversa
Alivellodiimplementazionelafrecciaindicalapresenza
diunpuntatoredaogniOrdinealrispettivoCliente
Alivelloconcettualelanavigabilitnonhamoltosenso
equindispessononsenefauso
ordine
Numero:string

cliente
*

1 Nome:string
26

MasterinICT

NavigabilitIII

Seunaassociazionenavigabileinunsolosensodetta
associazioneunidirezionale,altrimentibidirezionale.
Senonpresentenessunafrecciasullassociazione,sipu
intenderechelanavigabilitsiabidirezionaleoppurenon
determinata.
Associazione
unidirezionale

ordine

cliente

Numero:string

1 Nome:string

lit
i
b
a
g
Navi

27

MasterinICT

Molteplicit(es.)

cliente
1

ordine

Poligono
0..1

3..*
Punto

Un cliente pu fare quanti ordini desidera, anche


nessuno (*). Al contrario ogni ordine deve essere
associatoadunoeunsolocliente.CiolaclasseOrdine
partecipaobbligatoriamenteallassociazione.

Un poligono deve avere almeno tre punti (3..*). Al


contrario, nellassociazione rappresentata, ogni punto
pu far parte di un poligono o di nessuno, ma non di
molti. Si dice che la classe Punto partecipa
facoltativamenteallassociazione.

Calciatore

16..22

Squadra

28

MasterinICT

Ruolinelleassociazioni

Unaclassepupartecipareadunassociazioneconun
ruolospecifico,chepuessereindicato

Persona

0..*

Lavoraper

Impiegato

0..1

Azienda

Datoredilavoro

Ilruolo(opzionale)viene
indicatoinstilenormale

29

MasterinICT

Ruoloobbligatorionelleassociazioni

Quandolestesseclassisonocoinvoltepivoltedalla
stessaassociazioneilruolodivieneobbligatorio.

Utente

1 owner
0..*

Utenteautorizzato

0..*

0..*

contenente
Directory

contenuto

Quiilruoloserveadistingueredue
associazionidiversetralestessedue
classi

0..1

0..*

Quiilruoloobbligatorio

30

MasterinICT

Vincoliaggiuntivi

Talvoltanecessariooconvenienteesplicitaredeivincoliaggiuntiviin
mododarenderepicomprensibileildiagrammadelleclassi.

Sipossonodefiniresuilegamiesulvaloredegli
attributiscrivendolitragraffeamarginedellaclasseo
dellassociazione
{brevedescrizioneinlinguaggionaturaleopseudocodice}
Studente Vecchio
Vecchio Ordinam.
Ordinam.
Studente

Nome
Nome

Cognome
Matricola
CorsodiLaurea
{ifCorsodiLaurea=InformaticaalloraMatricola=0801}
31

MasterinICT

Classdiagram(es.)

Ordine
data
*
prepagato
numero:String

prezzo:Denaro

spedisci()
chiudi()

Azienda
P. IVA

Vincolo

venditore

Privato
cod. fiscale

Sottoclasse

{credito()==basso}

0..1

Impiegato

Linea dOrdine
quantit
soddisfatto:Boolea
n

Generalizzazione

Navigabilit

{if Ordine.cliente.credito
basso allora
Ordine.prepagato deve
essere true}

Superclasse

Cliente
nome
indirizzo
credito():String

Prodotto

Molteplicit
opzionale

prezzo:Den
aro
32

MasterinICT

ClassiassociativeI

Talvoltasarebbecomodopoteraggiungereattributiaduna
associazionepiuttostochealleclassicoinvolte.Perfarquestocil
costruttodellaclasseassociativa,ossiaunaclassederivatadauna
associazione.
Persona

Datore
di lavoro

Impiego
periodo:intervallo_di_tem
po

Classe
associativa

33

MasterinICT

ClassiassociativeII

Il motivo per cui sono state introdotte le classi associative consiste nel
fatto che esse sottintendono un vincolo aggiuntivo, ossia il fatto che ci
pu essere solo unistanza della classe di associazione fra ogni coppia di
oggetti associati.

Persona

Datore di
lavoro

Impiego
periodo:intervallo_di_tempo

34

MasterinICT

ClassiassociativeIII

Esempio:

Conquestanotazione
indichiamoche
lassociazionepossiede
alcuniattributi.

Nonsitrattadiattributidellostudente
perchcambianodacorsoacorso.N
sonoattributidelcorso(ades.ogni
corsofrequentatodastudentidiversi
inannidiversi)

35

MasterinICT

AggregazioneI

Euncasoparticolarediassociazionemoltocomuneche
significa:uninsiemedi.
Esempio:comedirecheunautomobilehaunmotoree
quattroruote.Siailmotorecheleruotecontinuanoadavere
dignitedesistenzapropriaanchealdildelloggetto
automobile.Ladistruzionedellautomobile,noncomporta
automaticamentequelladellesueparti

Siindicaconun
rombovuoto

36

MasterinICT

AggregazioneII

37

MasterinICT

ComposizioneI

Euncasoparticolarediaggregazionechesignifica:
compostoda".
Icomponentinonpossonoesisteresenzailcontenitore
Laproprietdapartedelcontenenteesclusiva
Lamolteplicitdallatodellaggregatodeveessere=1
Puesserequalsiasiperglielementicomponenti

una relazione pi forte dellaggregazione, loggetto parte


appartiene ad un solo tutto e le parti hanno lo stesso ciclo di vita
dellinsieme.Allattodelladistruzionedelloggettoprincipalesihala
propagazionedelladistruzioneaglioggettiparte.

Siindicaconun
rombopieno
38

MasterinICT

ComposizioneII

Esempio:

39

MasterinICT

AggregazioneeComposizione

Perevitarediriempireildiagrammadilineedi
aggregazioneecomposizionepossibileusareun"albero

40

MasterinICT

AggregazioneeComposizione(es.1)

La cancellazione di una istanza della classe Poligono viene


estesa ad ogni suo Punto, ma non allo Stile ad esso associato

3..*

Punto

Composizione
Cardinalit 1
sottintesa

Poligono
*

Aggregazione

Cerchio

Stile
colore
1 pieno

raggio
1

Unistanza della classe Stile pu, invece, essere condivisa tra


Poligono e Cerchio
41

MasterinICT

Interfacceerealizzazioni

Un'interfaccia viene modellata allo stesso modo in cui viene


modellato il comportamento di una classe e rappresenta un
insiemedioperazionicheunaclasseoffreadaltreclassi
Un'interfaccia non ha attributi ma soltanto operazioni (metodi). In
UMLperrappresentareleinterfaccesiutilizzaunrettangoloconla
dicitura interface o un piccolo cerchio (notazione lollipop, a
leccalecca).

La relazione tra una classe ed un'interfaccia viene definita


realizzazione.Talerelazionevisualizzatanelmodellodauna
linea tratteggiata con un triangolo largo aperto costruito sul
lato dell'interfaccia ocon una linea nella notazione compatta
lollipop.
realizzazione

notazione
lollipop
Nome
classe
42

MasterinICT

Interfacceerealizzazioni(es.)

La tastiera del computer un tipico esempio di realizzazione di una


interfaccia. La pressione di un tasto (KeyStroke) rappresenta
un'operazione che stata definita dallinterdaccia Macchina per
scrivere. Loperazione KeyStroke() viene realizzata anche sulla
tastiera dei computer. D'altra parte sulla tastiera dei computer si
trovano un insieme di operazioni che non appartengono alla
macchinaperscrivere(Ctrl,Alt,PageUp,PageDown,ecc.)
Tastiera

realizzazione

Marca
Numero di tasti
KeyStroke()
Ctrl()
Alt()
PgUp()
PgDn()

<<interface>>
Macchina da scrivere
KeyStroke()

notazione
lollipop

Macchina da
scrivere
Tastiera
43

MasterinICT

Visibilitdiattributiedoperazioni

Lavisibilitspecificaleregolesecondolequaliilrelativoattributo
accessibiledapartedialtrioggetti.Inparticolare,letipologiedivisibilit
previstesono:
Pubblica(+):lattributoaccessibiledaqualsiasialtrooggettodotatodi
riferimentoalloggettochecontienelattributoinquestione;
Privata():lattributoaccessibilesoloallinternodellaclassedi
appartenenza(dichiarante);
Protetta(#):lattributoaccessibiledatutteleistanzedelleclassiche
ereditanodaquellaincuilattributodefinito;
Package(~):lattributoaccessibiledaqualsiasialtrooggettoistanza
diclassiappartenentiallostessopackageoinunaltroadessoannidato
aqualsiasilivello.

Lavisibilitpuessereindicataopzionalmentedavantialnomediattributied
operazioni.
+prezzo:Denaro
#ImpostaPrezzo(prezzo:Denaro)
44

MasterinICT

EsempioVisibilit

EsisteunacorrispondenzatralarappresentazioneUMLdi
unaclasseelimplementazioneconunlinguaggioOO(Es.
Java)
publicclassFattura{
publicfloatimporto;
publicDatedata=newDate();
publicStringcliente;
staticprivateint
fatture_emesse=0;
publicFattura(){
fatture_emesse++;
}
//Altrimetodi
//...
45

MasterinICT

Visibilit:problemi

LusodelconcettodivisibilitinUMLcomplicatodalfattoche
linguaggiOOdiversi,purusandolestesseparolechiavepublic,
privateeprotecteddannoadessesignificatisottilmentediversi
oppurehannoulteriorilivellidivisibilit
AtitolodiesempiosiconsiderilavisibilitpackageinJava,oppureil
concettodiclassefriendoimplementationinC++

PerquestolavisibilitdiundiagrammaUMLdevefarriferimento
alleregolediunospecificolinguaggio

46

MasterinICT

Classdiagram:riassuntoI

Puesseredefinitoalivellidiversi,concettuale,dispecificae
diimplementazione
Descriveiltipodeglioggettichecompongonoilsistema,con
tutti gli attributi e le operazioni (ed eventualmente la loro
visibilit),nonchlerelazionistatichetradiloro(associazioni
egeneralizzazioni)
Le associazioni sono dotate di molteplicit ai loro capi e
possonoavereunanavigabilit

47

MasterinICT

Classdiagram:riassuntoII

Si possono esprimere vincoli in linguaggio naturale o


pseudocodice
Esistonounaseriedicostruttiavanzatipermodellare:
classiassociative
aggregazioniecomposizioni
interfacceerealizzazioni

48

MasterinICT

GlierroripicomuniI

Leggendolespecifichedelsistemanonsempre
chiarocosameritidiesseremodellatocomeuna
classeecosano
Unaclasserappresentaunconcettoautonomoe
importante.
Seilconcettononautonomo,forsevamodellatocome
unattributodiunaclasse
Es:lindirizzodiunapersona.Lindirizzodasolovuoldire
poco,hasensoperchlegatoallapersona.QuindiPersona
laclasse,Indirizzounattributo

49

MasterinICT

GlierroripicomuniII

Lastessacosavalepergliattributiedimetodi,occorre
mantenereilgiustolivellodiastrazione
InunaclassePersonapiuttostocheavereimetodi
TrovaVia()
TrovaNumeroCivico()
TrovaCap()

sipupensareadununicometodo
TrovaIndirizzoCompleto()

50

You might also like