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

Slides:



Advertisements
Similar presentations
Object-oriented modeling Class/Object Diagrams
Advertisements

Stereotypes Stereotypes provide the capability to create a new kind of modeling element. –They can be used to classify or mark modeling elements. –A type.
Inheritance Inheritance Reserved word protected Reserved word super
UML Class Diagram. UML Class Diagrams2 Agenda What is a Class Diagram? Essential Elements of a UML Class Diagram Tips.
Road Map Introduction to object oriented programming. Classes
UML – Class Diagrams.
Essentials of interaction diagrams Lecture Outline Collaborations Interaction on collaboration diagrams Sequence diagrams Messages from an object.
Evan Korth New York University Computer Science I Classes and Objects Professor: Evan Korth New York University.
Terms and Rules Professor Evan Korth New York University (All rights reserved)
CS 2511 Fall UML Diagram Types  2 Main Types Structure Diagrams ○ Class Diagrams ○ Component Diagrams ○ Object Diagrams Behavior Diagrams ○ Sequence.
1 Creating Classes. 2 Writing Classes Thus far, we have mainly used existing classes in the Java library  (also main classes for executing) True object-oriented.
The Unified Modeling Language (UML) Class Diagrams.
Object-Oriented Analysis and Design
Java Methods By J. W. Rider. Java Methods Modularity Declaring methods –Header, signature, prototype Static Void Local variables –this Return Reentrancy.
Session 11 The Class Diagram: Aggregation and Generalization Written by Thomas A. Pender Published by Wiley Publishing, Inc. October 12, 2011 Presented.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
Programming Logic and Design Fourth Edition, Comprehensive Chapter 15 System Modeling with the UML.
® IBM Software Group © 2006 IBM Corporation Rational Software France Object-Oriented Analysis and Design with UML2 and Rational Software Modeler 03. Classes,
UML Class Diagram Trisha Cummings. What we will be covering What is a Class Diagram? Essential Elements of a UML Class Diagram UML Packages Logical Distribution.
Design Model Lecture p6 T120B pavasario sem.
1 Class Diagrams. 2 Overview Class diagrams are the most commonly used diagrams in UML. Class diagrams are for visualizing, specifying and documenting.
UML Class Diagram. A class diagram shows 1.Classes 2.The relationships between them.
Application development with Java Lecture 21. Inheritance Subclasses Overriding Object class.
CS212: Object Oriented Analysis and Design Lecture 33: Class and Sequence Diagram.
UML Class Diagram notation Indicating relationships between classes SE-2030 Dr. Mark L. Hornick 1.
Access Specifier. Anything declared public can be accessed from anywhere. Anything declared private cannot be seen outside of its class. When a member.
ITEC0724 Modern Related Technology on Mobile Devices Lecture Notes #2 1.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Outline Creating Subclasses Overriding Methods Class Hierarchies Inheritance.
Object-Oriented Programming: Classes and Objects Chapter 1 1.
CSC 243 – Java Programming, Spring, 2014 Week 4, Interfaces, Derived Classes, and Abstract Classes.
Java Programming: Guided Learning with Early Objects Chapter 9 Inheritance and Polymorphism.
Objects and Classes. F OO Programming Concepts F Creating Objects and Object Reference Variables –Differences between primitive data type and object type.
Object-Orientated Analysis, Design and Programming
UML Diagrams: Class Diagrams The Static Analysis Model
Chapter 5: Structural Modeling
Abstract Data Types and Encapsulation Concepts
Object-Oriented Programming: Classes and Objects
COMPONENT & DEPLOYMENT DIAGRAMS
Chapter 16 UML Class Diagrams.
Chapter 11 Object-Oriented Design
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
Chapter 3: Using Methods, Classes, and Objects
Object-Oriented Programming: Classes and Objects
MAUDYKLŲ VANDENS KOKYBĖS STEBĖSENOS
Pagrindinės sąvokos Hipertekstas ir multimedija
Atliko: Jokūbas Rusakevičius VU MIF PS 3k 3g
Daiktavardis Dalykas, ugdymo sritis: Tema: Klasė: Priemonės paskirtis:
JavaScript kalbos apžvalga
Failai ir jų tvarkymas.
Seminar 3 UML Class Diagram.
Abstract Data Types and Encapsulation Concepts
UML Class Diagram.
Virtualus kompiuteris
Interfaces.
Funkcijos 9 paskaita.
Operacinė sistema Testas 9 klasė
Abstract Class As per dictionary, abstraction is the quality of dealing with ideas rather than events. For example, when you consider the case of ,
Windows Ribbon Framework
Pranešėjas Jurij Kuznecov
CIS 375 Bruce R. Maxim UM-Dearborn
Unified Modelling Language
Class Diagrams.
Class Diagrams Class diagram is basically a graphical representation of the static view of the system and represents different aspects of the application.
Class Diagram.
CS 112 Programming 2 Lecture 02 Abstract Classes & Interfaces (2)
CIS 375 Bruce R. Maxim UM-Dearborn
Object Oriented System Design Class Diagrams
Chapter 7 Objects and Classes
Presentation transcript:

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. 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.

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.

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ą.

