You are on page 1of 9

Dijagrami klasa

Dijagram klasa je UML dijagram koji sadri klase, interfejse, pakete i njihove meusobne odnose koji daju logiki pogled na ceo softverski sistem, ili na neku njegovu funkcionalnost. Svrha dijagrama klasa je da na pojednostavljen nain prikae klase koje se nalaze u jednoj aplikaciji. Dijagrami klasa prikazuju statiku strukturu sistemu u obliku klasa i relacija izmeu njih. Klasa opisuje skup objekata a relacija opisuje skup veza. U objektno orjentisanim aplikacijama, klase imaju atribute (pripadajue varijable), metode (pripadajue funkcije) i relacije sa drugim klasama. UML klasni dijagram moe relativno lako prikazati sve ove inioce. Osnovni element klasnog dijagrama je ikonica koja predstavlja klasu. Ova ikonica je predstavljena na sledeoj slici:

Ikona za klasu je jednostavno pravougaonik koje je podeljen u tri dela. Skroz gornji deo sadri ime klase. Srednji deo sadri listu atributa (pripadajue varijable), a donji deo sadri listu metoda (pripadajue funkcije). U mnogim dijagramima se donje dve oblasti izostavljaju. ak i kada su prisutne, one obino ne prikazuju svaki atribut ili metodu. Cilj je da se prikau samo oni atributi i metode koje su korisne za dati dijagram. Mogunost da se skrati ikona je jedno od obeleja UML-a. Svaki dijagram ima svoju svrhu. Ta svrha moe biti da se predstavi odreeni deo sistema, ili da se uopteno prikae ceo sistem. Ikone za klase se u datim dijagramima skrauju po potrebi. Uglavnom ne postoji potreba da se prikae svaki atribut i metoda klase u bilo kom dijagramu. Sledea slika prikazuje tipian UML opis klase koja predstavlja krug:

Primeuje se da svaka varijabla ima iza sebe tip varijable. Ukoliko je tip suvian ili nepotreban, moe se izostaviti. Takoe su metode predstavljene sa tipom povratne vrednosti koji isto moe biti izostavljen.

Kreiranje dijagrama klasa Da bi kreirali novi dijagram klasa iz menija u PowerDesigner-u biramo File New Model da bi se prikazao prozor New Model kao na sledeoj slici.

U listi tipova modela na levoj strani prozora biramo "Object-Oriented Model". U polju "Model name:" upisujemo ime novog modela koji kreiramo. Kod modela koji moe biti korien za generisanje koda, je izveden iz ovog imena u skladu sa konvencijama imenovanja modela. Sledei korak je odabir objektnog jezika iz liste i odabir jedne od dve ponuene opcije za vidljivost promena u objektnom jeziku. Prva opcija podrazumeva da se promene u jeziku vide u svim povezanim objektno orjentisanim modelima, dok druga opcija govori da su promene vidljive samo u okviru datog modela. Nakon ovoga se bira kog tipa e biti prvi dijagram u modelu. Za kreiranje dijagrama klasa biramo "Class Diagram". Potvrujemo podeavanje klikom na taster "OK".

Objekti u dijagramu klasa U dijagramu klasa se najee kreiraju sledei objekti: Objekat Klasa Alat Simbol Opis Skup objekata koji dele iste atribute, operacije, metode i relacije

Interfejs

Opisuje spolja vidljive operacije klase, objekta ili drugog entiteta bez specifikacije unutranje strukture Veza izmeu klasa koja pokazuje da klasa potomak deli strukturu i ponaanje definisano u jednoj ili vie klasa roditelja Strukturalna veza izmeu objekata koji pripadaju razliitim klasama Forma asocijacije koja specificira celina / deo relaciju izmeu klase i agregisane klase (npr. automobil ima motor i tokove) Forma agregacije ali sa jakim posedovanjem i istim ivotnim vekom delova i celine (delovi ive i umiru sa celinom - npr. dostava i putanja dostave) Relacija izmeu dva elementa u modelu pri emu promena jednog elementa ima uticaj na drugi element Klasa implementira metode navedene u interfejsu

Generalizacija

Asocijacija Agregacija

