Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 27

Projektovanje softvera

Dijagrami klasa

Uvod

Dijagram klasa prikazuje skup klasa, interfejsa,


kolaboracija i njihovih relacija
Dijagram klasa je graf sainjen od temena (stvari)
povezanih granama (relacijama)
Specificira logike i statike aspekte modela
Elementi klasnih dijagrama

stvari: klase, interfejsi, kolaboracije, paketi, podsistemi, objekti


relacije: zavisnosti, generalizacije, asocijacije, realizacije

Dijagrami klasa su najei u objektnom modeliranju


Veina alata podrava generisanje skeleta koda
iz dijagrama klasa

Dijagrami klasa

15.10.2006.

Klasifikatori

Klasifikator je

Ne pojavljuju se svi klasifikatori na dijagramima klasa


Konkretni klasifikatori su: klase, interfejsi, tipovi podataka, signali,
komponente, vorovi, sluajevi korienja, podsistemi
Klasifikator ima odeljke, koji se ne moraju svi prikazati

neka klasifikacija instanci sa zajednikom osobinom


mehanizam koji opisuje strukturu i ponaanje
apstraktna metaklasa
prostor imena iji lanovi imaju autribute i operacije
tip koji moe biti u relaciji generalizacije sa drugim
element koji se moe redefinisati
u smislu da se mogu definisati unedeni klasifikatori

odeljci mogu imati svoje nazive, da bi se izbegla dvoznanost


u situaciji kada neki odeljak nedostaje

Dijagrami klasa

15.10.2006.

Klasa

UML 2.0 definicija: klasa je opis skupa objekata


koji dele istu specifikaciju karakteristika (features),
ogranienja (constraints) i semantike

karakteristike: atributi i operacije

Klasa implementira jedan ili vie interfejsa


Klase opisuju apstrakcije iz domena problema
kao i apstrakcije iz domena reenja
Koriste se da reprezentuju softverske stvari,
hardverske stvari i konceptualne stvari
Dijagrami klasa

15.10.2006.

Ikona klase

Ikona klase je pravougaonik podeljen horizontalnim linijama u odeljke


naziv klase
Naziv klase
GeometrijskaFigura

Odgovornosti klase

jednostavan:
<naziv>
sa putanjom:
<naziv paketa>::
<jednostavan naziv>
npr:
java::awt::Rectangle

stavke njenog ugovora


u zasebnom odeljku
slobodan (neformalan) tekst
svaka poinje sa --

karakteristinaTacka
pomeri()
promeniVelicinu()
prikazi()

atributi

operacije

Responsibilities
--geometrijska svojstva
figura u ravni

odgovornosti

Svaka dobro strukturirana klasa bi trebalo da ima


barem jednu i ne vie od nekoliko odgovornosti

Dijagrami klasa

15.10.2006.

Atributi i operacije

Atributi su imenovana svojstva klase koja opisuju opsege vrednosti


koje instance tog svojstva mogu sadrati
Drugi nazivi: lanovi podaci (C++), polja (Java)
Atributi su strukturne karakteristike (features) klase
Notacija: ime, opciono sa tipom i podrazumevanom vrednou
Primer: +izbor:Boolean=false
Operacije su servisi koji se mogu zahtevati od nekog objekta klase
Notacija: potpis koji sadri listu argumenata sa eventualnim
tipovima i podrazumevanim vrednostima, kao i tipom rezultata
Primer:
pomeri(novaPozicija:Pozicija=koordinatniPocetak):Pozicija

Dijagrami klasa

15.10.2006.

Dodatne mogunosti

Potrosac
Klasa moe sadrati prazne odeljke, a moe biti i bez odeljaka
Prazan odeljak atributa/operacija ne znai da ih klasa nema,
ve da nisu relevantni za dati pogled (dijagram)
Potrosac
Mogu se koristiti i tri take (...)
da naznae postojanje dodatnih atributa/operacija
Atributi/operacije se mogu grupisati,
a svakoj grupi moe da prethoditi opisni prefiks
Apstraktna klasa i apstraktna operacija naziv se pie italicom ili {abstract}
Zajedniki lanovi (atributi i operacije) klase piu se podvueno
Pravo pristupa lanu (vidljivost, visibility): znak se pie ispred atributa/operacije:

javni lan:
zatieni lan:
paketski lan:
privatni lan:

+ (podrazumevano)
#
~
-

Dijagrami klasa

15.10.2006.

Tipovi podataka

Tipovi podataka (dataType) su tipovi


ije vrednosti nemaju identitet (diskutabilno)
Vrste tipova podataka:

primitivni tipovi su predefinisani tipovi podataka


nabrojivi tipovi uzimaju vrednost
iz definisanog skupa simbolikih imena
<<dataType>>
Integer

<<primitive>>
int
{vrednosti u opsegu
od 2**31-1 do 2**31}

Dijagrami klasa

<<enumeration>>
Boolean
false
true

