BÀI 1:
GII THIU UML
UML là vit tt ca Unified Modeling Language (ngôn ng mô hình hóa thng nht). ó là
mt trong các công c ni bt nht trong vic phát trin h thng ngày nay. Ti sao vy?
UML cho phép ngi xây dng h thng không ch to ra các bn thit k cha ng nhng
cái nhìn/nhn thc ca h theo mt cách d hiu và chun xác mà còn có th truyn t vi
nhau v chúng.
Ni dung chính trong bài hc:
+ Ti sao UML là cn thit
+ UML hình thành nh th nào
+ Các loi s (diagram) khác nhau ca UML
+ Ti sao cn thit phi s dng nhiu loi diagram khác nhau
Thut ng: trong giáo trình này, h thng (system) c xem là s kt hp gia phn mm
(software) và phn cng (hardware) nh m cung cp mt gii pháp cho mt vn . Phát
trin h thng (system development) là vic to ra mt h thng cho khách hàng, ngi có
vn cn gii quyt. Mt phân tích viên (analyst) tài liu hóa vn ca khách hàng và
chuyn nó sang ngi phát trin (developer), lp trình viên (programmer) xây dng
phn mm gii quyt vn và trin khai phn mm trên phn cng máy tính.
UML hình thành nh th nào
UML là sn phm trí óc ca Grady Booch, James Rumbaugh và Ivar Jacobson. Trong
nhng n!m t" 80 n 90, m#i ngi trên làm vic ti nhng t chc khác nhau và phát minh
phng pháp phân tích thit k hng i tng riêng ca mình. Nhng phng pháp ca
h t c tính u vit hn so vi nhiu phng pháp khác. n gia nhng n!m 90, h
bt u mn ý t$ng ca nhau và dn tin n hp tác cùng nhau.
N!m 1994, Rumbaugh gia nhp Rational Rose Corporation cùng vi Booch và sau ó mt
n!m thì Jacobson c%ng cùng gia nhp.
Phiên bn kh$i u ca UML bt u c truyn bá khp ngành công nghip phn mm và
em li nhng thay i áng k. Nhiu công ty phn mm cm thy r ng UML áp ng
c mc tiêu chin lc ca h, do vy mt liên minh tm thi c dng lên. Các thành
gii thc. Class diagram tr giúp v m(t phân tích. Chúng cho phép các phân tích viên nói
chuyn vi khách hàng vi nhng ngôn t" ca h và t" ó khuyn khích khách hàng trình
bày các chi tit quan trng ca vn h g(p phi.
S i tng (Object diagram)
Thut ng: Mt i tng (object) là mt th hin ca mt class - mt vt c th có các giá
tr' c th cho các thuc tính và hành vi. Ví d, cái máy gi(t ca bn có nhãn hiu là
“Laundatorium”, tên i là “Washmeister”, s serial là GL57774 và sc cha là 16 kg. ó
chính là mt i tng.
Hình 1.2 cho thy UML biu din mt object. Chú ý r ng biu tng là mt hình ch nht
nh biu tng class, nhng tên gch di. Tên ca mt th hin c th n m bên trái du :,
còn tên class n m bên phi.
Hình 1.2
Biu tng object ca UML S tình hung ng dng (Use Case Diagram)
Thut ng: Mt tình hung ng dng (use case) là mt mô t v mt hành vi ca h thng
t" quan im ngi dùng. i vi ngi phát trin h thng, ây là mt công c có giá tr':
nó là mt k* thut th-và-úng (tried-and-true technique) cho vic thu thp yêu cu h
thng t" quan im ngi dùng. iu ó rt quan trng nu mc tiêu là xây dng mt h
thng mà con ngi thc có th s dng.
Chúng ta s& tìm hiu sâu hn v use case sau này. Bây gi, hãy xem ví d hình 1.3, chúng ta
dùng máy gi(t rõ ràng gi(t áo qun.
Hình 1.3
S use case ca UML Thut ng: Hình nhân (stick) nh) tng trng cho ngi dùng máy gi(t c gi là tác
nhân (actor). Hình ellipse biu din use case. Chú ý r ng actor–thc th kích hot use case–
có th là con ngi ho(c mt h thng khác.
9. Nc vt thoát ra thông qua ng thoát
10. Trng quay 1 chiu nhanh dn trong vòng 5 phút
11. Trng ng"ng quay và vic gi(t hoàn tt.
Hình 1.5 biu din sequence diagram ghi nhn các tng tác gia cp nc, trng gi(t và
ng thoát (biu din b ng các hình ch nht phía trên) din ra theo thi gian. Thi gian
trong diagram trôi theo chiu t" trên xung.
Hình 1.5
S trình t ca UML
Tr$ li ý t$ng v trng thái, chúng ta có th phân chia các bc 1 và 2 là trng thái ngâm,
các bc 3 và 4 là trng thái gi(t, các bc 5-7 là trng thái gi% và bc 8-10 là trng thái
vt.
S hot ng (Activity Diagram)
Các hot ng xut hin trong mt use case ho(c trong mt hành vi ca object thng din
ra theo mt trình t nh 11 bc $ ví d trên. Hình 1.6 cho thy cách s hot ng UML
biu din các bc 4-6 ca trình t.
Hình 1.6
S hot ng ca UML
S cng tác (Collaboration Diagram)
Các thành phn ca h thng làm vic vi nhau hoàn thành mc tiêu (t ra và mt ngôn
ng mô hình hóa cn có cách biu din s hp tác này. S cng tác UML c thit k
ta a chúng vào trong mt package, biu din nh hình 1.10.
Hình 1.10
Gói UML cho phép
nhóm các thành phn
ca mt diagram
Ghi chú (Note)
Thut ng: Ghi chú (note) ca UML giúp tránh mt thành phn nào ó trong diagram b'
hiu nhm.
Hình 1.11
Trong bt c diagram
nào, ta cng có th thêm
các ghi chú
Mu (Stereotype)
Thut ng: M.u (stereotype) cho phép dùng các thành phn UML s+n có ch bin ra
nhng cái mi.
Thut ng: Khái nim giao din (interface) là mt ví d tt cho stereotype. Mt interface là
mt class ch có operation mà không có attribute. Nó chính là mt tp các hành vi mà ta
mun dùng li nhiu ln trên khp mô hình. Thay vì ngh- ra mt thành phn mi biu
din mt interface, ta có th dùng mt biu tng class vi <<interface>> gn phía trên tên
class.
Hình 1.12
Mt stereotype cho phép
to mt thành phn mi
t nhng cái sn có.
Ti sao cn thit phi s dng nhiu loi diagram khác nhau?
Thut ng: Mt h thng có nhiu ngi quan tâm vi nhiu khía cnh khác nhau, h c
+ S tru tng hóa (abstraction)
+ S tha k (inheritance)
+ Tính a hình (polymorphism)
+ Tính óng gói (encapsulation)
+ Vic truyn thông ip (message sending)
+ Mi kt hp (association)
+ S tp hp (aggregation)
Hng i tng em li nhng i thay rt ln cho th gii phn mm. Nó c xem là
mt cách thc mi to chng trình và có rt nhiu u im. Nó hng theo cách tip
cn da trên thành phn (component-based approach) phát trin phn mm sao cho mt
h thng chính là mt tp các i tng (object). Sau ó, ta có th m rng h thng bng
cách tng cng kh nng cho các thành phn sn có hoc thêm các thành phn mi. cui
cùng, ta có th tái s dng các object ã to cho h thng trc ó khi xây dng mt h
thng mi, làm ct gim áng k thi gian phát trin h thng.
Hng i tng rt quan trng i vi ngành công ngh phn mm và OMG (Object
Management Group) là mt t chc ã thit lp các chu n cho vic phát trin hng i
tng. UML cho phép ta xây dng các mô hình d! dùng, d! hiu c"a các i tng sao cho
các lp trình viên có th to ra chúng trong phn mm.
Hng i tng ch# là mt tp ý tng da trên mt s nguyên lý c s. Trong bài này,
chúng ta s$ tìm hiu các nguyên lý ó.
i tng (object) có mi ni
%i tng có tính c th, nói cách khác chúng t&n ti xung quanh ta, chúng to nên th gii.
Nh ã cp trong bài trc, phn mm ngày nay có xu hng mô ph'ng th gii hoc
mt phn nh' c"a thê 1gii, do vy các chng trình thng “bt trc” các object trong th
gii thc.
Thut ng: %i tng (object) là mt th hin (instance) c"a mt lp (class). M(i ngi
chúng ta là mt th hin c"a lp con ngi (person class). Mt object có cu trúc
(structure). Ngh)a là nó có các thuc tính (attribute, property) và hành vi (behavior). Mt
hành vi c"a object bao g&m các hành ng (operation) mà nó thc hin. Thuc tính và hành
vi kt hp thành c trng (feature) c"a object.
hình gn vi thc t
hn.
Trang 3 – Bài 2
Các khái nim
S tru tng hóa (abstraction):
Thut ng: s tru tng hóa là s n gin hóa, lc b' i các tính cht, hành ng c"a
mt thc th ch# còn li nhng gì cn thit.
Các loi vn khác nhau òi h'i mc thông tin khác nhau. Hình 2.2 xây dng mt mô
hình washing machine vi nhiu thuc tính và hành vi hn so vi Hình 2.1. Làm nh th có
cn thit không?
Nu ta là thành viên trong mt nhóm vi nhim v to mt chng trình máy tính mô ph'ng
chính xác cách thc mt máy git hot ng thì vic b sung thuc tính, hành vi nh ã nói
là rt cn thit. Mt chng trình máy tính nh th (dùng cho k- s thit k máy git) phi
có " thông tin d tính chính xác v nhng s$ di!n ra khi máy git c to ra, khi nó
vn hành thc t. %i vi các loi chng trình nh th, có th loi b' nhng thuc tính
không thc s hu dng nh thuc tính serial number.
Vi ví d khác, nu chúng ta to mt phn mm theo dõi các giao d.ch trong mt ca hàng
git "i có nhiu máy git thì vic b sung thuc tính, hành vi nh ã nói là không cn thit.
Chúng ta có th gi li thuc tính serial number cho m(i i tng máy git.
S tha k (inheritance):
Thut ng: Mt class là mt lp các object (trong phn mm, nó là mt m,u cho vic to
object mi). Ngc li, mt object là mt th hin (instance) c"a mt class và nó có tt c
các c tính mà class có. %iu này gi là s tha k (inheritance). Bt c thuc tính và
là subclass
Tính a hình (polymorphism):
Thut ng: ôi khi, mt hành vi (operation) có cùng tên trong các class khác nhau. Ví d,
“open” ca ln, “open” ca s, “open” tp chí, món quà, tài khon ngân hàng, …Trong m(i
trng hp ó, chúng ta thc hin mt hành vi khác nhau. Trong hng i tng, mt
hành vi cùng tên có th c thc hin khác nhau vi nhng class khác nhau. %iu này
c gi là tính a hình (polymorphism).
Hình 2.5
Trong tính a hình, mt
hành vi có th có cùng
tên trong nhng class
khác nhau và tin hành
khác nhau trong mi
class. Trang 5 – Bài 2
Tính óng gói (encapsulation):
Khi mt object thc thi các hành vi c"a nó, các hành vi này b. che du (xem hình 2.6). Khi
chúng ta xem tivi, chúng ta không bit và không quan tâm n các linh kin in t phc
tp phía sau màn hình tivi, c*ng nh nhiu hành vi nhm quét nh lên màn hình.
Hình 2.6
Các object óng gói
nhng gì chúng thc
hin. Ngha là, chúng
du i các hot ng
bên trong ca các hành
Trang 6 – Bài 2
Mi kt hp (association):
Thông thng, các object không c lp mà có quan h vi nhau. Ví d, khi bn bt Tivi,
theo thut ng hng i tng, bn và tivi có mt mi kt hp (association). Mi kt hp
“turn-on” là mi kt hp n hng (unidirectional), nh hình 2.8.
Ngoài ra còn có mi kt hp hai hng (bidirectional), ch+ng hn nh “is married to”.
Hình 2.8
Các object thng kt
hp vi nhau theo mt
vài cách. Khi mt ngi
bt TV, ngi ó ang
trong mi kt hp n
hng vi TV.
%ôi khi mt object có th kt hp vi mt object khác theo nhiu cách. Nu bn và &ng
nghip là bn bè thì gia 2 ngi có 2 association là “is the friend of” và “is the coworker
of”. Xem hình 2.9.
Hình 2.9
Các object ôi khi kt
hp vi nhau theo
nhiu cách.
Mt class có th kt hp cùng lúc vi nhiu class khác nhau. Mt ngi có th i trên ô tô
và ngi c*ng có th i trên xe bus. Xem hình 2.10.
Hình 2.10
Mt class có th kt hp
vi nhiu class khác.
Thut ng: Mt dng c bit c"a aggregation liên quan n quan h cht ch$ gia mt
aggregation object vi các thành phn c"a nó. Nó c gi là s cu thành (composition).
%im chính yu c"a composition là các thành phn t&n ti nh là nhng component ch#
trong composite object thôi. Ví d, 1 sáo smi (shirt) là mt composite c"a 1 thân (body), 1
c áo (collar), 2 tay áo (sleeve), mt s nút áo (button), khuyt áo (buttonhold) và c tay áo
(cuff). Nu tách kh'i shirt thì collar tr nên vô dng.
%ôi khi, mt thành phn trong mt composition không t&n ti mãi cùng composition. Ví d
lá (leaf) tên mt cây (tree) có th tàn trc khi cây cht. D) nhiên, nu ta h"y cây thì lá c*ng
cht theo (xem hình 2.12)
Khái nim aggregation và composition quan trng bi chúng phn ánh nhng s vic rt
thông thng và giúp chúng ta to ra các mô hình gn ging vi thc t.
Trang 8 – Bài 2
Hình 2.11
Trong mt composition,
mt thành phn có th
“cht” trc khi
composition “cht”.
Nu ta hy s cu thành
(composite) thì các
thành phn cng b hy
theo. Tóm lc
Hng i tng là mt tp các t tng da trên mt s nguyên lý c bn. Mt i tng
là mt th hin c"a mt lp. Mt lp loi tng quát c"a các i tng có c"ng thuc tính và
hành vi. Khi ta to mt i tng, vn là cn xác .nh nhng thuc tính và hành vi cho
i tng.
Ni dung chính trong bài hc:
+ Trc quan hóa mt lp (class)
+ Các thuc tính (attribute)
+ Các hành vi (operation)
+ Các áp ng (responsibility) và ràng buc (constraint)
Trc quan hóa mt lp (class):
Chúng ta ã bit rng 1 hình ch nht là biu tng dùng biu din 1 class trong UML.
Tên ca class, theo qui c, là mt t vi ký t u vit hoa, xut hin phía trên ca hình
ch nht. Nu tên class có 2 t tr lên thì kt các t sát vi nhau vi ch hoa u t (ví d
WashingMachine trong hình 3.1).
Hình 3.1
Biu tng class trong UML
Mt cu trúc UML khác, gi là gói (package), có th óng vai trò trong tên ca mt class.
Nh ã gii thiu trong các bài trc, mt package, c biu din nh mt tabbed folder,
là cách ca UML nhm t chc các thành phn ca diagram. Xem biu tng package trong
hình 3.2.
Hình 3.2
Ví d package UML
Thut ng: Nu lp WashingMachine là thành phn ca mt package có tên là Household
appliances, ta có th t tên cho class là Household appliances::WashingMachine. 2 du hai
chm tách ri tên package bên trái vi tên class bên phi. Loi tên class này gi là mt tên
ng dn (pathname). Xem hình 3.3
Hình 3.3
Mt class vi mt pathname T
UML cho phép a vào các thông tin b sung cho các thuc tính. Trong biu tng class, ta
có th c t mt kiu d liu cho tng giá tr ca thuc tính. Nhng kiu d liu có th là
string, floating-point number, integer và boolean. ! mô t kiu, dùng mt du : ng"n cách
gia tên thuc tính vi tên kiu. Ngoài ra, có th ch# ra giá tr mc nh (default value) cho
mt thuc tính. Hình 3.6 ch# ra các cách c t thuc tính.
Hình 3.6
Mt thuc tính có th
cho bit kiu ca nó
cng nh giá tr mc
nh.
T
rang
3
–
B
à
i 3
Các hành vi (operation):
Thut ng: Mt hành vi (operation) là cái mà mt class có th t làm c hoc chúng ta
(hoc class khác) có th làm cho class ó. Gi$ng nh tên thuc tính, mt tên hành vi c%ng
ch# toàn ch thng khi nó có 1 t. Nu tên hành vi gm 2 t tr lên thì m i t bt u bng
ch hoa ri kt lin vi nhau. Danh sách các operation nm bên di danh sách các
attribute.
Hình 3.7
Danh sách các hành vi
–
B
à
i 3
Hình 3.9
Trong thc t, ta không
phi luôn luôn biu
din tt c các thuc
tính và hành vi ca mt
class.
Thut ng: !ôi lúc cn biu din mt vài (không phi tt c) attribute và operation. ! làm
iu này, ta hin th nhng gì cn thit ri theo sau danh sách là du ba chm. !iu này
c gi là s t)nh lc (ellipsis) và vic b( qua mt vài attribute hoc operation c gi
là t)nh lc mt class. Hình 3.10 cho thy cách s& dng mt t)nh lc.
Hình 3.10
Mt tnh lc cho thy
các operation không
phi là tp y .
Nu danh sách các attribute và operation quá dài, ta có th dùng mt stereotype t chc
cho danh sách cô ng h*n. Mt stereotype là cách ca UML cho phép ta m rng nó: cho
phép ta to các thành phn mi riêng bit cho vn c th ang cn gii quyt. Nh ã
cp trong các bài trc, ta biu din stereotype nh mt tên gi trong cp ngoc nhn gi là
guillemet. !$i vi mt danh sách thuc tính, ta có th dùng mt stereotype nh tiêu cho
mt tp thuc tính con.
Hình 3.11
S dng mt stereotype
responsibility ca class
trong mt vùng di
danh sách các
operation.
Thut ng: ! thêm mt ràng buc (constraint), dùng du ngoc móc bao ly ni dung
ràng buc. Ni dung ràng buc trong ngoc c t các lut mà class phi tuân th. Ví d,
trong lp WashingMachine, ta mu$n c t rng sc cha ca mt máy git ch# có th là 16,
18 hoc 24 pound (có ngh)a ràng buc trên thuc tính capacity ca lp WashingMachine), ta
vit {capacity=16 or 18 or 24 lb) gn vi biu tng lp WashingMachine.
Hình 3.13
Lut trong ngoc móc
ràng buc thuc tính
capacity vi 1 trong 3
giá tr có th. Ghi chú (note):
Ngoài attribute, operation, responsibility và constraint, ta còn có th thêm thông tin vào mt
class di dng ghi chú (note) ính kèm class.
Ta thng thêm mt note cho mt attribute hay operation. Hình 3.14 biu din mt note cho
bit cách thc sinh s$ serial number cho các object trong lp WashingMachine.
T
rang
6
–
Bài tp:
1. Mô t ngn cho môn hockey:
Trang 1 – Bài 4
BÀI 4
LÀM VIC VI MI QUAN H
Ni dung chính trong bài hc:
+ Mi kt hp (association)
+ Lng s (multiplicity)
+ Các mi kt hp nh tính (qualified association)
+ Các mi kt hp phn hi (reflexive association)
+ Tha k và tng quát hóa (inheritance and generalization)
+ S ph thuc (dependency)
Mi kt hp (association):
Thut ng: Khi các lass kt ni vi nhau thì s kt ni ó c gi là mi kt hp
(association). Hãy cùng xem xét mi kt hp gia mt cu th (player) và mt i bóng
(team). Ta có th mô t c im association này bng mt câu “mt player chi trong mt
team”. Ta hình dung assocition nh mt ng ni gia 2 class vi tên ca association
(“plays on”) nm trên ng ni. Ngoài ra hng ca quan h còn c ch ra bi hình tam
giác nh. Hình 4.1 cho thy cách trc quan hóa mi kt hp “plays on” gia player và team.
Hình 4.1
Mt kt hp gia mt
player và mt team.
Khi 2 class kt hp vi nhau thì mi class s óng mt vai trò (role) trong mi kt hp ó.
Ta có th biu din các vai trò trên diagram bng cách vit chúng gn ng ni. Trong
association gia player và team, nu i bóng là chuyên nghip thì team s có vai trò
ký. Ta th hin qui t$c này trong mô hình bng cách t t “ordered” trong cp du móc (ký
hiu ràng buc) gn lp Customer, nh hình 4.5.
Hình 4.5
Có th t mt ràng buc
trên mt association.
Trong ví d này,
association tên “Serves”
b ràng buc rng
BankTeller phi phc v
Customer theo trt t xp
hàng.
Mt lo%i ràng buc khác là quan h hoc (or), ký hiu bi {or} trên mt ng &t nét ni 2
ng association. Hình 4.6 mô hình hóa vic hc sinh ph thông chn mt khóa hc v
hc thu"t hay khóa hc v thng m%i.
Trang 3 – Bài 4
Hình 4.6
Mi quan h Or gia 2
association là mt ràng
buc.
Lp kt hp (association class):
Thut ng: Mt association có th có các attribute và operation nh class. Trong trng
hp này, ta có mt lp kt hp (association class). Ta trc quan hóa mt association class
ging nh vi class thông thng và dùng mt ng &t nét ni nó vi ng association.
Mt association class c'ng có th có association vi các class khác. Hình 4.7 cho thy mt
association class, thay th cho association tên “Plays On”, kt hp vi class General
Manager.
Hình 4.7
Mt association class