UML pagrindai

advertisement
UML pagrindai
Klasių diagrama
Klasių diagramos paskirtis
 Nusako statinę sistemos struktūrą.
 Klasių diagrama yra sudaryta iš grupės klasių ir
interfeisų, atspindint svarbias verslo srityje
sumodeliuotos sistemos esybes ir ryšius tarp šių
klasių ir interfeisų.
 Klasių diagrama skirsto daiktus į kategorijas. Klasė
aprašo daiktų grupę, kurie turi panašius atributus ir
vienodą elgseną.
 Neaprašo dinaminių sistemos aspektų:



Kaip sistemos struktūra kinta jos veikimo metu
Kaip keičiasi sąryšiai tarp objektų
Dinaminiam aprašymui skirti kiti diagramų tipai
2
Klasės ir objektai
 Objektas – konkreti sistemoje egzistuojanti esybė. Turi




vidinę būseną, nusakomą atributų rinkiniu. Realaus
pasaulio daiktai arba problemos atitinka objektus.
Klasė – objekto tipo aprašas (aprašo sistemos
objektą). Aprašo objekto atributų tipus bei galimus
veiksmus (metodus).
Kiekvienai klasei priskiriama atsakomybė už
panaudojimo atvejo (vieno ar kelių) realizavimą,
nustatomi atributai ir dalyvavimas įgyvendinant
panaudojimo atvejį.
Procesas baigiamas, išnagrinėjus visus p.atvejus.
Būtina išlaikyti ryšį su panaudojimo atvejais.
3
Sąsaja
 Sąsaja (interface): sąsaja yra klasės
variantas. Klasė suteikia tam tikro sistemos
veiklos funkcionalumo įgyvendinimą. Kita
vertus, sąsaja suteikia tik sistemos veiklos
funkcionalumo apibrėžimą. Tikrąjį veiklos
funkcionalumą vykdo atskira klasė.
4
Klasių identifikavimas (1)
 Identifikuoti galimas klases išrenkant visus
daiktavardžius ir daiktavardines frazes iš sistemos
reikalavimų specifikacijos. Kriterijai:





Tai yra daiktas arba daiktų šeima
Tai dalis problemos, kurią reikia išspręsti
Tai nėra įvykis arba atsitikimas
Tai nėra daikto savybė
Klase gali būti objektai, žmonės, organizacijos, vietos,
koncepcija ir t.t.
 Atmesti netinkamas klases ir, jei reikia, pervadinti
likusias klases.
5
Netinkamos klasės






Pertekliškumas – tai pačiai klasei priskiriamas daugiau nei
vienas vardas;
Neapibrėžtumas – negalima nedviprasmiškai pasakyti, ką
daiktavardis reikškia (ką norime pasakyti);
Įvykis ar operacija – daiktavardis reiška, kas yra atliekama
sistemoje ar pačios sistemos (ar konkretus įvykis ar
operacija turi būseną, elgseną, identiškumą).
Meta kalba –daiktavardis apibrėžia tai, kaip mes nusakome
daiktus.
Už sistemos ribų – daiktavardis apibrėžia kaip sistema
veikia, bet nesusijes su niekuo sistemos viduje.
Atributas.
6
Pavyzdys
 Books and journals. The library contains books and
journals. It may have several copies of a given book.
Some off the books are for short term loans only. All
other books may be borrowed by any library member
for three weeks. Members of the library can normally
borrow up to six items at a time, but members of staff
can borrow up to 12 items at a time. Only members
of staff may borrow journals.
 Borrowing. The system must keep track of when
books and journals are borrowed and returned,
enforcing the rules described above.
7
Atmetimas
 Library – už sistemos ribų.
 Short term loan – skolinimas






yra įvykis.
Member of the library – tas
pats, kaip library member
(paliekam).
Week – laiko intervalas.
Item – neapibrėžtumas
(knyga arba žurnalas).
Time – už sistemos ribų.
System – nėra dalykinės
srities dalis (meta kalba).
Rule – taip pat kaip ir
system.
Lieka





Book;
Journal;
Copy (of book);
Library member;
Member of staff.
8
Klasių identifikavimas (2)
 Lentelės pagalba:
9
Teisingi klasių pavadinimai
10
Klasės žymėjimas
 Klasė žymima stačiakampiu:
