Klasi ų diagramos

  • Upload
    tamera

  • View
    49

  • Download
    5

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

  • Klasi diagramosPaskaitos tikslas supaindinti su klasi diagramos notacija ir jos ryiu su programiniu kodu

  • Klasi diagramosKlasi diagrama (class diagram) specifikuoja sistemos klases (interfeisus) ir j tarpusavio sryius.Klasi diagrama vaizduoja statin sistemos model, t.y. statin sistemos struktr ir hierarchij.Klasi diagrama, aprao objektus, turinius bendrus atributus, operacijas, ryius ir semantik.Tai viena pagrindini objektinio projektavimo diagram.Klasi diagrama lyginant su kitomis yra iskirtin tai pagrindinis automatinio kodo generavimo altinis.Klasi diagrama aprao abstrakcijas, taisykles ir koncepcijas kaip objektai gali bti naudojami.

  • Klasi diagramos krimasNustatomos dalykins srities esybs ir atvaizduojamos klasmis su atitinkamais atributais ir operacijomis.Nustatomi sryiai tarp dalykins srities esybi ir atvaizduojami tipiniais ryiais tarp klasi.Sukuriamas pradinis programins rangos sistemos loginis modelis, kuris toliau bus realizuotas fiziniais modeliais.Paruoiama dokumentacija tolesniam programinio kodo krimui.

  • Klasi diagramaKlasi diagrama vaizduojama grafu kurio virnmis yra klasifikatoriai kurie gali bti susieti vairaus tipo struktriniais ryiais.Kuo vaizduojama struktrinio programavimo programa?Klasifikatorius (classifier) speciali svoka skirta bendras charakteristikas turintiems egzemplioriams klasifikuoti (tipas).Klas (class) modelio elementas apraantis aib objekt turini vienodas charakteristik specifikacijas, tuos paius ribojimus ir semantik.

  • Darbo pradia:Pasirenkame File/New ProjectPasirenkame Class DiagramAtsiradusiame lange spaudiame OKranki juostoje renkamsklasi diagramos elementusPabaigoje isaugome diagram Pavard2.jpg ir siuniame dstytojuiFile/Save Diagram As Image

  • Notacija: virutinis skyriusGrafikai klas vaizduojama staiakampiu, daniausiai turiniu tris skyrius. Virutinis skyrius yra vienintelis btinas skyrius. Virutiniame skyriuje raome:Klass vard pradedamas didiaja raide ir raomas centre parykintu riftu.Abstrakios klass vard (raomas kursyvu).Interfeiso vard (danai ymimas stereotipu ).

  • Klasi vardaiRandame programos tekste:klases ymimos raktiniu odiu classabstrakias klases ymimos raktiniais odiais abstract classinterfeisus ymimi raktiniu odiu interfaceKiekvienu rastu vardu paymime atskir staiakamp.kontekstiniu meniu pasirenkame:

  • interfeisui nurodome stereotipklass vardasabstrakiai klasei paymimenereikaling skyri galime nerodyti

  • AtributaiKlass atributas (attribute) vaizduoja bendr vis klass objekt charakteristik arba savyb.

    Atributo apraas:[] [/] [: ] [[]] [ = ] ['{' [',' ]*'}']

  • Visibility (matomumas)+ public (vieas): raktaodiu paymti klass atributai ir operacijos prieinami bet kokiai kitai klasei.# protected (apsaugotas): raktaodiu paymti klass atributai ir operacijos prieinami paveldinioms klasms (pastarosios paymtos raktaodiu extends)~ package (paketo): raktaodiu nepaymti klass atributai ir operacijos prieinami tik to paties paketo klasms.- private (privatus): raktaodiu paymti klass atributai ir operacijos prieinami tik tai paiai klasei./ derive (apskaiiuojamas) atributas, t.y. jo vert gali bti rasta i kit atribut ir jo saugoti duomen modelyje nereikia. Tokiam atributui btina nurodyti jo vert apskaiiuojani operacij.Nenurodius matomumo, jis nra numanomas.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.

  • Daugybikumas (Multiplicity)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 absence of 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 daugybikumas nenurodytas, vadinasi jis lygus 1. Multiplicity specifies the number of values that may be associated with a model element.Daugybikumas daniausiai naudojamas su atributais ir asociacijomis.- performer[1..20]: Person

  • Atributo modifikatoriaiordered atributo verts yra sutvarkytos; jei is modifikatorius nenurodytas, jokia jo reikmi tvarka nra numanoma.readOnly atributo vert galima tik skaityti.redefines - atributas paveldint ukloja nurodyt atribut.subsets - atributo reikms sudaro nurodyto atributo reikmi poaib.unique tarp artibuto reikmi nra pasikartojani.

  • Atribut apraymo pavyzdiai+ darbuotojoVardas : String {readOnly}

    - gimimoData : Data {readOnly}

    # darbuotojoAmius : Integer

    + telefonoNumeris : Integer [*] {unique} darbuotojas galiturti daug telefono mumeri, arba neturti n vieno.

    - atlyginimas : Currency = $500 priimant darb darbuotojui pagal nutyljim paskiriamas atlyginimas $500. Ateityje i reikm gali keistis.

  • AtributaiVidurinajame skyriuje raomi klass atributai, t.y. klass kintamieji.Daniausiai naudojamas atributo apraas: : = .Pavyzdys:- name: String = Vardenisnurodomas matomumas,vardas, tipas ir pradin reikm Paprastiems tipams, beistandartiniams tipams (String,File ...) naudojame atributus. Vartotojo vestiems tipams ymti naudojame asociacijas.

  • OperacijosKlass operacija (operation) vaizduoja bendr vis klass objekt elgesio charakteristik.Operacijos apraas:[] ([])[: [] '{' [',' < operacijos savyb >]*'}']Nenurodius matomumo, jis nra numanomas.Nebtina vaizduoti operacijos savybes, parametrus ir grinamo rezultato tip

  • Operacijos savybsredefines - operacija paveldint ukloja nurodyt operacij.query operacija nekeiia sistemos bsenos, t.y. neturi alutinio poveikio.ordered parametro daugybikumas didesnis u vienet ir jo verts yra sutvarkytos; jei i savyb nenurodyta, jokia jo veri tvarka nra numanoma.unique parametro daugybikumas didesnis u vienet ir tarp jo veri nra pasikartojani. - iraika apraanti operacijai taikom ribojim.

  • Operacijos parametr kryptysin parametro vert operacijai perduoda ikvieiantis objektas.inout parametro vert operacijai perduoda ikvieiantis objektas, kuriam, vykdius operacij, gauta reikm grinama atgal.out vykdius operacij, gauta reikm grinama ikvieianiam objektui.return vykdius operacij, gauta parametro reikm grinama ikvieianiam objektui kaip grinama reikm; operacija gali turti tik vien tok parametr.ekvivalentu: toString(return : String) ir toString() : String

  • Operacij apraymo pavyzdiai+ papildyti(in telefonoNumeris : Integer [*] {unique} )

    + sukurti() : Boolean

    - pakeisti(in atlyginimas : Currency)

  • Operacijosvaizduojamos apatiniame skyriujeOperacijos poymis skliaustai.Daniausiai naudojamas operacijos apraas: () :.

  • Parametrai ir j tipaiGrinamo rezultato tipas(jei nieko negrinama)Operacijos vardasMatomumas Jei operacija (ar atributas) turt modifikatori static, j paymtume Scope: classifier (ji tapt pabraukta). Abstrakti operacija raoma kursyvu. Konstruktoriui grinamo rezultato tipas nenurodomas. Konstruktoriui galima nurodyti stereotip get ir set metodams galima nurodyti stereotipus: ir .

  • RyiaiAsociacija (association) klas turi atribut esant nuoroda vartotojo klass objekt.Agregacija (aggregation)Kompozicija (composition)Generalizacija (generalization) atitinka raktin od extendsRealizacija (realization) atitinka raktin od implementsPriklausomyb (dependency) per parametrus perduodamas, arba lokaliai sukuriamas objektas.nurodome: navigacij, poli vardus, matomum, daugybikum.

  • Asociacija apraoma: Asociacijos vardas (association name) nra btinas elementas (jis naudojamas tuomet, kai apie ry reikia danai kalbti) Pradedamas didija raide. alia asociacijos vardo gali bti naudojamas maas juodas trikampis nurodantis kuria kryptimi skaityti asociacijos vard. Pavyzdui, tam, kad nurodyti: darbuotojas dirba firmai, bet ne atvirkiai.Asociacijos poliais (association end) nurodomas atitinkamos klass vaidmuo (role) ioje asociacijoje. Asociacija gali bti ir grtamoji, t.y. linija gali sugrti t pai klas. Tuo parodoma, kad vienos klass egzempliorius pasiekia kit tos paios klass egzempliori.

  • Asociacijos poliusrolename identifikuoja asociacijos gal (vardas),tarnauja objekt navigacijai asociacijos pagalba, t.y. danai tarnauja atributu.is atributas nurodomas prieingoje klasei asociacijos pusjevisibility nurodo, ar ryys prieinamas kitoms klasms nei esaniai kitoje asociacijos pusje.multiplicity nurodo galim susiejam objekt skaii.

  • Asociacijos poliainavigability galimyb per asociacij pasiekti kitos klass egzempliori. Jei rodykl nevaizduojama, laikoma, kad navigacija nespecifikuota.navigacijos nra produktasnesaugo usakym srao(pasens susitarimas)navigacija yra kiekvienasusakymas saugo produktsra

  • navigability pavyzdiai

  • ContainersFor associations withmultiplicity > 1, use a container

    for constant multiplicityyou can use an array

    for variable multiplicity, use a collection object: ArrayList, List, Vector

  • Grtamoji asociacija Reflexive associationclass TreeMapNode { private TreeMapNode nodes[] = new TreeMapNode[2];}

  • 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;}

  • Asociacijos savybs eilut(nurodo papildomas poliaus savybes){subsets } - asociacijos polius yra poaibis. Pastaruoju gali bti poliaus vardas arba klass atributas.{redefined } - asociacijos polius ukloja kit poli, kurio vardas yra .{ordered} asociacijos polius yra tvarkioji aib.{bag} asociacijos poliaus elementai gali kartotis.{sequence} - asociacijos polius yra seka.

  • Iskirianioji asociacija (xor-association)I keli galim asociacijos variant vienu metu galimas tik vienas.iame pavyzdyje klientas gali bti tik arba juridinis, arba fizinis asmuo.Kokiais daugybikumais ar savybmis papildytumte diagram?

  • N-arin asociacija n-ary association(sieja asociacijos ryiu daugiau nei dvi klases)N-arins asociacijos egzemplioriumi yra jos jungiam klasi N objekt rinkinys.Pavyzdiui: Pavardenis, ebenktys, 2008Kaip papildytumte fragment?N-arins asociacijos trkumas ji negali atvaizduoti papildomos informacijos, pavyzdiui susitikimo vietos ir t.t.

  • Asociacija-klas (association class)Turi kaip asociacijos, taip ir klass savybi ir aprao papildomas asociacijos savybes klass atributais ir operacijomis.Papildomos asociacijos savybs nepriklauso n vienai jungiamai klaseiKaip interpretuotumte pateikt pavyzd?

  • Kvalifikatorius (qualifier)Nurodo kaip asocijuot egzempliori aib skaidoma pagal egzempliori kvalifikuotame asociacijos poliuje.Jei prieingame poliuje daugybikumas 1 arba 0..1, kvalifikatoriaus reikms vienareikmikai sieja objektus.Kaip interpretuotumte pateiktus pavyzdius?

  • AggregationAgregacija (aggregation) tai toks klasi susietumo bdas, kuriame vienai klasei priklauso kitos klass objektai. Taiau iais objektais ji gali dalytis su kitomis klasmis.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.

  • AggregationAggregation 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 ryio ciklikumui, t.y. objektas negali bti savs paties dalimi.

  • How to model an aggregation relationshipAn 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.

  • AggregationClass AClass BmnObject B is a part of m AsObject A contains n BsThe relationship between an author and his blogs is much stronger thanjust association. An author owns his blogs, and even though he mightshare them with other authors, in the end, his blogs are his own, andif he decides to remove one of his blogs, then he can!agregacija realizuojamakaip ir asociacija nuorodomis.

  • CompositionKompozicija (composition) tai agregacijos atvejis, kai objektas-dalis vienu metu gali priklausyti tik vienam sudtiniam objektui.Kompozicijoje prieingai nei agregacijoje dalys negali savarankikai egzistuoti be to objekto kuriam jos priklauso.Composition does have a coding equivalent in Java using the private inner class construct.

    Kompozicija realizuojamakaip ir asociacija nuorodomis.

  • Aggregation and CompositionIf 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.

  • CompositionClass AClass B1n Object B lives and dies with A The multiplicity of A is always 1, that is B is the sole property of APavyzdys: atskiri vaizdiniai komponentai vaizduojami tik lange.

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

  • Aggregation and Composition

  • Generalization Generalizacija (Generalization) tai ryys apibendrinimas/specializacija, kai specializuoto elemento (vaiko) objektai gali bti panaudoti visur, kur tinka apibendrinto elemento (tvo) objektai.Pavyzdiui, generalizacijos ryiai apibria 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.

  • Styles of Displaying GeneralizationsSeparate Target StyleShared Target Style

  • Nested Class DeclarationsA class declared within another class

  • 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( ) {...}}

  • Interfeisas & RealizacijaAn interface is a specifier for the externally-visible operations of a class, component, or other classifier (including subsystems) without specification of internal structure.Interfaces do not have implementation. They lack attributes, states, or associations; they only have operations. Interfaces may have generalization relationships.The implementation of a type by a class is modeled as the Realization relationship, shown as a dashed line with a solid triangular arrowhead (a dashed generalization arrow).

  • public interface EmailSystem { public void send(Message message));}public class SMTPMailSystem implements EmailSystem{ public void send(Message message){...}}Pastaba: interfeiso operacijos kursyvu neraomos.

  • Because the SMTPMailSystem class does not implement the send(..) operation as specified by the EmailSystem interface, it needs to be declared abstract; the VendorXMailSystem class completes the picture by implementing all of its operations

  • Priklausomybs ryys Priklausomybs ryys (dependency relationship) nurodo kitok pasiekiamum tarp klasi nei atribut pagalba.Priklausomyb (Dependency) - tai semantinis ryys tarp dviej element, kai vieno i j, nepriklausomo, pasikeitimas gali paveikti kito, priklausomo, elemento pasikeitim. Atvirkiai tvirtinti kaip taisykl negalima The model element at the tail of the arrow (the client element) depends on the model element at the arrowhead (the supplier element)

  • Dependency Is implemented through local-scope objects passing an object as a parameter to a function/method instantiating a local objectgalima nurodyti stereotip

  • Programos klasi diagramaclass A{ private String a; public A(String a){this.set1A(a);} public final void set1A(String aIn) {this.a = aIn;} public final String get1A() {return this.a;} public void set2A() { this.set1A(this.get1A().replace(' ','+')); } public String toString() {return (this.get1A());}}

    abstract class B{ public abstract void b();}

    class C extends B{ private A a; public C(A aIn){ this.a = aIn; } public void b() {this.a.set2A();} }

    class Kazkas { public static void main(String[] args){ A a1 = new A("1 2"); B b1 = new C(a1); b1.b(); System.out.println(a1.toString()); }}

    Sskaita banke (abi asociacijos) 1..* ir {ordered} pavyzdiui, pagal atidarymo datFiziniam ir Juridiniam asmenims daugybikumas 1sezonai - {ordered} pagal dataskomandos - {ordered} pagal alfabetvariai - ne

    Pavyzdyje, mogus kompanijoje gali dirbti vairius darbus ir Darbas Job nra nei mogaus, nei kompanijos savyb. Darbas yra i klasi objekt ryio savyb.

    Kiekviena banko ssakita vienareikmikai susieta su konkreiu asmeniu.achmat lentos kvadratas vienareikmikai charakterizuojamas vertikale ir horizontale. achmat lentos kvadratas savarankikai neegzistuoja

    For example, whem I push the gas pedal on my car to tell the car I want to accelerate, the entire car assembly (with its thousands of parts) accelerates, not just the gas pedal.renginys, pasirodymas