U inženjeringu softvera, dijagram klasa ili klasni dijagram u objedinjenom jeziku za modelovanje (UML) je tip dijagrama statičke strukture koji opisuje strukturu sistema prikazivanjem klasa sistema, njihovih atributa, operacija (metoda) i odnosa između objekata.

Klasa u dijagramu klasa sa tri dela

Dijagram klasa je glavni gradivni blok objektno-orijentisanog modelovanja. Koristi se za opšte konceputalno modelovanje strukture aplikacije, kao i za detaljno modelovanje prevođenja modela u programski kod. Dijagrami klasa mogu se koristiti i za modelovanje podataka.[1] Klase u dijagramu klasa predstavljaju glavne elemente, interakcije u aplikaciji i klase koje treba da budu isprogramirane.

U dijagramu, klase su predstavljene kutijama koje se sastoje iz tri dela:

  • Gornji deo sadrži naziv klase. Ispisan je podebljano i centrirano, a prvo slovo naziva klase je veliko.
  • Srednji deo sadrži atribute klase. Oni su poravnati ulevo, a prvo slovo je malo.
  • Donji deo sadrži operacije koje klasa može da izvrši. One su takođe poravnate ulevo i prvo slovo je malo.

U dizajniranju sistema, određeni broj klasa se identifikuje i grupiše u dijagram klase koji pomaže da se odrede statički odnosi između njih. Uz detaljno modelovanje, klase konceptualnog dizajna se često dele na više potklasa.

Da bi se dalje opisalo ponašanje sistema, ovi dijagrami klasa mogu biti dopunjeni dijagramom stanja ili UML automatom stanja.[2]

Veze uredi

Veza je opšti pojam koji pokriva specifične tipove logičkih veza na dijagramima klase i objekta. UML definiše sledeće odnose:

Veze na nivou instance uredi

Zavisnost uredi

Zavisnost je semantička veza između zavisnih i nezavisnih elemenata modela.[3] Postoji između dva elementa ako promene u definiciji jednog elementa (servera ili cilja) mogu prouzrokovati promene na drugom (klijentu ili izvoru). Ova asocijacija je jednosmerna.

Asocijacija uredi

Asocijacija predstavlja porodicu veza. Binarna asocijacija (sa dva kraja) je normalno predstavljena kao linija. Asocijacija može povezati bilo koji broj klasa. Asocijacija sa tri veze se zove ternarna asocijacija. Asocijacija se može imenovati, a krajevi asocijacije mogu biti ukrašeni imenima uloga, indikatorima vlasništva, višestrukostima i drugim svojstima. Postoje četiri različita tipa asocijacija: dvosmerna, jednosmerna, agregacija (uključuje agregaciju kompozicije) i refleksivna. Dvosmerne i jednosmerne asocijacije su najčešće. Na primer, klasa leta je u asocijaciji sa avionom dvosmerno. Asocijacija predstavlja statički odnos koji se deli između objekata dve klase.

Agregacija uredi

 
Dijagram klase koji pokazuje agregaciju između dve klase. Ovde, profesor „ima” razred koji uči.

Agregacija je varijanta veze asocijacije koja znači „ima”; agregacija je specifičnija od asocijacije. To je asocijacija koja predstavlja deo celine ili deo odnosa. Kao što je prikazano na slici, klasa Profesor (Professor) „ima” klasu Razred (Class) koju uči. Kao vrsta asocijacije, agregacija može biti imenovana i imati iste ukrase kao i asocijacija. Međutim, agregacija ne može uključivati više od dve klase; to mora biti binarna asocijacija. Štaviše, teško da postoji razlika između agregacija i asocijacija prilikom implementovanja, a dijagram može potpuno preskočiti odnose agregacije.[4]

Agregacija se može pojaviti kada je klasa zbirka ili kontejner drugih klasa, ali sadržane klase nemaju snažnu zavisnost životnog ciklusa od kontejnera. Sadržaj kontejnera i dalje postoji kada se kontejner uništi.

U UML-u, ova veza je grafički prikazana kao šuplji dijamantni oblik na strani klase koja sadrži neku klasu, a povezana je sa tom klasom koja je sadržana. Primer: biblioteka i studenti. Ovde student može da postoji bez biblioteke, te je zbog toga odnos između studenta i biblioteke agregacija.

Kompozicija uredi

UML predstava veze kompozicije pokazuje kompoziciju liniju koja spaja klasu koja sadrži i klasu koja je sadržana, sa popunjenim dijamantnim oblikom na strani klase koja sadrži.

Razlike između kompozicije i agregacije uredi

 
Dva dijagrama klasa. Gornji dijagram pokazuje kompoziciju između dve klase: automobil (Car) ima tačno jedan karburator (Carburetor), a karburator može da bude u najviše jednom automobilu (karburatori mogu da postoje kao nezavisni delovi, odvojeni od određenog automobila). Donji dijagram pokazuje agregaciju između dve klase: jezero (Pond) ima nula ili više pataka (Ducks), a patka može da bude u najviše jednom jezeru u određeno vreme.
Kompozicija
  1. Kada pokušavamo da predstavimo stvarne odnose celog dela, npr. motor je deo automobila.
  2. Kada se kontejner uništi, sadržaj se takođe uništava, npr. fakultet i njegovi departmani.