11
Atributai
 Nusako objekto būseną / charakteristikas
 Gali būti arba primityvus arba kita klasė
 Formalus aprašas:
 visibility name: type = defaultValue
12
Atributų tipai
13
Numeracija
 Jei atributas gali turėti mažai ir neginčijamų
reikšmių, jas galima sukonstruoti enumeration
duomenų tipo pagalba. Tai padeda aiškumui.




Pvz.:
GenderKind: male or female
TrafficLightColorKind gali buti red, yellow, or
green
successKind gali turėti reikšmes succed ir fail.
14
Atributų reikšmės pagal nutylėjimą
 Galima nurodyti atributų reikšmes, kurias jie įgis
pagal nutylėjimą.









Sintaksė:
attributeName: AttributeType = default value
Pvz.:
name: String = ‘’
age: Integer = 0
weight: Double = 0.0
gender: GenderKind = male
phoneNumber: PhoneNumberType = 000 000-0000
isSingle: Boolean = true
15
Atributų reikšmių daugialypumas
 Sintaksė :

attributeName: AttributeType [Multiplicity]
16
Metodai (1)
 Metodai - tai įmanomos klasės elgsenos,
kurias klasės objektas gali daryti, arba koks
būti.
 Aprašo veiksmus su objektu.
 Keičia atributų reikšmes
 Sintaksė:
 operationName (optional argumentList): ReturnType
 Pvz.:
 + display(message: String)
17
Metodai (2)
 Metodus vadinami taip pat kaip atributai:
 iš mažosios raidės,
 be tarpų,
 kitą reikšminį žodį pradėti didžiąja raide.
 Po metodo vardo dedami skliausteliai(), kad
vizualiai skirtųsi nuo atributo.
 Turi būti aišku skaitytojui, ką argumentas
daro.
 Turi būti aišku, kokie argumentai yra
naudojami.
18
Matomumas
 Vienas iš objektinio programavimo principų nurodo, kad klasėje
saugomi duomenys klasės išorėje nebūtų naudojami tiesiogiai.
Todėl dažniausai klasės nariai-duomenys skelbiami private (su l.
retomis išimtimis public), o nariai-funkcijos - public.
19
Skirtingi abstrakcijos lygiai
20
Interfeisai (ne grafinės sąsajos)
 Interfeisas aprašo veiksmų aibę (metodus)
 Nusako privalomą realizuoti funkcionalumą.
 Specifikuoja modelio elemento operacijas,
kurios yra matomos uželemento ribų.
 Žymima kaip klasė, tik be atributų dalies ir su
apskritimu (arba tik kaip apskritimas).
 Kartais papildomai žymima stereotipu
<<interface>>
21
Interfeisai
Manager
 Interfeisą realizuojanti klasė turės realizuoti
metodus deploy() ir manage()
22
Ryšiai tarp klasių
 Generalizacija, apibendrinimas
(Generalization):

Tėvo – vaiko ryšys.
 Asociacija (Association):
Aggregation;
 Composition.

23
Apibendrinimas. Generalization
 Analizės procese parodo apibendrinimus.
 Projektavimo procese aprašo paveldėjimo
ryšius tarp klasių.
 Vadinamas „is a“ ryšys (vaiko klasė yra tėvo
klasės tipas).
 Visi atributai ir metodai paveldimi iš tėvo
klasės.
24
Apibendrinimas. Pavyzdžiai
Supertype
Subtype1
Subtype2
LibraryMember
MemberOfStaff
25
Realizacija
 Žymimas interfeiso
realizavimas.
 Nuo paveldėjimo skiriasi
tuo, kad aprašyti metodai
ne paveldimi, o turi būti
realizuoti
26
Asociacijos
 Nusako semantinį ryšį tarp klasių
 Dvipusis arba vienpusis ryšys
27
Asociacijos savybės
 Pavadinimas.
 Kardinalumas.
 Rolės.
