html5-img
1 / 56

Klasi ų diagramos

Klasi ų diagramos. Paskaitos tikslas – supažindinti su klasių diagramos notacija ir jos ryšiu su programiniu kodu. Klasių diagramos. Klasių diagrama ( class diagram ) specifikuoja sistemos klases (interfeisus) ir jų tarpusavio sąryšius.

tamera
Download Presentation

Klasi ų diagramos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Klasių diagramos Paskaitos tikslas – supažindinti su klasių diagramos notacija ir jos ryšiu su programiniu kodu

  2. Klasių diagramos • Klasių diagrama (class diagram) specifikuoja sistemos klases (interfeisus) ir jų tarpusavio sąryšius. • Klasių diagrama vaizduoja statinį sistemos modelį, t.y. statinę sistemos struktūrą ir hierarchiją. • Klasių diagrama, aprašo objektus, turinčius bendrus atributus, operacijas, ryšius ir semantiką. • Tai viena pagrindinių objektinio projektavimo diagramų. • Klasių diagrama lyginant su kitomis yra išskirtinė – tai pagrindinis automatinio kodo generavimo šaltinis. • Klasių diagrama aprašo abstrakcijas, taisykles ir koncepcijas kaip objektai gali būti naudojami.

  3. Klasių diagramos kūrimas • Nustatomos dalykinės srities esybės ir atvaizduojamos klasėmis su atitinkamais atributais ir operacijomis. • Nustatomi sąryšiai tarp dalykinės srities esybių ir atvaizduojami tipiniais ryšiais tarp klasių. • Sukuriamas pradinis programinės įrangos sistemos loginis modelis, kuris toliau bus realizuotas fiziniais modeliais. • Paruošiama dokumentacija tolesniam programinio kodo kūrimui.

  4. Klasių diagrama • Klasių diagrama vaizduojama grafu kurio viršūnėmis yra klasifikatoriai kurie gali būti susieti įvairaus tipo struktūriniais ryšiais. • Kuo vaizduojama struktūrinio programavimo programa? • Klasifikatorius (classifier) – speciali sąvoka skirta bendras charakteristikas turintiems egzemplioriams klasifikuoti (tipas). • Klasė (class) – modelio elementas aprašantis aibę objektų turinčių vienodas charakteristikų specifikacijas, tuos pačius ribojimus ir semantiką.

  5. Darbo pradžia: • Pasirenkame File/New Project • Pasirenkame ClassDiagram • Atsiradusiame lange • spaudžiame OK • Įrankių juostoje renkamės • klasių diagramos elementus • Pabaigoje išsaugome diagramą • Pavardė2.jpg ir siunčiame dėstytojui File/Save Diagram As Image

  6. Notacija: viršutinis skyrius • Grafiškai klasė vaizduojama stačiakampiu, dažniausiai turinčiu tris skyrius. • Viršutinis skyrius yra vienintelis būtinas skyrius. • Viršutiniame skyriuje rašome: • Klasės vardą • pradedamas didžiaja raide ir rašomas centre paryškintu šriftu. • Abstrakčios klasės vardą (rašomas kursyvu). • Interfeiso vardą (dažnai žymimas stereotipu <<interface>>).

  7. Klasių vardai • Randame programos tekste: • klases – žymimos raktiniu žodžiu class • abstrakčias klases – žymimos raktiniais žodžiais abstract class • interfeisus – žymimi raktiniu žodžiu interface • Kiekvienu rastu vardu pažymime atskirą stačiakampį. • kontekstiniu meniu pasirenkame:

  8. interfeisui nurodome stereotipą klasės vardas abstrakčiai klasei pažymime nereikalingų skyrių galime nerodyti

  9. Atributai • Klasės atributas (attribute) vaizduoja bendrą visų klasės objektų charakteristiką arba savybę. • Atributo aprašas: • [<matomumas>] [‘/’] <vardas> [‘:’ <tipas>] [‘[‘<daugybiškumas>’]’] [ ‘=‘ <reikšmė pagal nutylėjimą> ] ['{'<modifikatorius> [',' <modifikatorius>]*'}']

  10. Visibility(matomumas) Visibility is applied to both attributes and operations in a class. Visibility refers to the scope of access allowed for a member of a class. • + public (viešas):raktažodžiu pažymėti klasės atributai ir operacijos prieinami bet kokiai kitai klasei. • # protected(apsaugotas):raktažodžiu pažymėti klasės atributai ir operacijos prieinami paveldinčioms klasėms (pastarosios pažymėtos raktažodžiu extends) • ~ package (paketo):raktažodžiu nepažymėti klasės atributai ir operacijos prieinami tik to paties paketo klasėms. • - private (privatus):raktažodžiu pažymėti klasės atributai ir operacijos prieinami tik tai pačiai klasei. • / derive (apskaičiuojamas) atributas, t.y. jo vertė gali būti rasta iš kitų atributų ir jo saugoti duomenų modelyje nereikia. Tokiam atributui būtina nurodyti jo vertę apskaičiuojančią operaciją. • Nenurodžius matomumo, jis nėra numanomas.

  11. Daugybiškumas (Multiplicity) Multiplicity specifies the number of values that may be associated with a model element. • n – n and only n. • 1 – one and only one. • 0..1 - zero or one. (Note that a multiplicity of 0..1 provides for the possibility of null values: the absenceof a value, as opposed to a particular value from the range.) • 0..* - from zero to any positive integer. • 1..* - from one to any positive integer. • * - any positive integer. • Jei atributo daugybiškumas nenurodytas, vadinasi jis lygus 1. - performer[1..20]: Person Daugybiškumas dažniausiai naudojamas su atributais ir asociacijomis.

  12. Atributo modifikatoriai • ordered – atributo vertės yra sutvarkytos; jei šis modifikatorius nenurodytas, jokia jo reikšmių tvarka nėra numanoma. • readOnly – atributo vertę galima tik skaityti. • redefines <atributo vardas> - atributas paveldint užkloja nurodytą atributą. • subsets <atributo vardas> - atributo reikšmės sudaro nurodyto atributo reikšmių poaibį. • unique – tarp artibuto reikšmių nėra pasikartojančių.

  13. Atributų aprašymo pavyzdžiai + darbuotojoVardas : String {readOnly} - gimimoData : Data {readOnly} # darbuotojoAmžius : Integer + telefonoNumeris : Integer [*] {unique} – darbuotojas galiturėti daug telefono mumerių, arba neturėti nė vieno. - atlyginimas : Currency = $500 – priimant į darbą darbuotojui pagal nutylėjimą paskiriamas atlyginimas $500. Ateityje ši reikšmė gali keistis.

  14. Atributai • Vidurinajame skyriuje rašomi klasės atributai, t.y. klasės kintamieji. • Dažniausiai naudojamas atributo aprašas: <Matomumas><Vardas>:<Tipas> <Daaugybiškumas> = <Pradinė reikšmė>. Pavyzdys: - name: String = “Vardenis” nurodomas matomumas, vardas, tipas ir pradinė reikšmė • Paprastiems tipams, bei • standartiniams tipams (String, • File ...) naudojame atributus. • Vartotojo įvestiems tipams • žymėti naudojame asociacijas.

  15. Operacijos • Klasės operacija (operation) vaizduoja bendrą visų klasės objektų elgesio charakteristiką. • Operacijos aprašas: • [<matomumas>] <vardas> ‘(‘[<parametrų sąrašas>]’)’[‘:’ [<grąžinamo rezultato tipas>] '{'<operacijos savybė> [',' < operacijos savybė >]*'}'] • Nenurodžius matomumo, jis nėra numanomas. • Nebūtina vaizduoti operacijos savybes, parametrus ir grąžinamo rezultato tipą

  16. Operacijos savybės • redefines <operacijos vardas> - operacija paveldint užkloja nurodytą operaciją. • query – operacija nekeičia sistemos būsenos, t.y. neturi šalutinio poveikio. • ordered – parametro daugybiškumas didesnis už vienetą ir jo vertės yra sutvarkytos; jei ši savybė nenurodyta, jokia jo verčių tvarka nėra numanoma. • unique – parametro daugybiškumas didesnis už vienetą ir tarp jo verčių nėra pasikartojančių. • <ribojimas> - išraiška aprašanti operacijai taikomą ribojimą.

  17. Operacijos parametrų kryptys • in – parametro vertę operacijai perduoda iškviečiantis objektas. • inout – parametro vertę operacijai perduoda iškviečiantis objektas, kuriam, įvykdžius operaciją, gauta reikšmė grąžinama atgal. • out – įvykdžius operaciją, gauta reikšmė grąžinama iškviečiančiam objektui. • return – įvykdžius operaciją, gauta parametro reikšmė grąžinama iškviečiančiam objektui kaip grąžinama reikšmė; operacija gali turėti tik vieną tokį parametrą. • ekvivalentu: toString(return : String) ir toString() : String

  18. Operacijų aprašymo pavyzdžiai + papildyti(in telefonoNumeris : Integer [*] {unique} ) + sukurti() : Boolean - pakeisti(in atlyginimas : Currency)

  19. Operacijosvaizduojamos apatiniame skyriuje • Operacijos požymis – skliaustai. • Dažniausiai naudojamas operacijos aprašas: <Matomumas><Vardas>(<Parametrų sąrašas>) :<Grąžinamo rezultato tipas>.

  20. Operacijos vardas Matomumas Parametrai ir jų tipai Grąžinamo rezultato tipas (jei nieko negrąžinama) • Jei operacija (ar atributas) turėtų modifikatorių static, • ją pažymėtume Scope: classifier (ji taptų pabraukta). • Abstrakti operacija rašoma kursyvu. • Konstruktoriui grąžinamo rezultato tipas nenurodomas. • Konstruktoriui galima nurodyti stereotipą <<constructor>> • “get” ir “set”metodams galima nurodyti stereotipus: • <<getter>> ir <<setter>>.

  21. Ryšiai • Asociacija (association) – klasė turi atributą esantį nuoroda į vartotojo klasės objektą. • Agregacija (aggregation) • Kompozicija (composition) • Generalizacija (generalization) – atitinkaraktinį žodį extends • Realizacija (realization) – atitinkaraktinį žodį implements • Priklausomybė (dependency) – per parametrus perduodamas, arba lokaliai sukuriamas objektas. • nurodome: • navigaciją, • polių vardus, • matomumą, • daugybiškumą.

  22. Asociacija aprašoma: • Asociacijos vardas (association name) – nėra būtinas elementas (jis naudojamas tuomet, kai apie ryšį reikia dažnai kalbėti) Pradedamas didžiąja raide. • Šalia asociacijos vardo gali būti naudojamas mažas juodas trikampis nurodantis kuria kryptimi skaityti asociacijos vardą. Pavyzdžui, tam, kad nurodyti: “darbuotojas dirba firmai”, bet ne atvirkščiai. • Asociacijos poliais (association end) – nurodomas atitinkamos klasės vaidmuo (role) šioje asociacijoje. • Asociacija gali būti ir grįžtamoji, t.y. linija gali “sugrįžti” į tą pačią klasę. Tuo parodoma, kad vienos klasės egzempliorius pasiekia kitą tos pačios klasės egzempliorių.

  23. Asociacijos polius • rolename • identifikuoja asociacijos galą (vardas), • tarnauja objektų navigacijai asociacijos pagalba, t.y. dažnai tarnauja atributu. • šis atributas nurodomas priešingoje klasei asociacijos pusėje • visibility – nurodo, ar ryšys prieinamas kitoms klasėms nei esančiai kitoje asociacijos pusėje. • multiplicity – nurodo galimą susiejamų objektų skaičių.

  24. Asociacijos poliai • navigability – galimybė per asociaciją pasiekti kitos klasės egzempliorių. • Jei rodyklė nevaizduojama, laikoma, kad navigacija nespecifikuota. navigacijos nėra – produktas nesaugo užsakymų sąrašo (pasenęs susitarimas) navigacija yra – kiekvienas užsakymas saugo produktų sąrašą

  25. navigability pavyzdžiai

  26. Containers • For associations with • multiplicity > 1, • use a container • for constant multiplicity • you can use an array • for variable multiplicity,use a collection object: ArrayList, List, Vector

  27. Grįžtamoji asociacijaReflexive association class TreeMapNode { private TreeMapNode nodes[] = new TreeMapNode[2]; }

  28. public class BlogAccount { // Attribute introduced thanks to the association // with the BlogEntry class private BlogEntry[] entries; } public class BlogEntry { // Attribute introduced thanks to the association // with the Blog class private BlogAccount blog; }

  29. Asociacijos savybės eilutė(nurodo papildomas poliaus savybes) • {subsets <elemento vardas>} - asociacijos polius yra <elemento vardas> poaibis. Pastaruoju gali būti poliaus vardas arba klasės atributas. • {redefined <poliaus vardas>} - asociacijos polius užkloja kitą polių, kurio vardas yra <poliaus vardas>. • {ordered} – asociacijos polius yra tvarkioji aibė. • {bag} – asociacijos poliaus elementai gali kartotis. • {sequence} - asociacijos polius yra seka.

  30. Išskiriančioji asociacija (xor-association) • Iš kelių galimų asociacijos variantų vienu metu galimas tik vienas. • Šiame pavyzdyje klientas gali būti tik arba juridinis, arba fizinis asmuo. • Kokiais daugybiškumais ar savybėmis papildytumėte diagramą?

  31. N-arinė asociacija – n-ary association(sieja asociacijos ryšiu daugiau nei dvi klases) • N-arinės asociacijos egzemplioriumi yra jos jungiamų klasių N objektų rinkinys. • Pavyzdžiui: Pavardenis, Žebenkštys, 2008 • Kaip papildytumėte šį fragmentą? • N-arinės asociacijos trūkumas – ji negali atvaizduoti papildomos informacijos, pavyzdžiui susitikimo vietos ir t.t.

  32. Asociacija-klasė (association class) • Turi kaip asociacijos, taip ir klasės savybių ir aprašo papildomas asociacijos savybes klasės atributais ir operacijomis. • Papildomos asociacijos savybės nepriklauso nė vienai jungiamai klasei • Kaip interpretuotumėte pateiktą pavyzdį?

  33. Kvalifikatorius (qualifier) • Nurodo kaip asocijuotų egzempliorių aibė skaidoma pagal egzempliorių kvalifikuotame asociacijos poliuje. • Jei priešingame poliuje daugybiškumas 1 arba 0..1, kvalifikatoriaus reikšmės vienareikšmiškai sieja objektus. • Kaip interpretuotumėte pateiktus pavyzdžius?

  34. Aggregation • Agregacija (aggregation) tai toks klasių susietumo būdas, kuriame vienai klasei priklauso kitos klasės objektai. Tačiau šiais objektais ji gali dalytis su kitomis klasėmis. • In a typical association the participating classes are peers. Each class remains independent of the other and neither class is superior to the other. They simply communicate. • An aggregation is used primarily to define and protect the integrity of a configuration of objects. • An aggregation defines an assembly or configuration so that the collection of objects can be managed as a single unit, as though the collection was one large object. • In aggregation of objects there has to be a point of control, a boss, one object that represents the interface to the assembly and assumes responsibility for coordinating the behavior of the aggregation.

  35. Aggregation • Aggregation may represent both physical and logical assemblies. • In a model of a desktop computer, the classes represent hardware devices that have physical connections. • In a model of a project team, the classes represent people who are “connected” by agreements and assignments. • Aggregation models a relationship just like an association, so the same rules apply to defining aggregations as to associations, namely roles, multiplicity, qualifiers, changeability, constraints, and derivation. • Skirtingai nei asociacija,agregacija įveda apbribojimą ryšio cikliškumui, t.y. objektas negali būti savęs paties dalimi.

  36. 0..* 1..* Agency Agent -employee {must have a current contract} How to model an aggregation relationship • An agent may be a part of no more than one agency, but an agent does not have to be part of an agency (0..1), that is an agent may be independent. • The agency is always comprised of at least one agent but there may be any number of agents (1..*). • An agent is considered an employee (role name) of an agency. • Every agent is constrained by the fact that she must have a current contract in order to be an employee of the agency.

  37. agregacija realizuojama kaip ir asociacija – nuorodomis. Aggregation Object B is a “part of” mA’s Object A “contains” nB’s m n Class A Class B The relationship between an author and his blogsis much stronger than just association. An author owns his blogs, and even though he might share them with other authors, in the end, his blogs are his own, and if he decides to remove one of his blogs, then he can!

  38. Kompozicija realizuojama kaip ir asociacija – nuorodomis. Composition • Kompozicija (composition) tai agregacijos atvejis, kai objektas-dalis vienu metu gali priklausyti tik vienam sudėtiniam objektui. • Kompozicijoje priešingai nei agregacijoje dalys negali savarankiškai egzistuoti be to objekto kuriam jos priklauso. • Composition does have a coding equivalent in Java using the private inner class construct.

  39. Aggregation and Composition • If the team is disbanded, the employees live on (depending, of course, on how well they performed on the project :)). • Each employee may or not be a member of a member team (0..*). • In fact, an employee may simultaneously participate in many project teams. • Aggregation allows the members to participate or not participate or even participate in other aggregations at the same time. • An event is composed of one or more performances. The performances would not continue to exist elsewhere on their own. • If the event were deleted, the performances would cease to exist along with the event. • A performance must be associated with one and only one event (1). This tells me that a performance cannot exist independent of the event.

  40. Composition • Object B “lives and dies” with A • The multiplicity of A is always 1, • that is B is the “sole property” of A 1 n Class A Class B Pavyzdys: atskiri vaizdiniai komponentai vaizduojami tik lange.

  41. A blog entry's introduction and main body sections are actually parts of the blog entry itself and won't usually be shared with other parts of the system. If the blog entry is deleted, then its corresponding parts are also deleted. This is exactly what composition is all about: you are modeling the internal parts that make up a class.

  42. Aggregation and Composition

  43. Generalization • Generalizacija (Generalization) tai ryšys apibendrinimas/specializacija, kai specializuoto elemento (vaiko) objektai gali būti panaudoti visur, kur tinka apibendrinto elemento (tėvo) objektai. • Pavyzdžiui, generalizacijos ryšiai apibrėžia sistemos klasių (paveldimumo) hierarchiją. • People use this process routinely to organize large amounts of information. • Walk through a grocery store and you find foods located in areas of store depending on their properties. Dry goods are located in one area, fruits and vegetables in another, meat in yet another. All of these items are foods, but they are different kinds of foods or types of foods.

  44. Styles of Displaying Generalizations Separate Target Style Shared Target Style

  45. Nested Class DeclarationsA class declared within another class

  46. public abstract class Store { public abstract void store(Article[] articles); public abstract Article[] retrieve( ); } public class BlogStore extends Store{ public void store(Article[] articles) {...} public Article[] retrieve( ) {...} }

More Related