Agregacija
  1. Kada predstavljamo odnos softvera ili baze podataka, npr. model motora automobila MM01 je deo modela automobila AM01, ali model motora MM01 može biti deo i nekog drugog modela automobila.[5]
  2. Kada se kontejner uništi, sadržaj se obično ne uništava, npr. profesor ima studente, kada profesor umre, studenti ne umiru zajedno sa njim.

Veze na nivou klasa uredi

Generalizacija/Nasleđivanje uredi

 
Dijagram klasa koji pokazuje generalizaciju između natklase čovek i potklasa student i profesor.

Ova veza ukazuje da se jedna od dve srodne klase smatra specijalizovanom formom druge, a natklasa se smatra generalizacijom potklase. U praksi, ovo znači da je svaka instanca potklase takođe instanca natklase. Ova vrsta generalizacije može se naći u biološkoj taksonomiji: ljudi su potklasa simijana, koji su potklasa sisara, itd. Ova veza najlakše se shvati frazom „A je B” (čovek je sisar, sisar je životinja).

UML grafički prikaz generalizacije je linija koja spaja natklasu sa potklasom (ili stablo koje povezuje natklasu sa potklasama), a na strani natklase je prazni trougao.

Generalizacija je takođe poznata kao i nasleđivanje. Natklasa u generalizaciji je takođe poznata i kao „roditelj”, superklasa, osnovna klasa ili osnovni tip. Potklasa u specijalizovanoj vezi je tkaođe poznata kao „dete”, potklasa, izvedena klasa, izvedeni tip, nasleđena klasa ili nasleđeni tip.

Primer: „hrast je tip drveta”, „automobil je vrsta vozila”. Generalizacija se može prikazati samo na dijagramima klase i na dijagramima slučajeva korišćenja.

Realizacija/Implementacija uredi

U UML modelovanju, veza realizacije je veza između dva elementa modela, pri čemu jedan element modela (klijent) realizuje (implementuje ili izvršava) ponašanje koje drugi element modela (dobavljač) propisuje.

UML grafički prikaz realizacije je isprekidana linija koja povezuje interfejs sa jednim ili više implementatora, pri čemu je na strani interfejsa šuplji trougao. Otvorena glava strelice koristi se na liniji koja spaja interfejs sa svojim korisnicima i to na strani na kojoj je interfejs. Realizacije se mogu prikazati samo na dijagramima klasa ili komponenti. Realizacija je odnos između klasa, interfejsa, komponenti i paketa koji povezuje element klijenta sa elementom dobavljača. Odnos realizacije između klasa/komponenti i interfejsa pokazuje da klasa/komponenta realizuje operacije koje nudi interfejs.

Opšta veza uredi

Zavisnost uredi

Zavisnost je slabija forma veze koja ukazuje da jedna klasa zavisi od druge zato što je koristi u nekom trenutku u vremenu. Jedna klasa zavisi od druge ako je nezavisna klasa parametarska promenljiva ili lokalna promenljiva metode zavisne klase. Ovo se razlikuje od asocijacije, gde je atribut zavisne klase instanca nezavisne klase. Ponekad je veza između dve klasa veoma slaba. One se uopšte ne implementiraju sa promenljivim članovima. Umesto toga, oni mogu biti implementirani kao članovi argumenata funkcije.

Višestrukost uredi

Ova veza asocijacije ukazuje da (barem) jedna od dve srodne klase upućuje na drugu. Ova veza se obično opisuje kao „A ima B” (mačka ima mačiće, mačići imaju majku mačku).

UML reprezentacija asocijacije je linija koja povezuje dve asocijativne klase. Na svakom kraju linije postoji opciona notacija. Na primer, možemo ukazati, koristeći strelicu, da šiljasti kraj bude vidljiv sa repa strelice. Možemo označiti vlasništvo postavljanjem lopte, ulogu elemenata koju igraju elementi na tom kraju tako što dajemo ime za ulogu i mnogostrukost intsanci tog entiteta (opseg broja objekat akoji učestvuju u asocijaciji iz perspektive drugeg kraja).

0 Nema instanci (retkost)
0..1 Nula ili jedna instanca
1 Tačno jedna instanca
1..1 Tačno jedna instanca
0..* Nula ili više instanci
* Nula ili više instanci
1..* Jedna ili više instanci

Vidi još uredi

Reference uredi

  1. ^ „Database Modeling in UML (Unified Modeling Language)”. www.methodsandtools.com. Pristupljeno 2019-06-12. 
  2. ^ „UML 2 Class Diagrams: An Agile Introduction”. www.agilemodeling.com. Pristupljeno 2019-06-12. 
  3. ^ Fowler (2003) UML Distilled: A Brief Guide to the Standard Object Modeling Language
  4. ^ „UML Class Diagram Tutorial”. www.visual-paradigm.com. Pristupljeno 2019-06-26. 
  5. ^ Goodwin, David. „Modelling and Simulation, p. 26” (PDF). The University of Warwick. Pristupljeno 28. 11. 2015. 

Spoljašnje veze uredi