student
1
*
University
Person
0..1
employer
*
teacher
Role
28
Asociacijos (1)
Asociacija(association). Kuomet
dvi klasės yra sujungtos viena
su kita bet kokiu būdu,
nustatomas asociacijos ryšys.
Pavyzdžiui, „studentas
studijuoja universitete“.
Kardinalumas(multiplicity). Šios
rūšies asociacijos pavyzdys:
„daug studentų priklauso
vienam universitetui“. Tokiu
atveju žvaigždės (*) simbolis
pateikiamas prie studento
klasės.
Multiplicity
Symbol
Meaning
1
One and only one
0..1
Zero or one
M..N
From M to N (natural language)
*
From zero to any positive integer
0..*
From zero to any positive integer
1..*
From one to any positive integer
29
Asociacijos (2)
Nurodomoji asociacija(directed
association). Pagal nutylėjimą
asociacija tarp klasių yra
dvikryptė. Naudojamas, siekiant
parodyti, kad jei egzituoja bent
vienas klasės 1 egzempliorius, tai
būtinai turi egzistuoti ir klasės 2
egzempliorius.
Klasė_2
Klasė_1
Refleksyvi asociacija(reflexive
association). Naudojamas kai
klasės objektai turi ryšį (dažniausiai
priklausomybės) su savimi
30
Asociacijos klasės
Objektų ryšiai yra tiek pat svarbūs, kaip ir patys
objektai.
Studentas
lanko
1..*
6
Modulis
Asociacijos klasė
lanko
Pažymys:int
Studentas
lanko
1..*
6
1
Modulis
1
lanko
6
Pažymys:int
1..*
Realizacija be
asociacijos klasės
31
Klasių diagramos pavyzdys (1)
32
Klasių diagramos pavyzdys (2)
Book
Is a copy of
1
1..*
borrows/returns
Copy
LibraryMember
0..1
MemberOfStaff
0..*
borrows/returns
0..1
Journal
0..*
33
Asociacijų subtipai: agregacija ir
kompozicija
 whole/part ryšiai
 Pasako, jog viena klasė susideda iš kitų
klasių (dalių).
 Žymejimas:


Agregacija (aggregation)
Kompozicija (composition)
 Galima naudoti visas notacijas, skirtas
asociacijų aprašymui.
 Pagal nutylejimą ryšio pavadinimas ‘is a part
of’.
34
Agregacija.
 ‘Detalesnis’ ryšys nei paprasta asociacija. ClassA (whole),
ClassB(part).
 Agregacija nenusako, kad klasė B priklauso klasei A.
 Tai nėra tėvo-vaiko ryšys.
Container Class
 Gali egzistuoti ir be ‘whole’ dalies.
Class C
AGGREGATION
Class E1
Class E2
35
Kompozicija
 Taip pat modeliuoja ‘whole-part’ ryšius.
 Kiekviena ‘part’ dalis gali priklausyti tik vienai ‘whole’ daliai.
 Negali egzistuoti ir be ‘whole’ dalies.
 Jei ‘whole’ dalis ištrinama, taip pat ištrinamos ir ‘part’ dalys.
Whole Class
Class P1
Class W
Class P2
Part Classes
36
Kompozicija vs. Agregacija
 Kompozicija yra stipri asociacijos forma.



Komponentai turi tik vieną savininką.
Komponentai negali egzistuoti be savininko.
Komponentai ‘gyvena’ ir ‘miršta’ kartu su šeimininku.
 Agregacija:


Gali suformuoti ‚part of‘ asociaciją, bet nebutinai yra esminiai
jai.
Gali egzistuoti nepriklausomai nuo visumos.
37
CRC kortelės
 Class, Responsibility, Collaborator.
 Nėra UML dalis.
 Padeda geriau suprasti sistemą projektavimo etape.
 Aprašas:
 Klasės Vardas (viršuje).
 Klasės Atsakomybė (Responsibility) (kairėje pusėje).
 Klasės Collaborator’iai (dešinėje pusėje).
38
CRC kortelės pavyzdžiai
39
Objektų diagramos
 Objektas –klasės egzempliorius.
 Objektų vardai hierarhiniai:
ObjVardas:Klase
 Visi kiti žymėjimai tokie patys
 Objektų diagramos naudojamos kai
norima parodyti procesų dinamiką.
40
Objektų ir klasių diagramos
Ryšio pavadinimas
Klasės vardas
Saskaitos eilute
Klientas
+id:integer
+vardas:string
Rents
0..1
0..n +id:integer
+metai:date
Klasių diagrama
Laukai
Objekto vardas
Joe: Klientas
Kasablanka: Filmas
+id:1667
+id:22340
+metai:1942
+ vardas :Joe Smith
Objektų diagrama
41
Pabaiga
42
Download