Darbo pradžia: Pasirenkame File/New Project Pasirenkame Class Diagram 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

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>>).

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:

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

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>]*'}']

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.

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 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 daugybiškumas nenurodytas, vadinasi jis lygus 1. - performer[1..20]: Person Daugybiškumas dažniausiai naudojamas su atributais ir asociacijomis.

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ų.

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.

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.

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ą

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ą.

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

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

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

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>>.

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

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ų.

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ų.

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šą

navigability pavyzdžiai

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

Grįžtamoji asociacija Reflexive association class 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 { // with the Blog class private BlogAccount blog;

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.

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ą? Sąskaita banke (abi asociacijos) 1..* ir {ordered} – pavyzdžiui, pagal atidarymo datą Fiziniam ir Juridiniam asmenims daugybiškumas 1

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. sezonai - {ordered} pagal datas komandos - {ordered} pagal alfabetą įvarčiai - ne

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į? Pavyzdyje, žmogus kompanijoje gali dirbti įvairius darbus ir Darbas Job nėra nei žmogaus, nei kompanijos savybė. Darbas yra šių klasių objektų ryšio savybė.

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? Kiekviena banko sąsakita vienareikšmiškai susieta su konkrečiu asmeniu. Šachmatų lentos kvadratas vienareikšmiškai charakterizuojamas vertikale ir horizontale. Šachmatų lentos kvadratas savarankiškai neegzistuoja

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. 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.

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.

How to model an aggregation relationship Agency Agent 0..* 1..* -employee {must have a current contract} 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.

Aggregation agregacija realizuojama kaip ir asociacija – nuorodomis. Object B is a “part of” m A’s Object A “contains” n B’s m n Class A Class B The relationship between an author and his blogs is 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!

Composition Kompozicija realizuojama kaip ir asociacija – nuorodomis. 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.

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. renginys, pasirodymas

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.

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.

Aggregation and Composition

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.

Styles of Displaying Generalizations Separate Target Style Shared Target Style

Nested Class Declarations A 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 & Realizacija An 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 nerašomos.

Because the SMTPMailSystem class does not implement the send( 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

Priklausomybės ryšys Priklausomybės ryšys (dependency relationship) nurodo kitokį pasiekiamumą tarp klasių nei atributų pagalba. Priklausomybė (Dependency) - tai semantinis ryšys tarp dviejų elementų, kai vieno iš jų, nepriklausomo, pasikeitimas gali paveikti kito, priklausomo, elemento pasikeitimą. Atvirkščiai 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 object galima nurodyti stereotipą

Programos klasių diagrama class 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()); }