Kompozicija

Zavisnost

Realizacija

Klasa Klasa predstavlja opis skupa objekata koji imaju slinu strukturu i ponaanje, i dele iste atribute, operacije, relacije i semantiku. Struktura klase je opisana njenim atributima i asocijacijama, a njeno ponaanje je opisano njenim operacijama. Klase i relacije koje se kreiraju meu njima, formiraju osnovnu strukturu objektno orjentisanog modela. Klasa definie koncept unutar aplikacije koji se modeluje, kao to je npr: fiziki pojam (npr. automobil) poslovni pojam (npr. narudbina) logiki pojam (npr. raspored emitovanja) ponaanje (npr. zadatak)

Sledei primer predstavlja klasu Aircraft sa atributima range i length i operacijom startengines.

Aircraft - range : int - length : int + startengines () : void


Osobine klase se mogu menjati iz njene stranice sa osobinama. Da bi otvorili ovu stranicu dvokliknemo na simbol koji predstavlja klasu na radnoj povrini. Nakon ovoga se otvara prozor kao na sledeoj slici:

Prozor je izdeljen na tabove pri emu se najee koriste sledee osobine: General o Name - odreuje ime stavke koje treba da bude jasno i precizno o Code - odreuje tehniko ime objekta, koje e se koristiti kod generisanja koda i skripti

o Extends - odreuje klasu roditelja (sa kojom je data klasa povezana putem generalizacije) o Visibility - odreuje vidljivost objekta. Ponuene opcije su: Private - vidljiv samo sebi Protected - vidljiv sebi i nasleenim objektima Package - vidljiv svim objektima u istom paketu Public - vidljiv svim objektima o Cardinality - odreuje broj instanci koje klasa moe imati. Moe se birati izmeu: 0..1 - nijedna ili jedna 0..* - nijedna ili neogranien broj 1..1 - jedna 1..* - jedna do neogranienog broja * - neogranien broj Attributes - slui za dodavanje novih atributa koji pripadaju klasi Operations - slui za dodavanje novih metoda koje pripadaju klasi

Atribut je imenovana osobina klase (ili interfejsa) koja opisuje njene karakteristike. Klase (ili interfejsi) mogu imati nula ili vie atributa. Svaki objekat u klasi ima iste atribute, ali vrednosti atributa mogu biti razliite. Ime atributa unutar klase mora biti jedinstveno. Razlika atributa kod klasa i interfejsa je u tome to interfejsi mogu imati samo konstantne atribute. Interfejs Interfejs je slian klasi ali se koristi da definie specifikaciju ponaanja. On ne sadri implementaciju. Interfejs sadri nazive metoda. Klasa moe implementirati jedan ili vie interfejsa. Da bi klasa implementirala jedan interfejs ona mora implementirati sve metode koje su navedene u interfejsu.
Designated + firstName : string + lastName : string + getFirstName () : string + getLastName () : string + setName () : int

Employee status ss_number salary start_date : : : : boolean string int date

+ <<Implement>> getFirstName () : string + <<Implement>> getLastName () : string + <<Implement>> setName () : int

Osobine interfejsa se mogu menjati iz njegove stranice sa osobinama. Da bi otvorili ovu stranicu dvokliknemo na simbol koji predstavlja klasu na radnoj povrini. Prozor je izdeljen na tabove pri emu su najee koriene osobine sline kao i kod klasa. Asocijacija Asocijacija predstavlja relaciju prikazuje kao puna linija izmeu dva svakom kraju dodeli ime koje opisuje posmatra kompaniju u kojoj radi kao zaposlenog.
Company - Name : string - Activity : string - Address : string + hire () : int + fire () : int + pay () : int 1..1 employer 1..* employee Person - Name : string - Job : string - SSnumber : int

izmeu klasa ili izmeu klasa i interfejsa. Ona se objekta. Asocijacija se moe imenovati tako to se funkciju klase kako je vidi druga klasa. Npr. osoba poslodavca, dok ta kompanija posmatra osobu kao