15.10.2006.

Osobine klasa

Multiplikativnost je osobina klase koja ograniava broj njenih instanci


Multiplikativnost se navodi u gornjem desnom uglu
Specifine vrednosti multiplikativnosti:

Podrazumevani sluaj je proizvoljan broj instanci


Koren hijerarhije klasa (root) je klasa koja nema roditelje
List hijerarhije klasa (leaf) je klasa koja nema potomke,
tj. ona iz koje se ne moe izvoditi
Osobine isRoot i isLeaf se piu unutar {} u odeljku naziva klase

0 usluna klasa, sadri samo zajednike (statike) atribute i operacije


1 singleton klasa

u UML 2.0: svaki RedefinableElement moe biti isLeaf

Dijagrami klasa

15.10.2006.

Sintaksa atributa

Sintaksa atrubuta:
[pravo_pristupa] [/] ime [:tip] [multiplikativnost]
[=inicijalna_vrednost][{osobina}]
Simbol / oznaava da je atribut "izveden" (moe se "izraunati" na osnovu drugih)
Multiplikativnost se primenjuje na atribute klase
Specificira se kao interval celih brojeva, gornja granica moe biti neograniena
Pie se u uglastim zagradama, na primer: consolePort:Port[2..*]
Osobine atributa (neke):

10

readOnly
vrednost se ne moe menjati, dodavati ni uklanjati nakon
inicijalizovanja
ordered
vrednosti su ureene
bag
dozvoljava ponavljanje elemenata (nije skup)
seq ili sequence isto to i ordered bag (ureen niz)
composite
atribut sloene strukture
redefines <ime> redefinie <ime>
subsets <ime> podskup skupa atributa <ime>

Dijagrami klasa

15.10.2006.

Sintaksa operacije

Sintaksa operacije:
[pravo_pristupa] ime ([lista_argumenata])
[: tip_rezultata] [{osobina}]
Sintaksa argumenta u listi:
[smer] ime : tip [multiplikativnost]
[ = podrazumevana_vrednost] [{osobina}]
Smer moe biti:

ulazni argument, ne sme biti modifikovan (podrazumevano)


izlazni argument, mora se inicijalizovati
ulazno-izlazni argument, moe se modifikovati

Osobine operacije:

11

in
out
inout

isQuery izvrenje ne menja stanje objekta, operacija je ista funkcija bez bonih efekata
sequential pozivaoci moraju obezbediti da je samo jedna nit u jednom trenutku poziva
guarded operacija garantuje sekvencijalizaciju svih poziva svih guarded operacija
concurrent operacija se izvrava u konkurentnoj sredini kao atomska
leaf operacija nije polimorfna i ne moe se redefinisati u izvedenoj klasi

Dijagrami klasa

15.10.2006.

Relacije
Komunikacija

klasa
Na klasnim dijagramima se pojavljuju sve
etiri (prve tri su ee) vrste relacija:

12

zavisnost (dependency)
asocijacija (association)
generalizacija (generalization)
realizacija (realization)

Dijagrami klasa

15.10.2006.

Zavisnost

Povezuje stvari kod kojih


izmena nezavisne stvari utie
A
na ponaanje zavisne stvari
Zavisna stvar koristi nezavisnu stvar
Grafika notacija: klasa A zavisi od klase B
Primjeri :

13

kad je jedna klasa (B) tip parametra operacije


druge klase (A) (odnos klijent -server)
kad edna klasa (A) pravi objekte druge klase (B)

Vie stereotipova
Dijagrami klasa

15.10.2006.

Zavisnost

14

Najee se koriste za prikazivanje privremene veze


(npr. prilikom poziva)
Mogu biti cikline
Obino nisu tranzitivne
Koristiti ih selektivno poto ih obino ima puno
Moe izmeu svih stvari UML, naroito paketa

Dijagrami klasa

15.10.2006.

Generalizacija

Povezuje optije (superklasa ili roditelj)


sa specijalizovanim (subklasa ili dete) stvarima
Grafika notacija: klasa A je dete, B je roditelj
Drugi nazivi relacije:
vrsta (is-a-kind-of),
izvoenje (A se izvodi iz B),
nasleivanje
proirivanje
A

15

Dijagrami klasa

15.10.2006.

Generalizacija

16

Generalizacija znai da se objekti dece mogu pojaviti


gde god se oekuje objekat roditelja
Deca nasleuju osobine svojih roditelja, naroito atribute i
operacije
Operacija deteta koja ima isti potpis kao operacija roditelja
redefinie operaciju roditelja
Redefinicija operacije omoguava njeno polimorfno ponaanje
Klasa koja ima samo jednog roditelja koristi jednostruko
nasleivanje
Klasa koja ima vie roditelja koristi viestruko nasleivanje
Smanjuje ponavljanje, poveava fleksibilnost

Dijagrami klasa

15.10.2006.

Asocijacija

17

Specificira da su instance jedne stvari


