You are on page 1of 36

UML pagrindai

Struktros modeliavimas
Lekt. dr. Agnius Liutkeviius
Klass ir objektai
Objektas konkreti sistemoje egzistuojanti
esyb. Turi vidin bsen, nusakom
atribut rinkiniu.
Klas objekto tipo apraas. Aprao
objekto atribut tipus bei galimus
veiksmus (metodus).
Klasi diagramos paskirtis
Nusako statin sistemos struktr.
Aprao klases ir sryius tarp j.
Neaprao dinamini sistemos aspekt:
Kaip sistemos struktra kinta jos veikimo metu
Kaip keiiasi sryiai tarp objekt
Dinaminiam apraymui skirti kiti diagram
tipai
Klass ymjimas
Klas ymima staiakampiu:
Atribut sritis
Metod sritis
Atributai
Nusako objekto bsen / charakteristikas
Gali bti arba primityvus arba kita klas
Formalus apraas:
visibility name : type_expression
[ = initial_value ]
[{property_string}]
Metodai
Aprao veiksmus su objektu
Keiia atribut reikmes
Nusakomas metodo signatra. Formalus apraas:
visibility name (parameter_list)
[:return_type_expression]
[{property_string}]
where:
parameter_list :
name : type_expression = [default_type]
Prieinamumas
Private ( - )
Gali naudoti tik tos klass objektai.
Protected ( # )
Gali naudoti ir paveldini klasi objektai.
Public ( + )
Gali naudoti visi objektai.
Package ( ~ )
Gali naudoti tik tame paiame pakete esantys
objektai.
Statiniai atributai ir metodai
Bendri visai klasei
Pasiekiama ne per objekt, o
per klas
Pvz. Account.createAccount();
Naudojama globaliems
duomenims bei veiksmams
aprayti
Realizacija Java kalboje
public class Account
{
// attributai
private int amount;
private int number;
private static int num_of_accounts;

//konstruktorius
public Account ()
{
this.number = num_of_accounts;
num_of_accounts++;
}

public void deposit(int amount)
{
this.amount += amount;
}

public void withdraw(int amount)
{
this.amount -= amount;
}

public int getAmount() {return this.amount; }
public int getNumber() {return this.amount; }
public void setAmount(int a) { this.amount = a; }

}
Skirtingi abstrakcijos lygiai
Interfeisai (ne grafins ssajos!)
Interfeisas aprao metodus, kuriuos
privalo realizuoti interfeis paveldinios
(realizuojanios) klass
Nusako privalom realizuoti
funkcionalum
I interfeiso nemanoma sukurti objekt
tai ne klas, bet metod apra ablonas
paveldiniai klasei!
Interfeisai
Interfeis realizuojanti klas turs
realizuoti metodus deploy() ir manage()
ymima kaip klas, tik be atribut dalies ir
su apskritimu (arba tik kaip apskritimas)
Kartais papildomai ymima stereotipu
<<interface>>
Manager
Sryiai
Paveldjimas (angl. generalization,
inheritance)
Asociacija (angl. association)
Realizacija (angl. refinement, realization)
Priklausomyb (angl. dependency)
Paveldjimas
is-a sryis
Nusako klasi hierarchinius
sryius
Visi atributai ir metodai
paveldimi i tvins klass
Tvo klas
Vaiko klas
Paveldjimo sryio naudojimo
daniausia klaida
Paveldjimas nra skirtas parodyti
sveikai tarp klasi tam skirta asociacija
arba priklausomyb!
I esms paveldjimas pasako, kad viena
klas yra kitos klass patobulintas
variantas (vaiko klas gali turti papildom
atribut ir metod lyginant su tvo klase)

Polimorfizmas
public class Vehicle
{
// implementation
public void drive()
{
// ...
}
}

public class Car extends Vehicle
{
// ....
}


public class Boat extends Vehicle
{
// ...
}
Realizacija
ymimas interfeiso
realizavimas
Nuo paveldjimo skiriasi tuo,
kad aprayti metodai ne
paveldimi, o turi bti
realizuoti
Taikoma ir abstrakioms
klasms
Abstrakti klas tai klas
turinti nerealizuot metod
(neturini kno).
Asociacijos
Nusako semantin ry tarp klasi
Dvipusis arba vienpusis ryys

Asociacijos savybs
Pavadinimas (Vairuoja)
Kardinalumas (1, 1..*, 0..*, 0)
Rols (vairuotojas, kompanijos
automobilis)
Asociacijos prasm ir
naudojimas (1)
Asociacija skirta parodyti, kad vienos klass
objektai naudojasi kitos klass objektais(-u), t.y.
naudojasi t objekt:
Metodais
Atributais
Tam, kad naudotis kitos klass objektais, reikia
turti nuorod tos klass objektus, todl
asociacija programikai realizuojama kaip:
Klass atributas, kurio tipas atitinka klas, kurios
metodais ar atributais yra naudojamasi
Asociacijos prasm ir
naudojimas (2)
Asociacijos rodykl rodo t klas, kurios metodais ar
atributais yra naudojamasi:



Klass Klientas objektai naudojasi Serveris klass
objektu (pvz. kvieia metod gautiDuomenis), kas
reikia, jog Klientas atribut srae yra Serveris tipo
atributas (iuo atveju srv):

Asociacij realizacija
Priklausomai nuo asociacijos kardinalumo,
naudojami paprasti atributai arba j kolekcijos
Pvz. employees realizuojamas kaip masyvas,
nes atitinkama asociacija turi 0..* kardinalum.
Daniausia asociacijos
naudojimo klaida
Asociacijos kryptis nebtinai atitinka
duomen perdavimo krypt!
Asociacijos rodykl parodo kreipimosi
kitos klass objekt krypt, bet ne
duomen perdavim:
Pvz. jeigu kreipiamasi metod, kuris graina
duomenis, tai duomenys bus perduodami
prieinga nei rodykl kryptimi...
Asociacij subtipai: agregacija ir
kompozicija
whole/part ryiai
Pasako, jog viena klas susideda i kit klasi
(dali):
Kompozicija


Agregacija
Agregacijos ir kompozicijos
skirtumas
Kompozicija stipresnis ryys:
Kompozicija parodo, kad klass dalyvaujanios
kompozicijoje, negali viena be kitos funkcionuoti
Agregacija parodo, kad tam tikrais laiko momentais
(bet nevisada!) vienos klass objektas(-ai) tampa
kitos klass objekto(-) dalimi
Kompozicijos atveju, vienos klass objektas vis savo
gyvavimo laik yra kitos klass dalis
Tiek agregacija, tiek kompozicija yra ta pati
asociacija! (realizuojama kaip klass atributas)
Priklausomyb (angl. dependency)
Naudojama netiesioginms priklausomybms
tarp klasi nurodyti:
Vienai klasei perduodamas kitos klass objektas kaip
metodo argumentas
Naudojami statiniai klass atributai ar metodai
Prasm tokia pat kaip asociacijos:
Parodo, kad vienos klass objektas kvieia kitos
klass objekto(-) metodus ar atributus
Priklausomybs realizacija
Nuo asociacijos skiriasi programine realizacija:
Nra atributo, kuris atitikt kvieiamos klass objekt
Nuoroda kvieiam objekt gaunama dinamikai
arba kvieiami statiniai metodai, kas nereikalauja
objekt krimo, pvz.:



Skaiiuotuvas neturi atributo, kurio tipas Math, nes
metodas sqrt() yra statinis
Papildomai
ablonins klass C++
Komentarai
Paketai naudojama klasi diagram
struktrizavimui, skaidymui atskiras
posistemes

Klasi diagramos pavyzdys
Komponent diagrama
Komponent diagrama parodo sistemos
programins rangos komponentus ir
sryius tarp j.
Komponentas
Komponentas tai klass realizacija.
Komponentas gali realizuoti daugiau negu
vien klas.
Komponent diagramos pavyzdys
Microsoft.ApplicationBlocks.Data.dll
SystemFrameworks.dll antlr.runtime.dll
SharpHSQL.dll
DBForms.exe
Deployment diagrama
Deployment diagrama parodo sry tarp
sistemos programins rangos ir
aparatrins rangos.

Mazgas
Mazgas (angl. node) tai bet koks HW skaiiavimo
resursas.
Du mazg tipai:
Procesorius (angl. processor);
renginys (angl. device);
Deployment diagramos pavyzdys
Ai u dmes

You might also like