Navigacija izmeu instanci u gornjem primeru je mogua u oba smera. Ona omoguava kompaniji da dobije listu svojih radnika, kao i svakom radniku da vidi u kojoj kompaniji radi. Kod asocijacije je sutina da jedna klasa ima kao atribut instancu druge klase. Kada je veza izmeu klasa viestruka, onda je tip instance druge klase obino niz instanci klase. U gornjem primeru ovo bi bilo: public class Company { public String Name; public String Activity; public String Address; public Person[] employee; Agregacija Ova relacija prikazuje da je agregisana klasa (klasa koju dodiruje beli romb) u nekom smislu "cela", a da je druga klasa u relaciji u nekom smislu "deo" cele klase. Agregacija je vrsta relacija asocijacije koja je vie odreena u odnosu na asocijaciju. To je asocijacija koja predstavlja celina / deo relaciju. Agregacija ne moe ukljuiti vie od dve klase. Agregacija se moe pojaviti kada je klasa kolekcija ili kontejner druge klase, ali gde sadrana klasa nema jaku zavisnost trajanja ivotnog ciklusa sa kontejnerom. Ova znai da ako kontejner bude uniten, sadraj ne mora biti uniten.

Department 0..* 1..*

Profesor

Kompozicija Kompozicija je jaa varijanta relacije asocijacije koja je jo vie odreena od agregacije. Ona obino ima jaku zavisnost ivotnog ciklusa izmeu instanci klase kontejnera i instanci sadrane klase. Ukoliko se uniti kontejner, unitena je i klasa koju on sadri. Svaka instanca tipa Circle ini se da sadri instancu tipa Point. Ova relacija je poznata kao kompozicija. On se moe prikazati u UML-u pomou odnosa meu klasama. Sledea slika prikazuje relaciju kompozicije.

Circle 0..1 0..*

Point

Crni romb predstavlja kompoziciju. On je postavljen na klasu Circle jer je klasa Circle kreirana od klase Point. Relacije kompozicije predstavljaju jake forme relacija asocijacije. Kompozicija je relacija celina/deo. U ovom sluaju Circle predstavlja celinu a Point predstavlja deo klase Circle. Kompozicija ukazuje da ivotni vek Point zavisi od Circle. Ovo znai da ukoliko je Circle uniten, zajedno sa njom e biti uniten i Point . Generalizacija Generalizacija je veza izmeu opteg elementa (roditelja) i vie odreenog elementa (deteta). Relacija generalizacije se koristi kada vie objekata ima sline osobine. Generalizacija u UML-u je predstavljena pomou karakteristine trougaone strelice. Ova strelica upuuje na osnovnu klasu. Jedna ili vie linija koje kreu od osnovne klase povezuju ovu klasu sa klasama koje je nasleuju. Generalizacija se moe kreirati izmeu dve klase ili izmeu dva interfejsa.

Animal

Cat

Dog

Bird

Zavisnost Zavisnost je semantika zavisnost izmeu dva objekta u kojoj izmena u jednom objektu moe uticati na znaenje drugog objekta. U dijagramima klasa, zavisnost se moe kreirati izmeu klase i interfejsa, dve klase ili dva interfejsa. To je slabija forma relacije koja ukazuje da jedna klasa zavisi od druge jer je koristi u odreenom vremenskom trenutku. Zavisnost postoji ako je klasa parametar u pozivu metode, ili varijabla u okviru metode druge klase.
Car - Model : string - Manufacturer : string + turnRight () : void + turnLeft () : void Wheel - Size : int

Realizacija Realizacija je relacija izmeu klase i interfejsa. U realizaciji klasa implementira metode navedene u interfejsu. Interfejs se naziva element specifikacije a klasa element implementacije.

Designated + firstName : string + lastName : string + getFirstName () : string + getLastName () : string + setName () : int

Employee status ss_number salary start_date : : : : boolean string int date

+ <<Implement>> getFirstName () : string + <<Implement>> getLastName () : string + <<Implement>> setName () : int

Zadatak: Kreirati dijagram klasa koji prikazuje raunanje obima i povrine za pravougaonik, kvadrat i krug. Ove klase su nasleene iz klase oblik. Vrednosti stranica i poluprenika su zadate preko koordinata.

You might also like