A Semantic-rich Framework for Learning Software Patterns
T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa
1. Definisanje strukture sistema korišćenjem UML
dijagrama klasa
Analiza i specifikacija informacionih sistema
dr Zoran Jeremić
zoran.jeremic@gmail.com
1
2. Sadržaj
Uvod
Klase, atributi i operacije
Relacije
Generalizacija
Uputstvo za efikasno modelovanje klasa
2
3. Proces razvoja sistema
Faza Aktivnost Izlaz
Biznis
Započinjanje Utvrđivanje poslovnih potreba
dokumenta
Intervjuisanje stejkholdera, istraživanje Organizovana
Analiza sistemskog okruženja dokumentacija
Dizajn i Analiza inženjerskih aspekata sistema, Logički model
specifikacija definisanje koncepata sistema sistema
Programiranje, testiranje jedinica, Proverljiv
Implementacija integrisanje, dokumentovanje sistem
Resultati
Testiranje & Integrisanje svih komponenti, verifikacija, testiranja,
Integracija validacija, instalacija, obuka funkcionalan
sistem
Popravljanje bagova, modifikacije,
Održavanje adaptacija
Verzije sistema
3
4. Logički model sistema
Logički model sistema opisuje šta je sistem ili šta sistem
mora da radi – ne kako će sistem biti implementiran.
Model može sadržati:
Modele podataka (npr. dijagram klasa)
Modele procesa (npr. sekvencijalni dijagram)
Modele interakcije korisnika (npr. dijagrami slučajeva upotrebe)
Opisi su realizovani korišćenjem jezika za modelovanje
Formalnog (ili delimično formalnog)
Razumljivog (vizuelnog ili tekstualnog)
4
5. Pristupi modelovanju
Pristupi modelovanju se razlikuju jedan od drugog na
osnovu viđenja sveta (sistema)
Strukturni modeli Modeli ponašanja
Fokusirani na opisivanju Fokusirani na dinamici
strukture sistema – elementi sistema: kako se sistem
koji su fiksni i ostaju menja tokom vremena
nepromenjeni tokom vremena
5
6. Primer iz arhitekture: Model strukturne arhitekture
Planovi za gradski centar Filadelfije(1953)
6
7. Primer iz arhitekture: Modelovanje ponašanja
Modeli ponašanja Filadelfijskog saobraćaja (1953)
7
8. Sadržaj
Uvod
Klase, atributi i operacije
Relacije
Generalizacija
Uputstvo za efikasno modelovanje klasa
8
9. Objektno-orjentisani pristup
Objekti su abstrakcija entiteta iz realnog sveta ili sistema
Realni domen Domen modela
autobus
modeluje
vozilo
automobil
modeluje
solja
modeluje
9
10. Klase
Klasa je šablon za stvarne instance u memoriji
Produt
serialNumber
name
price
Ime klase
buy()
display()
Atributi
Operacije
10
11. Atributi - Signatura
[vidljivost] ime [višestrukost] [: tip] [=početna-vrednost]
[{osobina-string}]
vidljivost: prava pristupa atributu +, -, #
višestrukost: koliko instanci atributa postoji:
middleName [0..1] : String, phoneNumber [1..*]
Tip: tip atributa (integer, String, Person, Course)
početna vrednost: podrazumevana vrednost atributa
salary : Real = 10000, position : Point = (0,0)
svojstvo: predefinisana svojstva atributa
Changeable, readOnly, addOnly, frozen (C++: const, Java: final)
11
12. Atributi - Primeri
+ isLightOn : boolean = false
- numOfPeople : int
mySport
+ passengers : Customer[0..10]
- id : long {readOnly}
12
13. Operacije - Signatura
[vidljivost] ime [(lista-parametara)] [: tip-povratne-
vrednosti] [{osobina-string}]
Operacija može imati nula ili više parametara od kojih
svaka ima sintaksu:
[direction] name : type [=default-value]
Direction može biti: in (input paremtar – pozivalac ga ne može
modifikovati), out (output parametar - nema ulazne vrednosti.
finalna vrednost je dostupna pozivaocu), inout (ulazni parametar
koji se može modifikovati)
Svojstvo:
{leaf} – konkretna operacija
{abstract} – ne može se pozivati direktno
… 13
14. Operacije - Primeri
+ isLightOn() : boolean
+ addColor(newColor : Color)
# convertToPoint(x : int, y : int) : Point
- changeItem([in] key : string, [out] newItem : Item) : int
14
15. Vidljivost
public (+) – spoljašnji objekti mogu pristupiti članu
private (-) – samo unutrašnje metode mogu pristupiti
članu
protected (#) – samo interne metode, ili metode
specijalizovanih objekata mogu pristupiti članu
Produt Treba težiti da se očuva
najmanja moguća vidljivost
- serialNumber
- name
# price
+ buy()
+ display()
- swap(x:int,y: int)
15
20. Relacije
Relacija je šablon za konekciju između dve instance.
Relacije su organizovane u hijerarhiju:
Zavisnost: ukazuje na relacije između
Dependency
klasa u vreme izvršenje
Asocijacije: postojane relacije
Kompozicija: celina-deo veze
Association
Composition Aggregation
20
21. Asocijacije
Objekti na obe strane asocijacije mogu pronaći jedan
drugog
Relacija je konzistentna vremenu (osim ako je
uklonjenja)
Produt Order
serialNumber orderID
name * * date
price includes
checkout()
buy() VišestrukostaddProduct(Product p)
display()
Ukazuje na kardinalnost
clearAll()
•1:1 – podrazumevano
Ime + smer čitanja •3 – tačno 3 objekta
•* (or n) - neograničeno
•1..* - 1 do beskonačno
•3..9 – 3 do 9
21
22. Navigacija
Ukoliko je asocijacija usmerena, poruke se mogu
prosleđivati samo u tom smeru.
Ukoliko asocijacija nema smerove, onda je definisana
kao dvosmerna asocijacija, a poruke se mogu
prosleđivati u oba smera.
Podrazumevano je da su sve relacije usmerene, osim
ako zahtevi ne diktiraju dvosmerne relacije.
Folder File
Zbog čega je usmerena? Na primer, ako
želimo da znamo fajlove svakog foldera.
Ipak, nemamo zahtev da znamo folder
svakog fajla.
22
23. Imena uloga
Imena mogu biti dodata na svaki kraj asocijacije
Obezbeđuje bolje razumevanje značenja asocijacije
Posebno je značajna u samo-asociranim klasama.
Worker * 1..* 0..1
Person Company
employee employer
0..1
Manages Manager
23
24. Ograničenja
Ograničenja su jednostavna svojstva asocijacija, klasa i
mnogih drugih elemenata u UML-u
Definiše ograničenja koja implementatori moraju da
zadovolje
Window Ograničenja
length
atributa
width
{0.8 ≤length/width≤1.5}
24
25. Ograničenja
Project
Outsource
*
*
Task {xor} Committee
memberOf
{subset} *
chairOf
*
boss
Samo jedna od asocijacija može
Employee 0..1
postojati za datu instancu salary
(značenje “or”) *
{salary < boss.salary}
25
26. Ograničenja
Ograničenja se mogu primeniti na skoro svaki element u
UML dijagramima, korišćenjem:
Prirodnog jezika
Matematičke notacije
OCL (Object Constraint Language)
Iskazi:
nepromenljive: interest > 3%
Preduslovi: pre izršenja pozajmica(), prodaja > 5,000$
Posledice: nakon izvršenja pozajmica(), periodOtplate= 1 or 10
26
27. Zavisnost
Obeležena isprekidanom linijom
Najopštija relacija između klasa
Ukazuje da objekat utiče na drugi objekat
Accounting
SecurityControl
System
<<creates>> <<modifies>>
AccountingSystem kreira
Receipt objekat
Reciept Order
27
28. Zavisnost
Zavisnost je najapstraktniji tip relacija.
Svojstva:
Zavisnost je uvek usmerena (ako određena klasa zavisi od
druge, to ne znači da važi i obrnuto).
Zavisnost nema kardinalnost.
Ako instance dve klase šalju poruke jedna drugoj, ali
nisu međusobno povezane, onda je zavisnost
odgovarajuća relacija.
Tipovi:
«call»
«create»
28
29. Agregacija
“Celina-deo” relacija između klasa.
Sastavljanje klase iz drugih klasa.
Kombinovana sa “many” – spajanje klase od nekoliko instanci te
klase
Word Processing
Document
Author
fileName
Permission
*
*
* Picture
Folder
name
29
30. Kompozicija
Kompozicija je jača forma agregacije
Sadržani objekti žive i umiru unutar kontejnera
Kontejner kreira i uništava sadržane objekte
Window
Operating
close() System
move()
0..2 1
Slider Header Panel
30
31. Kompozicija vs. Agregacija
Agregacija Kompozicija
Objekat-deo može biti deljen Objekat-deo je uvek deo
između više objekata-celina jednog objekta-celine
0..4 * *
category document Window Frame
Objekti-delovi mogu postojati Objekti-delovi postoje samo
nezavisno (i.e., kardinalnost kao deo objekta-celine. Kada je
može biti 0..*) objekat-celina uništen, i objekti-
delovi su uništeni.
Objekat-celina nije potpuno Objekat-celina je odgovoran i
odgovoran za objekat-deo kreira ili uništava objekte-
delove
32. Sadržaj
Uvod
Klase, atributi i operacije
Relacije
Generalizacija
Uputstvo za efikasno modelovanje klasa
32
33. Generalizacija – definicije
Super Class
Super klasa (Osnovna klasa)
Obezbeđuje zajedničke funkcionalnosti i članove
Podklasa (Izvedena klasa) …
Nasleđuje sve atribute i operacije super klase
Može dodati nove operacije i atribute.
Subclass
Može proširiti ili promeniti ponašanje super klase navođenjem
svoje definicije iste metode (polimorfizam).
33
Uvod | Klase | Relacije | Generalizacija | Uputstva
34. Generalizacija – prednosti
GraphicComponent
Modularnost: x : int
y : int
Eliminiše detalje
paint()
repaint()
Nalazi zajedničke karakteristike između klasa
Definiše hijerarhije
Višestruka upotreba:
Button Image
caption : String picture : File
Omogućava specijalizovanje stanja i ponašanja
press() paint()
ImageButton
Polimorfizam
clickImage()
Višestruko
nasleđivanje
34
35. Uputstva za generalizaciju
Pažljivo posmatrajte slična svojstva između objekata, jer
ponekad ona nisu tako očigledna
User Interface
updateName(...)
Šta je updateDesc(...)
problem
ovde?
Document Product Order Worker
id long
: id long
: * id long
: id long
:
*|includes
name String
: name String
: name String
: name String
:
desc String
: desc : String desc String
: desc String
:
subject Subject
: availability int
: date Date
: Salary Float
:
workYears int
:
getCategory() : getCategory() :
*
Category Category
Done by } *
*
*
*
*
Category
name String
:
importance int
:
35
36. Uputstva za generalizaciju
Resource
ID i name su User Interface
zajednički za id long
:
name String
: updateName(...)
updateDesc(...)
sve klase desc String
:
Asocijacija je
Order Worker Product Document isto kao i
Salary Float
: availability int
: subject String
:
svaki drugi
date Date
: Done by }
* * workYears int
: date Date
: atribut
includes }
* *
CategorizedResource Category
* *
getCategory() : name String
:
Category importance int
:
36
37. Abstraktne klase
Klasa koja nema direktne instance
Obeležava se Content
italic imenima
Ili stereotipom <<abstract>>
“abstract” Article Picture
1*..
has picture
News Magazine
Article Article 1*..
37
38. Interfejsi
Interfejs sakriva unutrašnje ponašanje klase i njena
obeležja.
To je zapravo skup pravila koja svaka klasa koja ga
implementira, mora poštovati.
Implementation Interface External Object
Operation 1 Impl’
Operation 1 Operation 1 Declaration
Operation 1
Operation 1
Operation 2 impl’
Operation 2 Operation 2 Declaration
Data
38
40. Notacija interfejsa
«interface»
ICommonObject Client
Application
uniqueID : ID
width : int
height : int
create()
Realizacija: move()
delete()
Objekat display()
garantuje da će
izvršiti pravila
definisana u
interfejsu
PowerPoint
Equation Excel Document
Document
40
41. Sadržaj
Uvod
Klase, atributi i operacije
Relacije
Generalizacija
Uputstvo za efikasno modelovanje klasa
41
42. Kako modelovati?
Odozdo-gore proces Odozgo-dole proces
Započinje stavljanjem svih klasa na Započinje od sistema kao celine,
papir, a zatim se vrši njihovo a zatim se vrši njegovo deljenje na
kombinovanje klase
Product
Configuration
Purchase Catalogue Customer
Shipping
Process
details
Category
Charging Order
process Product spec
Search engine
results
Credit data
42
43. Odozgo-dole metodologija
Credit card
Analiza opsega Catalogue
validator
Identifikovanje glavnih
klasa Catalogue Order Customer
Identifikovanje
svojstava Order
id, state...
changeState()
Identifikovanje metoda ship()
Prerada i normalizacija Order State
klasa id started, ended
Order Business
Generalizovanje klasa id Order
Analiza : Order : Customer
id = 18734 name = “cohen”
43
46. Normalne forme u UML klasama
Ne-normalizovan model može imati sledeće probleme:
Podaci su međusobno povezani
Teško je pojedinačno upravljati elementima podataka
Normalizacija:
Skup dizajnerskih strategija
Obezbeđuje slabo povezan dizajn
Poreklo: relacione baze podataka
Ali u dijagramu klase nemamo primarne ključeve
Ne-normalizovan
model 46
47. Prva normalna forma
Klasa je u 1NF kada je određeno ponašanje (kolekcija
sličnih atributa) zahtevano od određenog atributa,
smešteno u sopstvenu klasu
47
48. Druga normalna forma
Klasa je u 2NF kada je u 1NF i kada je zajedničko
ponašanje koje koristi više od jedne instance klase
predstavljeno u sopstvenoj klasi
48
50. Uputstvo za kreiranje klasa
Identifikovanje klasa
Vrlo slično identifikovanju repozitorijuma u dijagramima toka
podataka. Identifikujte elemente podataka i modelujte ih.
Razmišljajte o klasama koje upravljaju procesima. Ako su
operacije previše komplikovane, možemo ih modelovati
odvojeno.
Razmišljajte o učesnicima. Da li su sve njihove potrebe
pokrivene postojećim operacijama.
50
51. Osnovne pretpostavke
Pristup klasama
Korisnici mogu izvršiti bilo koju javnu (public) operaciju klase.
Public metode treba koristiti samo kada je to potrebno.
51
52. Pronalaženje objekata
Objekti se mogu naći, pretraživati ili locirati bez ikakve
agregatne klase.
Ovo je dovoljno da bi
Loan Service
pristupio svim
instancama klase
Book
52
53. Uputstva – Modelovanje učesnika
Najčešća greška je modelovanje učesnika kao klasa
Treba zapamtiti -
Učesnici interaguju sa sistemom direktno i nije ih potrebno
apriori predstavljati.
Ponekad, sistem čuva podatke o korisnicima, ali to ne znači da
izvršavaju sve svoje akcije kroz ovu klasu.
53