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
viên ca liên minh gm EDC, Hewlett-Packard, Intellicorp, Microsoft, Oracle, Texas
Instruments, Rational và mt s khác. n n!m 1997, liên minh cho ra i version 1.0 ca
UML và trình nó lên T chc qun lý i tng (Object Management Group – OMG)
tr$ thành ngôn ng mô hình hóa chun.
Liên minh tip tc cho ra version 1.1 và a nó n OMG cui n!m 1997. Vào 1998, có
thêm 2 version na ca UML c to ra. UML tr$ thành mt tiêu chun trong công nghip
phn mm và nó không ng"ng phát trin.
Các thành phn ca ca UML
UML bao gm mt s thành phn ha kt hp vi nhau hình thành nên các s
(diagram). Do là mt ngôn ng, UML có nhng qui tc cho vic kt hp các thành phn
này. Vic gii thiu cho tit v các thành phn c%ng nh các qui tc s& thc hin sau, chúng
ta cùng hiu s qua v các diagram b$i chúng s& c dùng cho phân tích h thng.
Thut ng: Mc tiêu ca các diagram là trình bày nhng cái nhìn (view) khác nhau v mt
h thng và tp hp các view c gi là mô hình (model). Mt mô hình UML ca mt h
thng. Chú ý r ng UML mô t nhng cái mà mt h thng c gi 'nh thc hin. Nó
không cho bit cách thc thc hin h thng.
S i tng (Object Diagram)
Thut ng: Các vt c phân chia mt cách t nhiên thành các nhóm (automobile,
furniture, washing machines, …). Chúng ta gi các nhóm này là lp (class). Mt class là
mt nhóm các vt có cùng thuc tính (attribute) và hành vi (behavior). Ví d, Bt c máy
gi(t nào thuc lp “washing machines” u có các thuc tính nh tên hiu, model, s serial,
và sc cha. Hành vi ca chúng gm “add clothes”, “add detergent”, “turn on” và “remove
clothes”.
Hình 1.1
Biu tng class ca UML
Ti sao cn bn tâm v các class và các thuc tính, hành vi ca chúng? tng tác vi th
gii phc tp ca chúng ta, các phn mm hin nay cn mô ph)ng mt s khía cnh ca th
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.
S trng thái (State Diagram)
Ti thi im nào thì mt object c%ng phi có mt trng thái xác 'nh. Mt ngi có th là
s sinh, a bé còn +m nga, tr, em, thiu niên ho(c tr$ng thành. Mt thang máy có th
ang i lên, i xung ho(c ng yên. Mt máy gi(t có th ang ngâm (soak), gi(t (wash),
gi% (rinse), vt (spin) ho(c không hot ng.
S trng thái hình 1.4 cho thy máy gi(t d'ch chuyn gia các trng thái. Biu tng ti
u diagram là trng thái bt u (start state) còn $ cui là trng thái kt thúc (end state).
Hình 1.4
S trng thái ca UML
S trình t (Sequence Diagram)
Class diagram và object diagram biu din thông tin t-nh. Trong mt h thng chc n!ng,
các object luôn tng tác l.n nhau. S trình t ca UML (sequence diagram) biu din
s tng tác theo thi gian.
Tip tc vi ví d máy gi(t, các thành phn ca máy gm mt ng cp nc (cp nc
sch), mt trng gi(t (cha áo qun) và mt ng thoát. Chúng d- nhiên c%ng là các object.
iu gì xy ra khi ta kích hot use case “wash clothes”? Gi s ta ã hoàn tt các hot ng
“add clothes”, “add detergent” và “turn on”, chu#i các bc tin hành s& nh sau:
1. Nc vào trng thông qua ng cp
2. Trng ng yên trong 5 phút
3. Nc ng"ng cp
4. Trng quay ngc và xuôi trong 15 phút
5. Nc xà phòng thoát ra thông qua ng thoát
6. Nc sch c cp li
7. Trng tip tc quay ngc và xuôi
8. Nc ng"ng cp
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
cho mc tiêu trên, nh hình 1.7. Ví d này thêm b m thi gian (internal timer) trong tp
class to nên máy gi(t. Sau mt khong thi gian nht 'nh, timer d"ng vic cp nc và
trng gi(t xoay ngc xuôi.
Hình 1.7
S cng tác ca UML
S thành phn (Component Diagram)
S này và tip theo thoát kh)i máy gi(t b$i s thành phn (component diagram) và s
trin khai (deployment diagram) hng biu din sang các h thng máy tính.
Vic phát trin các phn mm ngày nay tin hành thông qua các thành phn phù hp vi
cách thc lp trình theo nhóm.
Hình 1.8
S thành phn ca UML
S trin khai (Deployment Diagram)
S trin khai cho bit kin trúc vt lý ca mt h thng da trên máy tính. Nó v& nên các
máy tính và thit b', cho thy các kt ni gia chúng và cho bit phn mm trên m#i máy.
M#i máy tính c biu din b$i mt khi lp phng vi các ng ni gia các máy tính.
Hình 1.9
S trin khai ca UML
Mt s tính nng khác
UML cung cp mt s tính n!ng khác cho phép t chc và m$ rng các diagram
Gói (package)
Thut ng: Khi cn t chc các thành phn ca mt diagram vào trong mt nhóm (group),
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
gi là stakeholder.
Vic thit k h thng liên quan n tt c các khía cnh (viewpoint) có th có. M#i UML
diagram cho ta mt cách to nên mt cái nhìn c th nh m th)a mãn m#i loi stakeholder.
Tóm lc
Vic phát trin h thng là mt hot ng mang tính con ngi. Nu thiu mt h thng ký
hiu d hiu thì quá trình phát trin d sinh l#i.
UML là mt h thng ký hiu ã tr$ thành mt chun trong vic phát trin h thng. Nó là
phát minh ca Grady Booch, James Rumbaugh và Ivar Jacobson. UML bao gm mt tp
các diagram cung cp mt chun cho phép các phân tích viên h thng xây dng mt bn
thit k a din d hiu i vi khách hàng, lp trình viên hay bt c ai liên quan n quá
trình phát trin h thng. Lý do cn thit có nhiu loi diagram khác nhau vì m#i loi dành
cho mt stakeholder khác nhau trong h thng.
Câu hi:
1. Ti sao cn thit phi có nhiu diagram khi mô hình hóa mt h thng?
2. Nhng diagram nào cung cp các nhìn t-nh (static view) v h thng?
3. Nhng diagram nào cung cp các nhìn ng (dynamic view) v h thng (biu din
s thay i theo thi gian)?
Bài tp:
1. Gi s bn ang xây dng mt chng trình máy tính chi c vui vi ngi. Các s
UML nào cn thit trong quá trình thit k? Vì sao?
2. i vi h thng $ bài tp trên, lit kê các câu h)i mà bn s& (t ra vi nhng ngi
cn thit và ti sao bn li h)i h.
Trang 1 – Bài 2
BÀI 2:
TÌM HIU V HNG I TNG (OBJECT-ORIENTATION)
Ni dung chính trong bài hc:
+ 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.
Vì là các object trong lp person nên m(i ngi chúng ta có các thuc tính nh: chiu cao,
cân nng, tui, … Chúng ta c*ng thc hin mt s hành ng nh: n, ng", c, vit, nói, i
Trang 2 – Bài 2
làm, … Nu chúng ta cn to mt h thng x lý các thông tin v con ngi, ch+ng hn nh
h thng qun lý lng hay h thng qun lý nhân s, chúng ta cn kt hp cht ch$ các
thuc tính và hành ng này trong phn mm c"a chúng ta.
Trong th gii hng i tng, mt class là mt m,u (template) sinh các object. Tr li
vi ví d v máy git (washing machine). Nu lp washing machine c mô t bi các
thuc tính nh brand name, model name, serial number và capacity cùng vi các hành vi
nh add clothes, add detergent và remove clothes. Vi các thuc tính và hành vi trên, ta có
c c ch sn xut ra các th hin (instance) mi c"a lp washing machine, có ngh)a là
ta có th to các object mi. Xem hình 2.1
Hình 2.1
Lp washing machine –
mô hình gc ca mt
máy git – là mt mu
(template) cho vic to
ra các th hin mi ca
các máy git.
Chú ý rng mc tiêu c"a hng i tng là phát trin phn mm có kh nng phn ánh mt
phn c th c"a th gii thc. Càng nhiu thuc tính (attribute) và hành vi (behavior) thu
thp c thì mô hình s$ càng có tính thc ti!n. Trong ví d trc, có th b sung thêm các
thuc tính nh drum volume, internal timer, trap, motor và motor speed. Các hành vi có th
b sung g&m add bleach, time the soak, time the wash, time the rise và time the spin. Xem
hình 2.2
Hình 2.2
Thêm các thuc tính và
hành vi giúp cho mô
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à
hành vi nào ta quyt .nh cho lp washing machine, m(i object thuc lp c*ng s$ tha k
các thuc tính và hành vi ó.
Không phi ch# có object tha k t class mà mt class c*ng có th tha k t mt class
khác. Ví d washing machines, refrigerators, microwave ovens, toasters, dishwashers,
radios, waffle makers, blenders và irons u là các class, nhng chúng là thành viên c"a mt
class chung hn: appliances (& in gia dng). Mt appliance có các thuc tính nh công
tc on-off, dây in và các hành vi tt , m.
Thut ng: Nói cách khác các lp washing machines, refrigerators, microwave ovens, … là
các lp con (subclass) c"a lp appliance. Lp appliance gi là lp cha (super class) c"a các
lp khác. Hình 2.3 cho thy quan h superclass và subclass.
Trang 4 – Bài 2
Hình 2.3
Các loi gia dng
khác nhau tha k các
thuc tính và hành vi
ca lp appliance. Mi
loi in gia dng
khác nhau là mt
subclass ca lp
appliance. Ngc li,
lp appliance là mt
superclass
S tha k không dng ó. Ch+ng hn Appliance tip tc là subclass c"a lp Household
Item (& gia dng). Mt subclass khác c"a Household Item là lp Furniture
Hình 2.4
Superclass cng có th
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
vi i vi th gii bên
ngoài và các object
khác.
Vic truyn thông ip (message sending):
Trong mt h thng, các object làm vic cùng nhau bng cách gi các thông ip (message)
qua li. Mt object gi message n object kia thc thi mt hành vi (operation) và object
nhn message s$ thc thi hành vi ó.
Ly ví d gia mt TV vi mt iu khin t xa (remote). Khi mun xem TV, chúng ta
nhn nút ON trên remote. %iu gì xy ra? i tng remote gi mt message n i tng
TV bt TV lên. %i tng TV khi nhn c message này s$ ‘bit’ cn làm gì thc
hin hành vi bt TV. Khi mun xem kênh khác, chúng ta nhn vào nút kênh tng ng trên
remote và i tng remote s$ gi message khác (thay i kênh) n i tng TV. Ngoài
ra còn rt nhiu chc nng khác, …
% cp chút ít v giao tip (interface). Hu ht các chc nng iu khin TV bng remote
u có th thc hin nh các nút bm ngay trên TV. Nhng rõ ràng, interface mà TV th
hin i vi chúng ta (tp các nút bm trên TV) không ging vi interface mà nó th hin
i vi remote (thông qua b nhn tia h&ng ngoi).
Hình 2.7
Ví d v vic truyn
message t mt object này
n mt object khác.
Remote-object gi mt
message n TV-object
bt TV. TV-object nhn
message thông qua
interface ca nó, ó là b
nhn tia hng ngoi.
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.
Trang 7 – Bài 2
Thut ng: Lng s (multiplicity) là mt khía cnh quan trng c"a association gia các
object. Nó cho bit s lng object trong mt class có quan h vi vi 1 object c"a class kt
hp. Khóa hc (course) và ngi hng d,n (instructor) là mi kt hp 1-1 (one-to-one
association). Trong trng hp c bit, khi mt vài instructor cùng dy mt course trong
sut hc k/ thì mi kt hp gia course và instructor là one-to-many.
S tp hp (aggregation):
Hãy xem xét h thng máy tính c"a bn. Nó bao g&m 1 thùng CPU, 1 keyboard, 1 mouse, 1
monitor, 1 CD-ROM drive, 1 hoc nhiu HD, 1 modem, 1 FD, 1 printer và có th có thêm
vài hp loa. Bên trong thùng CPU còn có 1 CPU, 1 graphics card, 1 sound card và mt s
linh kin cn thit khác.
Thut ng: Máy tính c"a bn c xem là mt s tp hp (aggregation), là mt loi khác
c"a association gia các object. Ging nh nhiu th khác, máy tính c to nên t mt s
linh kin khác nhau (xem hình 2.11).
Hình 2.11
Mt h thng máy tính
c thù là mt ví d cho
aggregation-mt object
c to nên t s tp
hp ca mt vài loi
object khác nhau.
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.
Tha k (inheritance) là mt mt quan trng trong hng i tng: Mt i tng tha k
các thuc tính và hành vi t lp c"a nó. Mt lp c*ng có th tha k các thuc tính và hành
vi t mt lp khác.
Tính a hình (polymorphism) là mt mt quan trng khác. Nó ch# ra rng mt hành vi có th
có cùng tên trong các lp khác nhau, nhng m(i lp s$ thc thi hành vi theo mt cách khác
nhau.
Các object che du vic thc thi các hành vi i vi object khác và c i vi th gii bên
ngoài. M(i object a ra mt giao din (interface) sao cho các object khác có th yêu cu nó
thc thi các hành vi c"a chính nó.
Các object làm vic vi nhau bng cách gi thông ip (message) qua li. Thông ip là các
yêu cu thc thi hành vi.
Các object thng có mi kt hp vi mt objedt khác. Mi kt hp (assocition) ó có
nhiu dng khác nhau. Mt object trong mt class có th kt hp vi nhiu objest trong
class khác.
S tp hp (aggregation) là mt loi kt hp. Mt i tng tp hp (aggregate object) bao
g&m mt tp các i tng thành phn.
S cu thành (composition) là mt loi aggregation c bit. Trong mt i tng cu thành
(composite object), các thành phn t&n ti nh là mt b phn ch# c"a i tng cu thành.
T
rang
1
–
B
à
i 3
BÀI 3:
LÀM VIC VI HNG 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
rang
2
–
B
à
i 3
Các thuc tính (attribute):
Thut ng: Mt thuc tính (attribute) là mt c tính ca mt class. Nó mô t vùng giá tr
mà tính cht trong các object (instance) ca class có th nm gi. Mt class có th không có
hoc có nhiu thuc tính.Theo qui c, tên thuc tính vit lin vi ch thng. Nu tên
thuc tính gm nhiu t thì các t kt lin vi nhau và m i t bt u bng ch hoa. Danh
sách các tên thuc tính bên di tên class, xem hình 3.4.
Hình 3.4
Mt class vi các thuc tính
M i object ca class có mt giá tr c th cho tng thuc tính. Hình 3.5 biu din mt ví d.
Chú ý rng tên object bt u bng ch thng, k tip là 1 du hai chm, k tip là tên
class và toàn b tên c gch di.
Chú ý: Tên myWasher:WashingMachine là mt th hin có thên (named instance).
Ngoài ra còn có th hin vô danh (anonymous instance) nh :WashingMachine.
Hình 3.5
Mt object có mt giá
tr c th cho mi thuc
tính ca class cha nó.
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
ca class xut hin bên
di ng ngn cách
vi các thuc tính ca
class.
Thut ng: Ta c%ng có th ch# ra thông tin b sung cho các hành vi. Trong các du ngoc
theo sau tên hành vi, ta có th biu din các tham s$ c x& lý bi hành vi và cùng vi ó
là kiu d liu ca chúng. Mt loi hành vi là hàm (function), tr v mt giá tr sau khi hành
vi kt thúc thc hin. !$i vi mt function, ta có th cho bit giá tr tr v và kiu ca giá tr
ó.
Thut ng: Các thông tin v mt operation c gi là du hiu (signature) ca hành vi.
Hình 3.8 cho thy cách biu din signature.
Hình 3.8
Du hiu (signature)
cho mt operation.
Các thuc tính, hành vi và s trc quan hóa:
Chúng ta làm vic vi các class trong s tách ri và biu din tt c các thuc tính, hành vi
ca mt class. Trong thc t, chúng ta s' biu din nhiu class cùng lúc. Khi ó, không phi
lúc nào c%ng thun tin trong vic hin th tt c các thuc tính và hành vi vì nh th có th
làm diagram thêm r$i. Thay vào ó, ta có th ch# hin th tên class mà b( tr$ng vùng
attribute hoc operation, nh hình 3.9.
T
rang
4
–
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
t chc mt danh
sách các attribute và
operation.
Chú ý: Stereotype là mt cu trúc mm d+o. Ta co 1th dùng nó theo nhiu cách khác nhau.
Ví d, có th dùng nó phía trên tên ca mt class trong biu tng class ch# ra vai trò mà
class ó ang nm gi.
T
rang
5
–
B
à
i 3
Các áp ng (responsibility) và ràng buc (constraint):
Thut ng: Biu tng class còn cho phép c t mt loi thông tin khác v mt class. Bên
di danh sách operation, ta có th trình bày các áp ng (responsibility) ca class.
Responsibility là mt mô t cho cái mà class phi làm – có ngh)a là các attribute và
operation nào ca class s' thc hin. Ví d, mt washing machine có responsibility là ly áo
qun d* vào và xut ra áo qun sch.
Trong biu tng class, ta trình bày các responsibility bên di danh sách các operation
(xem hình 3.12).
Hình 3.12
Trong mt biu tng
class, vit các
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 3
Hình 3.14
Ghi chú ính kèm cung
cp thêm thông tin v
class.
Tóm lc
Hình ch nht là biu t*ng UML mô t mt class. Name, attribute, operation và
responsibility ca class c chia vào các vùng trong hình ch nht.Ta có th dùng
stereotype t chc danh sách các attribute và operation. Ta có th t)nh lc mt class
bng cách biu din tp con ca các attribute và operation. !iu này làm cho 1 class
diagram ít phc tp.
Ta có th biu din kiu d liu và giá tr khi ng cho attribute. Ngoài ra còn có th biu
din nhng giá tr c x& lý bi mt operation c%ng nh kiu d liu ca chúng. !$i vi
mt operation, nhng thông tin b sung này c gi là du hiu (signature).
Nhm gim s nhp nhng trong mt nh ngh)a class, ta có th thêm các ràng buc. UML
cho phép mô t thêm v mt class bng cách ính kèm các chú thích (note) vào hình ch
nht biu din cho class.
Câu hi:
1. Cách trình bày mt class bng UML?
2. Các thông tin có th biu trên mt biu tng class?
3. Ràng buc là gì?
4. Ti sao cn ính kèm ghi chú vào mt biu tng class?
5. Khi nào chúng ta cn biu din mt signature cho mt opeartion?
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ò
employer còn player óng vai trò employee.
Hình 4.2
Trong mt association,
mi class gia mt vai
trò. Chúng c th
hin trên diagram.
Trang 2 – Bài 4
Có th biu din 2 association khác nhau gia 2 class trên cùng mt diagram.
Hình 4.3
Hai association gia
các class có th xut
hin trên cùng mt
diagram.
Nhi u class có th có nhng association khác nhau n cùng mt class. Nu ta quan tâm n
assocition riêng ca tng v trí phòng th (guard), gia sân (center) và tn công (forward)
i vi lp Team thì ta s có diagram nh hình 4.4
Hình 4.4
Mt vài class có th kt
hp vi cùng mt class
c th.
Ràng buc trên các mi kt hp:
!ôi khi mt association gia 2 class phi tuân theo mt lu"t (rule). Ta ch ra lu"t ó bng
cách t 1 ràng buc gn ng ni. Ví d, mt nhân viên ngân hàng (BankTeller) phc v
mt khách hàng (Customer), nhng mi customer c phc v theo tr"t t xp hàng #ng
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
dùng mô hình hóa mt
association có attribute
và operation. Nó ni
n mt association
bng mt ng nét
t. Nó có th kt hp
vi các class khác.
Kt ni (link):
Nu nh 1 class có các th hin (instance) thì mt association c'ng có các instance ca nó.
Nu xét 1 player c th chi trong 1 team c th thì mi quan h “Plays On” ó gi là 1 kt
ni (link), c biu din bi 1 ng ni gia 2 object. !ng quên g%ch di tên các
object và tên ca link, nh Hình 4.8.
Hình 4.8
Mt link là mt th hin
ca mt association. Nó
dùng ni các object
ch không phi là các
class. Trong mt link,
tên ca link c gch
di ging nh tên các
object.