Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
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
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
Siindicaconun
rombopieno
38
MasterinICT
ComposizioneII
Esempio:
39
MasterinICT
AggregazioneeComposizione
Perevitarediriempireildiagrammadilineedi
aggregazioneecomposizionepossibileusareun"albero
40
MasterinICT
AggregazioneeComposizione(es.1)
3..*
Punto
Composizione
Cardinalit 1
sottintesa
Poligono
*
Aggregazione
Cerchio
Stile
colore
1 pieno
raggio
1
MasterinICT
Interfacceerealizzazioni
notazione
lollipop
Nome
classe
42
MasterinICT
Interfacceerealizzazioni(es.)
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
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