Class Diagrams Programming
Class Diagrams Programming
Dijagrami klasa
Class diagrams
Uvod
Dijagrami klasa i objekata su najpopularnija tehnika koritena u OOD Dijagrami klasa prikazuju tipove objekata u sustavu te statike odnose meu njima:
asocijacije podtipove (hijerarhijski odnos)
Perspektive
Tri perspektive koje se koriste pri crtanju dijagrama klasa:
1. koncepcijska 2. specifikacijska 3. implementacijska
Koncepcijska perspektiva
Dijagram klasa predstavlja koncept promatrane domene (domain model-a) Pojavljuju se klase koje implementiraju sustav, no s vrlo malo ili nimalo veze sa softverom koji e implementirati taj sustav
Specifikacijska perspektiva
Promatraju se suelja, ali ne i implementacija U praksi se esto zanemaruje ta razlika U jezicima poput Java i C#, ta razlika je ugraena u jezik kroz mehanizam nasljeivanja suelja (interface). U C++ bi tome trebale biti analogne apstraktne klase esto se u ovom kontekstu koristi rije tip
(type)
Implementacijska perspektiva
Promatraju se stvarne klase koje se implementiraju u kdu, zajedno s njihovom internom implementacijom
Perspektive i UML
Iako UML ne podrava perspektive, mogue ih je naznaiti koritenjem
stereotipa
Klasa
Grafiki se predstavlja pravokutnikom, s nazivom pri vrhu Velika poetna slova u nazivu
OsobniAutomobil
Atributi klase
Atributi su svojstva klase, tj. vrijednosti sadrane u klasi Navode se pravokutniku ispod naziva klase:
OsobniAutomobil
Tip atributa
Moemo navesti i tip atributa klase:
OsobniAutomobil marka: String tip: String bojaKaroserije brojVrata: Integer tipMotora zapreminaMotora: Integer
10
Instanca klase
Instanca klase (objekt) ima ime, a atributi imaju konkretne vrijednosti Objekt se prikazuje s podcrtanim nazivom:
mojAuto : OsobniAutomobil
marka = "Zastava" tip = "Tempo 101" bojaKaroserije = plava brojVrata = 5 tipMotora = benzinski zapreminaMotora = 750
OOM - Dijagrami klasa 11
Operacije
Operacije se navode u donjem pravokutniku:
OsobniAutomobil
marka tip bojaKaroserije brojVrata tipMotora zapreminaMotora Vozi() NatociGorivo() UkrcajPutnike()
OOM - Dijagrami klasa 12
Potpis operacija
U zagradama se mogu navesti tipovi i nazivi argumenata, a iza dvotoke se moe navesti povratni tip:
OsobniAutomobil
marka tip bojaKaroserije brojVrata tipMotora zapreminaMotora Vozi(Float brzina) NatociGorivo(Integer litara) : Integer UkrcajPutnike(Integer grla)
OOM - Dijagrami klasa 13
Pojednostavljeni prikaz
esto je praktino pojednostavniti prikaz klase ili objekta:
OsobniAutomobil OsobniAutomobil marka ...
Vozi() ...
OOM - Dijagrami klasa 14
Koritenje stereotipa
Dugi popisi atributa i operacija se mogu sistematizirati koritenjem stereotipa:
OsobniAutomobil <<ProizvodjackiPodaci>> marka tip bojaKaroserije brojVrata <<podaciMotora>> tipMotora zapreminaMotora UkrcajPutnike() Vozi() NatociGorivo()
OOM - Dijagrami klasa 15
Definiranje vidljivosti
Vidljivost atributa ili operacije definira se predmetkom:
+ (public) # (protected) - (private) ~ (package)
OsobniAutomobil #marka: String #tip: String #bojaKaroserije #brojVrata: Integer #tipMotora #zapreminaMotora +DajOpisVozila() +UkrcajPutnike() +Vozi() +NatociGorivo()
16
Podrazumijevana vrijednost
Za atribute se moe definirati podrazumijevana (default) vrijednost:
OsobniAutomobil
17
Dodavanje napomena
Uz dijagrame je mogue dodati napomene:
OsobniAutomobil <<ProizvodjackiPodaci>> marka tip bojaKaroserije brojVrata <<podaciMotora>> tipMotora zapreminaMotora UkrcajPutnike() Vozi() NatociGorivo()
18
Asocijacije
Asocijacije predstavljaju veze meu instancama klase. Npr. voza vozi automobil:
OsobniAutomobil Vozac
19
Krajevi asocijacija
Svaka asocijacija ima dva kraja (association end) koji su pridrueni klasama Kraj moe biti eksplicitno imenovan: tzv. naziv uloge (role name):
vozac OsobniAutomobil Osoba putnik
OOM - Dijagrami klasa 20
Osoba
Viekratnost asocijacije
Svaki kraj asocijacije ima viekratnost (multiplicity) koja kae koliko objekata moe sudjelovati u zadanoj asocijaciji:
1 1 OsobniAutomobil 1 vozac Osoba
1..*
putnik
Osoba
21
Primjeri
Muz 1 Profesor 1 Osobni bankar 1 Bicikl 1 KutijaZaJaja 1
sadri ima predaje u braku
Zena 1 Student *
opsluuje
Klijent
22
Asocijacije u perspektivama
U konceptualnoj perspektivi, asocijacije naznauju vezu meu klasama U specifikacijskoj perspektivi, asocijacije prikazuju odgovornosti pojedinih klasa U implementacijskoj perspektivi, asocijacije naznauju implementacijske detalje asocijacije
OOM - Dijagrami klasa 23
Usmjerenost asocijacije
U implementacijskoj perspektivi esto se strelicom navodi usmjerenost asocijacije Na primjer, u narudbi je zapisan podatak o kupcu, ali kupca nakon to je naruio, ne zanima sama narudba:
Narudzba Kupac
24
Dvosmjerna asocijacija
Ako oba objekta imaju vezu prema drugome, radi se o dvosmjernoj asocijaciji
(bidirectional)
11
25
Uvjetovana asocijacija
Student
Automobil {OR}
parkira parkira
Garaza
Parkiraliste
26
Kvalificirana asocijacija
Kada postoji viekratnost jedan-na-vie, odabir jednog od objekta zasniva se na nekom uvjetu:
Recepcioner
+BrojRezervacije
RezervacijaSobe 1 *
27
Refleksna asocijacija
putnici OsobaUautomobilu
28
Nasljeivanje (generalizacija)
Generalizacija se simbolizira punom strelicom na punoj liniji, na kraju koji gleda prema baznoj klasi:
Bazna
Izvedena
29
Nasljeivanje (generalizacija)
Vozilo
PutnickoVozilo
TeretnoVozilo
PosebnoVozilo
OsobnoVozilo
Autobus
Kamion
30
Apstraktne klase
Vozilo
TeretnoVozilo
PosebnoVozilo
OsobnoVozilo
Autobus
Kamion
31
Ovisnosti
Kada jedna klasa koristi drugu (npr. kada se u potpisu operacija prve klasa pojavi druga klasa) Simbolizira se otvorenom strelicom na kraju crtkane linije:
32
Pravila ogranienja
Dijagrami klasa definiraju ogranienja Asocijacije, atributi, generalizacija ukljuuju dosta ogranienja. Npr.:
ili druge strane postojanje nekog atributa moe ukazivati na ogranienje iz generalizacije (hijerarhije) se mogu iitati ogranienja koja neka izvedena klasa ima, a druga nema
OOM - Dijagrami klasa
33
Ogranienja
Dodatna ogranienja se u UML dijagramu mogu navesti unutar vitiastih zagrada { i } Ogranienja su povezana s Principom dizajna prema ugovoru (Design by contract) vidi zasebnu PP prezentaciju!
34
Iako su dijagrami klasa vrlo popularni, valja biti umjeren s njihovom primjenom:
Ne treba koristiti svu raspoloivu notaciju
treba poeti s osnovnim konceptima: klase, asocijacije atributi, hijerarhije i ogranienja Dijagrame crtati za odgovarajuu perspektivu Usredotoiti se samo na kljune stvari, a ne crtati dijagrame za sve mogue klase
35