10 dijagrami klasa - napredni pojmovi
TRANSCRIPT
Projektovanje softvera
Dijagrami klasa –napredniji pojmovi
24.11.2010.Dijagrami klasa – napredniji pojmovi2
Aktivne klase
Aktivni objekat je onaj koji poseduje vlastiti tok kontrolekoji se odvija paralelno/konkurentno sa drugim tokovima kontrole
Aktivna klasa je klasa čije su instance aktivni objekti Aktivni objekti su “koreni” pojedinih tokova kontrole
– oni pozivaju svoje ili metode drugih objekata Tok kontrole se pokreće/zaustavlja:
– kada se aktivni objekat kreira/uništava– mogu postojati i posebne operacije za pokretanje i zaustavljanje
Mnogi jezici podržavaju aktivne objekte (Ada, Java, Smalltalk) Aktivni objekti i aktivne klase
se mogu pojaviti u dijagramima gde i pasivni
24.11.2010.Dijagrami klasa – napredniji pojmovi3
Procesi i niti
Proces (process, task) je "teški" (heavyweight) tok kontrole– ima vlastiti adresni prostor
Nit (thread) je "laki" (lightweight) tok kontrole– deli zajednički adresni prostor sa drugim nitima
Jedan proces može sadržati više niti Proces je jedinica konkurentnosti u operativnim sistemima:
– procesi konkurišu za resurse Primeren mehanizam za komunikaciju:
– procesi - razmena poruka (message passing)– niti - deoba zajedničkih podataka (data sharing)
24.11.2010.Dijagrami klasa – napredniji pojmovi4
Aktivne klase - notacija
Grafički simbol aktivne klase: UML 1: UML2:
– poseban odeljak se predviđa za signale koje klasa može primati
Nit (thread)
Proces (process)
Kontroler
SignalsPeriferalSpreman
Takt
Kompresor<<process>>
Kompresor<<process>>
UML 1 UML 2
Sabirac<<thread>> Sabirac
24.11.2010.Dijagrami klasa – napredniji pojmovi5
Šabloni
Šablon (template) je parametrizovani element– C++, Ada, Java podržavaju šablone (generike)
Primer na C++:template <class Element, int Broj> class GenerickiBafer{public:
virtual void stavi(const Element&);virtual Element& uzmi();...
};typedef GenerickiBafer<Predmet,100> Bafer; // eksplicitno generisanjeGenerickiBafer<Predmet,100> bafer; // implicitno generisanje
24.11.2010.Dijagrami klasa – napredniji pojmovi6
Šabloni - notacija
Primer generičkog bafera:– definicija šablona i
eksplicitno generisanje iz njega: implicitno generisanje:
GenerickiBafer
+stavi(Element)+uzmi(): Element
ElementBroj : Integer = 10
Bafer
<Element->Predmet, Broj->100><<bind>>
GenerickiBafer<Element->Predmet, Broj->100>
24.11.2010.Dijagrami klasa – napredniji pojmovi7
Izuzeci
Izuzeci su vrste signalakoji se modeliraju stereotipom klase <<exception>>
Signal šalje operacija koja izaziva izuzetak– modelira se stereotipom <<send>> relacije zavisnosti
Primer:
StekPun<<exception>>
Stek
+stavi(Element) {exception StekPun}+uzmi(): Element {exception StekPrazan}
StekPrazan<<exception>>
<<send>>
<<send>>
24.11.2010.Dijagrami klasa – napredniji pojmovi8
Klasa asocijacije
Sama asocijacija može imati svoje atribute Ti atributi pripadaju klasi koja opisuje asocijaciju
(slično veznoj tabeli kod relacionih baza) Primer:
Firma Lice+zaposleni+poslodavac
1..**
Posao
+opis+datumZaposlenja+plata
24.11.2010.Dijagrami klasa – napredniji pojmovi9
N-arna asocijacija
Asocijacija može povezivati više od 2 klase– takva asocijacija se naziva n-arnom
Svaka instanca n-arne asocijacijeje n-torka vrednosti odgovarajućih klasa
Primer ternarne asocijacije(sa klasom asocijacije):
Tim Igrač
Sezona
Statistika
pobedaizgubljenih
*
**
24.11.2010.Dijagrami klasa – napredniji pojmovi10
Kvalifikacija (1)
Koristi se da označi ključ (kvalifikator)koji se koristi za selekciju objekta iz neke strukture
Objekat strukture za datu vrednost ključaselektuje jedan ili grupu elemenata
Učesnici u relaciji su Struktura i njen Element– element(i) strukture se izdvaja(ju) uz pomoć ključa
Kvalifikator može imati više atributa, oni su atributi asocijacije Atributi kvalifikatora imaju istu sintaksu
kao i atributi klasifikatora, sem inicijalne vrednosti Grafička notacija:
– ukras je deo asocijacije, ne klase
Struktura Element0..1
kljuckljuc
24.11.2010.Dijagrami klasa – napredniji pojmovi11
Kvalifikacija (2)
Primeri struktura kojima se pristupa pomoću ključa su– heš tabela, B-stablo, …
Multiplikativnost na kraju asocijacije kod klase Element:– moguće kardinalnosti skupa selektovanih objekata
uparivanjem sa objektom strukture uz zadatu vrednost ključa: 0..1 – može da bude selektovan jedinstven objekat, ali postoje
i vrednosti ključa za koje se ne selektuje ni jedan objekat 1 – svaka moguća vrednost kvalifikatora selektuje
jedinstvenu instancu elementa * – vrednost kvalifikatora deli skup elemenata u podskupove
Primeri:
Banka Osoba0..1*
racunracunSahTabla Polje
11redkolonaredkolona
24.11.2010.Dijagrami klasa – napredniji pojmovi12
Specifikator interfejsa (UML 1)
Uloge mogu implementirati samo neke od interfejsakoje realizuju klase u asocijaciji
Ime interfejsa koji zadovoljava uloga - iza dvotačke koja sledi naziv uloge Primer 1:
Primer 2:
Osoba
*1
supervizor:IUpravnik
1
radnik:IZaposleni *
Predmet Podsetnik-podsetnik:IPodsetnik
Cuvar-podsetnik:ICuvani
24.11.2010.Dijagrami klasa – napredniji pojmovi13
Generalizacioni skupovi
Relacija generalizacije/specijalizacijeuspostavlja odnos između posebnog i opšteg
Ponekad se specijalizacija vrši po nekom klasifikacionom kriterijumu– kriterijum klasifikacije određuje podtipove– često objekti podtipova ne mogu biti i jedne i druge klase
(ograničenje disjoint) Generalizacioni skup definiše poseban skup relacija generalizacije
koji opisuje na koji način se natklasa specijalizuje Ograničenja generalizacionog skupa (pišu se u zagradama {}):
– disjoint/overlaping da li objekti podtipova mogu biti isključivo jednog
od podtipova generalizacionog skupa– complete/incomplete
da li podtipovi predstavljaju potpuni skup mogućih podtipova
24.11.2010.Dijagrami klasa – napredniji pojmovi14
Notacija i primer
Primer generalizacionog skupa pol:
– potklase klase Osoba mogu biti Muskarac, Zena i Zaposleni– generalizacije prema potklasama Muskarac i Zena
pripadaju generalizacionom skupu pol
Osoba
Muskarac Zena Zaposleni
pol{complete, disjoint}
Muskarac
zaposlenje{incomplete}
Osoba
Muskarac Zena Zaposleni----------------------------
pol
24.11.2010.Dijagrami klasa – napredniji pojmovi15
Metaklasa
Metaklasa je klasifikator čije su instance klase Primer:
– metaklasa Class u metamodelu (metajeziku) UML-aopisuje apstrakciju klase
– instance ove metaklase su klase u modelu koji kreiramo– metamodel je model kojim se specificira jezik za modeliranje
24.11.2010.Dijagrami klasa – napredniji pojmovi16
Powertype
Powertype je klasifikator čije su sve instancedeca (potklase) nekog roditelja
Powertype je takođe metatip (tip u metamodelu), ali korisnički– instance tog metatipa su tipovi (klase)
koji su podtipovi nekog drugog tipa u modelu Formalno:
– ako je A tip, tada je Power(A) tip čije su sve instance podtipovi tipa A– ako je tip B instanca tipa Power(A), tada je B podtip A
24.11.2010.Dijagrami klasa – napredniji pojmovi17
Powertype - primer
Primer: instance Model (Yugo, Megan,...) su deca klase Automobil
UML 1 UML 2
U gronjem primeru Model je metatip za klase Yugo, Megan UML 1:
– odredište stereotipa relacije zavisnosti <<powertype>>je powertype klasifikator
– stereotip zavisnosti <<instanceOf>> se koristri za veze klasa-->metaklasa
Auto mo bil Model<<powertype>>
Yugo Megan
<<powertype>>
<<instanceOf>>
<<instanceOf>>
Automobil Model1*
Yugo Megan
:Model
1*
24.11.2010.Dijagrami klasa – napredniji pojmovi18
Konteksti relacije realizacije
Realizacija se koristi u dva konteksta:– kontekst interfejsa (realizuje ga klasa ili komponenta)– kontekst slučajeva korišćenja (realizuje ga kolaboracija)
Klasni dijagram:
Dijagram komponenata:
Dijagram slučajeva korišćenja:
ProveraLozinke ProveraIdentiteta
FIFOredIKruzniBafer<<interface>>
+stavi()+uzmi()
FIFOred
IKruzniBafer
+stavi()+uzmi()
PosloviStampaca
IBafer
24.11.2010.Dijagrami klasa – napredniji pojmovi19
Parametrizovana kolaboracija
Koristila se za opis projektnih uzoraka u UML1 Notacija u UML 1:
uloga 1uloga 2...
naziv uzorka
Ucesnik1 Ucesnik2
uloga 1 uloga 2
24.11.2010.Dijagrami klasa – napredniji pojmovi20
Projektni uzorci u UML 2
Definicija uzoraka "posmatrač“ – parametrizovana saradnja:
Konkretna saradnja koja realizuje uzorak "posmatrač":
24.11.2010.Dijagrami klasa – napredniji pojmovi21
Standardni stereotipovi klasifikatora
utility – klasa čiji su atributi i operacije zajednički za sve instance klase focus – klasa koja implementira glavnu (poslovnu) logiku auxiliary – klasa koja pomaže focus klasi u implementaciji logike stereotype – klasifikator je stereotip koji se može primeniti na druge elemente metaclass – klasifikator čije su instance klase powertype – klasifikator čije su instance deca datog roditelja (UML1) thread – klasa čiji su objekti aktivni sa deljenim adresnim prostorom (UML1)
process – komponenta čiji primerci imaju vlastite procese(u UML1 process je bio stereotip klase)
Legenda:– naglašeno – stereotip specificiran kao standardni i u UML 2 (profili L2 i L3)– obično – nije naveden kao zastareo, ali nije naveden ni kao std. stereotip UML 2– kurziv – stereotip eksplicitno naveden kao zastareo
24.11.2010.Dijagrami klasa – napredniji pojmovi22
Standardni stereotipovi relacije zavisnosti
Između klasa i/ili objekata na klasnom dijagramu:– instantiate – izvor kreira instance odredišta– instanceOf – izvor je objekat koji je instanca odredišnog klasifikatora (UML 1)– send – izvor (operacija) šalje signal koji je odredište relacije
(odredište relacije nije primalac signala)– derive – izvor se može izračunati na osnovu odredišta;
relacija između dva atributa ili dve asocijacije:jedan je konkretan, a drugi konceptualan (npr: DatumRodj i Starost)
– refine – izvor je finiji stepen apstrakcije od odredišta; na primer: klasa u projektuje na finijem stepenu apstrakcije od odgovarajuće klase u analizi
– permit – izvoru se daju posebna prava pristupa odredištu– friend – izvoru se daju posebna prava pristupa odredištu (samo UML 1)– powertype – odredište je powertype izvora (samo UML 1)
Između paketa:– access – izvorni paket ima pravo pristupa elementima odredišnog (privatni uvoz)– import – javni sadržaj odredišnog paketa ulazi u prostor imena izvornog paketa
(kao da su imena odredišnog paketa deklarisana u izvornom paketu)
24.11.2010.Dijagrami klasa – napredniji pojmovi23
Standardni stereotipovi ostalih relacija
Standardni stereotip relacije generalizacijeimplementation – dete nasleđuje implementaciju roditelja,
ali je čini privatnom i ne podržava interfejs roditelja,pa ne može zamenjivati roditelja
Standardni stereotip relacije realizacijebind – izvor je instanca ciljnog šablona
sa datim stvarnim parametrima