A
povezane sa instancama druge stvari
Asocijacija je strukturna relacija, jaa od zavisnosti
Asocijacija je (ako se drugaije ne kae)
bidirekcionalna veza (dvosmerna navigabilnost)
Dozvoljena je i asocijacija sa samim sobom
(postoje veze izmeu objekata iste klase)
Uobiajeno je da asocijacija povezuje dve klase (binarna)
Mogue je da asocijacija povezuje i vie klasa (n-arna
asocijacija), ali bolje preko klase asocijacije
Grafika notacija: klasa A je u asocijaciji sa klasom B

Dijagrami klasa

15.10.2006.

Primer osnovnih relacija


Prozor
otvori()
zatvori()
pomeri()
prikazi()
obradiDogadjaj()

Konzolni prozor

18

Dijalog

Dijagrami klasa

Dogadjaj

Kontrola

15.10.2006.

Ukrasi asocijacije

Na asocijaciji se mogu pojaviti sledei ukrasi:

19

naziv
ime
multiplikativnost
asocijacija
smer itanja
uloge
Radi za
1 Kompanija
Osoba 1..*
navigabilnost
poslodavac
zaposlen
1
multiplikativnost
agregacija ili kompozicija
uloga
celina
pravo pristupa (vidljivost)
kraju preko asocijacije

Dijagrami klasa

agregacija

Odeljenje
*
deo

15.10.2006.

Multiplikativnost

Na jednoj strani asocijacije oznaava se broj objekata sa te strane


koji su u vezi sa tano jednim objektom sa druge strane relacije
Moe biti:

UML 2.0 ne dozvoljava izraze sa diskontinuitetom

npr. 0..1,3..4,6..* - proizvoljan broj osim 2 i 5

Implementacija:

20

nijedan (0),
tano jedan (1),
proizvoljno mnogo, ukljuujui 0 (*),
opseg (npr. 2..*)

Pokaziva (1), niz pokazivaa (> 1), kolekcija (*)


Za * moe i ogranienja {ordered}, {nounique}

Dijagrami klasa

15.10.2006.

Agregacija

Vrsta asocijacije kod koje jedna strana


igra ulogu celine, a druga ulogu dela (whole/part)
Celina sadri delove ("has-a" relacija)
Agregacija ne govori nita o uzajamnom odnosu
ivotnih vekova celine i dela
Deo u agregaciji moe biti zajedniki deo vie celina
Grafika notacija:
Celina

21

Dijagrami klasa

Deo

15.10.2006.

Kompozicija

22

Asocijacija kod koje postoji odnos celina/deo,


ali je celina odgovorna za ivotni vek dela
Agregacija sa strogim vlasnitvom i koincidentnim
ivotnim vekom dela u odnosu na celinu
Deo moe nastati u toku ivota celina
i moe biti uniten pre unitenja celine
Deo u kompoziciji moe biti deo samo jedne celine
(implicitna kardinalnost 1)
Ekskluzivnost, ne samo konceptualni odnos
Dijagrami klasa

15.10.2006.

Kompozicija
Grafika

notacija:
Celina

Deo

Implementacija:
class Celina {
private: Deo d;
}

23

Dijagrami klasa

15.10.2006.

Primer asocijacija
ima

Fakultet
1..*

Katedra 0..1
1..*

1..*

1..*
pridruzen

Clan
*
Student

pohadja
*

24

1..*

predaje

Kurs
*

Dijagrami klasa

1..* 1 sef
Nastavnik

1..*

15.10.2006.

Navigacija

25

Da li se od jednog objekta moe doi do objekta sa druge strane


Strelica oznaava navigabilnost u naznaenom pravcu
Krsti oznaava da nema navigabilnosti prema oznaenoj strani
Za asocijaciju bez ukrasa navigabilnosti se smatra da je
navigabilnost neodreena
Grafika notacija:
A

Dijagrami klasa

15.10.2006.

Pravo pristupa preko asocijacije

Ograniava vidljivost (visibility) objekata u asocijaciji za spoljanji svet


Oznaava se sa + , #, -, ~
ispred imena uloge odgovarajue strane relacije
+
znai da objektima sa te strane mogu pristupati svi objekti
preko objekta sa sruge strane
znai da objektima klase sa te strane
mogu pristupati samo objekti klase sa druge strane
#
znai da i objekti klasa izvedenih iz klase
sa drugog kraja asocijacije imaju pristup
~
znai da i objekti klasa iz istog paketa
kao klasa sa drugog kraja asocijacije imaju pristup
Primer:
+korisnik
-kljuc
GrupaKorisnika

Korisnik

26

Lozinka

Podrazumevan je javni vizibilitet uloge u asocijaciji

Dijagrami klasa

15.10.2006.

Ugnedavanje
Oznaava

pojam kada je klasa B


deklarisana u prostoru imena klase A
A

27

Dijagrami klasa

15.10.2006.

You might also like