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