Class Diagram ehk Klassiskeem

Klassiskeemid on mis tahes objektorienteeritud lahenduse peamine ehitusplokk.
See näitab süsteemi klasse, iga klassi atribuute ja toiminguid ning iga klassi vahelist seost.

Seda kasutatakse rakenduse struktuuri üldiseks kontseptuaalseks modelleerimiseks ja
üksikasjalikuks modelleerimiseks, mudelite tõlkimiseks programmeerimiskoodiks.
Klassiskeeme saab kasutada ka andmete modelleerimiseks.

Klassi märkimine
Klass koosneb kolmest osast:
- Klassi nimi, see kuvatakse esimeses sektsioonis.
- Klassi atribuudid, need on näidatud teises sektsioonis.
Atribuudi tüüp näidatakse kooloni järel.
- Klassi operatsioonid (meetodid)
Meetodid näidatakse kolmandas sektsioonis. Need on teenused, mida klass pakub.
Meetodi tagastustüüp näidatakse kooloni järel meetodi lõpus.
Meetodi parameetrite tagastustüüp kuvatakse parameetri nimele järgneva kooloni järel.

y u no see? buy internet

- MyClassil on 3 atribuuti ja 3 meetodit
- op2 parameeter p3 on tüüpi int
- op2 tagastab float-i
- op3 tagastab osuti (tähistatud *) klassile 6

Klassisuhted
Klass võib olla seotud ühe või mitme suhtega teiste klassidega.
Seos võib olla üks järgmistest tüüpidest:

Seosetüüp Graafiline esitus
Pärand (või üldistus):
- Esindab suhet "on mis".
- Abstraktne klassi nimi on näidatud kaldkirjas.
- SubClass1 ja SubClass2 on superklassi spetsialiseerumisalad.
- Pidev joon õõnsa nooleotsaga, mis osutab lapselt vanemaklassile.
y u no see? buy internet
Lihtne assotsiatsioon:
- Struktuurne seos kahe klassi vahel.
- Class1 ja Class2 vahel on seos
- Kaht klassi ühendab pidev joon
y u no see? buy internet
Agregatsioon:
- Eriline assotsiatsiooniliik. See esindab suhet "on osa".
- Class2 on osa Class1-st.
- Paljusid Class2 juhtumeid (tähistatud tähega *) saab seostada Class1-ga.
- Klassi 1 ja klassi 2 objektidel on eraldi eluiga.
- Pidev joon täitmata teemandiga
y u no see? buy internet
Kompositsioon:
- Agregatsiooni eritüüp, kus osad hävivad, kui tervik hävib.
- Klassi 2 objektid elavad ja surevad koos Class1-ga.
- Klass 2 ei saa ise seista.
- Pidev joon täidetud teemandiga
y u no see? buy internet
Sõltuvus:
- Esineb kahe klassi vahel, kui ühe klassi muudatused
võivad põhjustada muudatusi teises (kuid mitte vastupidi).
- Klass 1 sõltub klassist 2
- Katkendjoon avatud noolega
y u no see? buy internet
Suhete nimed
Seoste nimed kirjutatakse seose joone keskele.
Head seoste nimed on mõttekad, kui loete need valjusti:
"Iga tabel sisaldab teatud arvu lahtreid",
Sageli on neil väike nooleots, mis näitab suunda, millises suunas seost lugeda, nt
avaldised tulevad välja väärtuseks, kuid väärtused ei tule välja avaldiseks.

y u no see? buy internet

Rollid
Roll on ühenduse suunav eesmärk.
Rollid on kirjutatud assotsiatsioonijoone lõppu ja kirjeldavad selle klassi eesmärki suhtes.
Näiteks lahter on seotud avaldisega. Seose olemus seisneb selles, et avaldis on lahtri valem.

Klassi atribuutide ja operatsioonide nähtavus
Objektorienteeritud disainis on olemas atribuutide ja operatsioonide nähtavuse märge.
UML tuvastab neli nähtavuse tüüpi: avalik, kaitstud, privaatne ja pakett.
Klassi atribuudi ja operatsiooni nime ees olevad sümbolid +, -, # ja ~
tähistavad atribuudi ja operatsiooni nähtavust:

+ tähistab avalikke atribuute või toiminguid
- tähistab privaatseid atribuute või toiminguid
# tähistab kaitstud atribuute või toiminguid
~ tähistab paketi atribuute või toiminguid

y u no see? buy internet

MyClassName atribuut1 ja op1 on avalikud
atribuut3 ja op3 on kaitstud.
atribuut2 ja op2 on privaatsed.

Paljusus
Kui palju iga klassi objektide suhetes osaleb ja paljusust saab väljendada järgmiselt:
Täpselt üks - 1
Null või üks - 0...1
Paljud – 0..* või *
Üks või mitu - 1..*
Täpne arv – nt. 3..4 või 6
Või keeruline suhe – nt. 0..1, 3..4, 6.* tähendaks suvalist arvu objekte peale 2 või 5

Paljususe näide:
Nõue: Üliõpilane võib läbida mitu kursust ja ühele kursusele saab registreeruda palju õpilasi.
Allolevas näites kirjeldab klassiskeem (vasakul) ülaltoodud staatilise mudeli nõude väidet,
samas kui objektiskeem (paremal) näitab hetktõmmist (klassiskeemi näide) vastavalt kursustele
Tarkvaratehnika ja Andmebaasihaldus kursustele registreerumisest.

y u no see? buy internet

Agregatsiooninäide – arvutiosad
Agregatsioon on assotsiatsiooni erijuhtum, mis tähistab "koosneb" hierarhiat
Agregaat on vanemklass, komponendid on lasteklassid:

y u no see? buy internet

Pärimise näide – rakkude taksonoomia
Pärand on veel üks erijuhtum seose kohta, mis tähistab "omamoodi" hierarhiat
Pärimine lihtsustab analüüsimudelit, võttes kasutusele taksonoomia
Alamklassid pärivad vanemklassi atribuudid ja toimingud.

y u no see? buy internet

Klassiskeemi näide
Klassiskeemil võib olla ka klasside või suhete juurde lisatud märkmeid. Märkused on näidatud hallina.

y u no see? buy internet

Ülaltoodud klassidiagrammi tähendust saame tõlgendada punktid läbi lugedes järgmiselt:
Shape on abstraktne klass. See on näidatud kaldkirjas.
Shape on superklass. Ring, ristkülik ja hulknurk on tuletatud vormist Shape. Teisisõnu, ring on kujund. See on üldistus-/pärimissuhe.
DialogBoxi ja DataControlleri vahel on seos.
Kuju on osa aknast. See on agregaatsuhe. Kuju võib eksisteerida ka ilma aknata.
Punkt on osa ringist. See on kompositsioonisuhe. Punkt ei saa eksisteerida ilma ringita.
Aken sõltub sündmusest. Sündmus ei sõltu aga aknast.
Ringi atribuudid on raadius ja keskpunkt. See on olemiklass.
Circle'i meetodi nimed on area(), circum(), setCenter() ja setRadius().
Ringi parameetri raadius on ujuki tüüpi parameeter.
Klassi Circle meetod area() tagastab väärtuse double tüüpi.
Ristküliku atribuudid ja meetodite nimed on peidetud. Ka mõnel teisel skeemil oleval klassil on oma atribuudid ja meetodite nimed peidetud.

allikad: Creately Wikipedia Visual Paradigm