Tải bản đầy đủ (.pdf) (53 trang)

Bài 1 Giới thiệu UML

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.59 MB, 53 trang )

BÀI 1:
GII THIU UML

UML là vit tt ca Unified Modeling Language (ngôn ng mô hình hóa thng nht). ó là
mt trong các công c ni bt nht trong vic phát trin h thng ngày nay. Ti sao vy?
UML cho phép ngi xây dng h thng không ch to ra các bn thit k cha ng nhng
cái nhìn/nhn thc ca h theo mt cách d hiu và chun xác mà còn có th truyn t vi
nhau v chúng.
Ni dung chính trong bài hc:
+ Ti sao UML là cn thit
+ UML hình thành nh th nào
+ Các loi s  (diagram) khác nhau ca UML
+ Ti sao cn thit phi s dng nhiu loi diagram khác nhau
Thut ng: trong giáo trình này, h thng (system) c xem là s kt hp gia phn mm
(software) và phn cng (hardware) nh m cung cp mt gii pháp cho mt vn . Phát
trin h thng (system development) là vic to ra mt h thng cho khách hàng, ngi có
vn  cn gii quyt. Mt phân tích viên (analyst) tài liu hóa vn  ca khách hàng và
chuyn nó sang ngi phát trin (developer), lp trình viên (programmer)  xây dng
phn mm gii quyt vn  và trin khai phn mm trên phn cng máy tính.

UML hình thành nh th nào
UML là sn phm trí óc ca Grady Booch, James Rumbaugh và Ivar Jacobson. Trong
nhng n!m t" 80 n 90, m#i ngi trên làm vic ti nhng t chc khác nhau và phát minh
phng pháp phân tích thit k hng i tng riêng ca mình. Nhng phng pháp ca
h t c tính u vit hn so vi nhiu phng pháp khác. n gia nhng n!m 90, h
bt u mn ý t$ng ca nhau và dn tin n hp tác cùng nhau.
N!m 1994, Rumbaugh gia nhp Rational Rose Corporation cùng vi Booch và sau ó mt
n!m thì Jacobson c%ng cùng gia nhp.
Phiên bn kh$i u ca UML bt u c truyn bá khp ngành công nghip phn mm và
em li nhng thay i áng k. Nhiu công ty phn mm cm thy r ng UML áp ng
c mc tiêu chin lc ca h, do vy mt liên minh tm thi c dng lên. Các thành


viên ca liên minh gm EDC, Hewlett-Packard, Intellicorp, Microsoft, Oracle, Texas
Instruments, Rational và mt s khác. n n!m 1997, liên minh cho ra i version 1.0 ca
UML và  trình nó lên T chc qun lý i tng (Object Management Group – OMG) 
tr$ thành ngôn ng mô hình hóa chun.
Liên minh tip tc cho ra version 1.1 và a nó n OMG cui n!m 1997. Vào 1998, có
thêm 2 version na ca UML c to ra. UML tr$ thành mt tiêu chun trong công nghip
phn mm và nó không ng"ng phát trin.
Các thành phn ca ca UML
UML bao gm mt s thành phn  ha kt hp vi nhau hình thành nên các s 
(diagram). Do là mt ngôn ng, UML có nhng qui tc cho vic kt hp các thành phn
này. Vic gii thiu cho tit v các thành phn c%ng nh các qui tc s& thc hin sau, chúng
ta cùng hiu s qua v các diagram b$i chúng s& c dùng cho phân tích h thng.
Thut ng: Mc tiêu ca các diagram là trình bày nhng cái nhìn (view) khác nhau v mt
h thng và tp hp các view c gi là mô hình (model). Mt mô hình UML ca mt h
thng. Chú ý r ng UML mô t nhng cái mà mt h thng c gi 'nh thc hin. Nó
không cho bit cách thc thc hin h thng.
S  i tng (Object Diagram)
Thut ng: Các vt c phân chia mt cách t nhiên thành các nhóm (automobile,
furniture, washing machines, …). Chúng ta gi các nhóm này là lp (class). Mt class là
mt nhóm các vt có cùng thuc tính (attribute) và hành vi (behavior). Ví d, Bt c máy
gi(t nào thuc lp “washing machines” u có các thuc tính nh tên hiu, model, s serial,
và sc cha. Hành vi ca chúng gm “add clothes”, “add detergent”, “turn on” và “remove
clothes”.
Hình 1.1
Biu tng class ca UML



Ti sao cn bn tâm v các class và các thuc tính, hành vi ca chúng?  tng tác vi th
gii phc tp ca chúng ta, các phn mm hin nay cn mô ph)ng mt s khía cnh ca th

gii thc. 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
chuyn vi khách hàng vi nhng ngôn t" ca h và t" ó khuyn khích khách hàng trình
bày các chi tit quan trng ca vn  h g(p phi.
S  i tng (Object diagram)
Thut ng: Mt i tng (object) là mt th hin ca mt class - mt vt c th có các giá
tr' c th cho các thuc tính và hành vi. Ví d, cái máy gi(t ca bn có nhãn hiu là
“Laundatorium”, tên i là “Washmeister”, s serial là GL57774 và sc cha là 16 kg. ó
chính là mt i tng.
Hình 1.2 cho thy UML biu din mt object. Chú ý r ng biu tng là mt hình ch nht
nh biu tng class, nhng tên gch di. Tên ca mt th hin c th n m bên trái du :,
còn tên class n m bên phi.
Hình 1.2
Biu tng object ca UML


S  tình hung ng dng (Use Case Diagram)
Thut ng: Mt tình hung ng dng (use case) là mt mô t v mt hành vi ca h thng
t" quan im ngi dùng. i vi ngi phát trin h thng, ây là mt công c có giá tr':
nó là mt k* thut th-và-úng (tried-and-true technique) cho vic thu thp yêu cu h
thng t" quan im ngi dùng. iu ó rt quan trng nu mc tiêu là xây dng mt h
thng mà con ngi thc có th s dng.
Chúng ta s& tìm hiu sâu hn 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 qun.
Hình 1.3
S  use case ca UML


Thut ng: Hình nhân (stick) nh) tng trng cho ngi dùng máy gi(t c gi là tác
nhân (actor). Hình ellipse biu din use case. Chú ý r ng actor–thc th kích hot use case–
có th là con ngi ho(c mt h thng khác.


S  trng thái (State Diagram)
Ti thi im nào thì mt object c%ng phi có mt trng thái xác 'nh. Mt ngi có th là
s sinh, a bé còn +m nga, tr, em, thiu niên ho(c tr$ng thành. Mt thang máy có th
ang i lên, i xung ho(c ng yên. Mt máy gi(t có th ang ngâm (soak), gi(t (wash),
gi% (rinse), vt (spin) ho(c không hot ng.
S  trng thái hình 1.4 cho thy máy gi(t d'ch chuyn gia các trng thái. Biu tng ti
u diagram là trng thái bt u (start state) còn $ cui là trng thái kt thúc (end state).
Hình 1.4
S  trng thái ca UML




S  trình t (Sequence Diagram)
Class diagram và object diagram biu din thông tin t-nh. Trong mt h thng chc n!ng,
các object luôn tng tác l.n nhau. S  trình t ca UML (sequence diagram) biu din
s tng tác theo thi gian.
Tip tc vi ví d máy gi(t, các thành phn ca máy gm mt ng cp nc (cp nc
sch), mt trng gi(t (cha áo qun) và mt ng thoát. Chúng d- nhiên c%ng là các object.
iu gì xy ra khi ta kích hot use case “wash clothes”? Gi s ta ã hoàn tt các hot ng
“add clothes”, “add detergent” và “turn on”, chu#i các bc tin hành s& nh sau:
1. Nc vào trng thông qua ng cp
2. Trng ng yên trong 5 phút
3. Nc ng"ng cp
4. Trng quay ngc và xuôi trong 15 phút
5. Nc xà phòng thoát ra thông qua ng thoát
6. Nc sch c cp li
7. Trng tip tc quay ngc và xuôi
8. Nc ng"ng cp

9. Nc vt thoát ra thông qua ng thoát
10. Trng quay 1 chiu nhanh dn trong vòng 5 phút
11. Trng ng"ng quay và vic gi(t hoàn tt.
Hình 1.5 biu din sequence diagram ghi nhn các tng tác gia cp nc, trng gi(t và
ng thoát (biu din b ng các hình ch nht phía trên) din ra theo thi gian. Thi gian
trong diagram trôi theo chiu t" trên xung.
Hình 1.5
S  trình t ca UML







Tr$ li ý t$ng v trng thái, chúng ta có th phân chia các bc 1 và 2 là trng thái ngâm,
các bc 3 và 4 là trng thái gi(t, các bc 5-7 là trng thái gi% và bc 8-10 là trng thái
vt.
S  hot ng (Activity Diagram)
Các hot ng xut hin trong mt use case ho(c trong mt hành vi ca object thng din
ra theo mt trình t nh 11 bc $ ví d trên. Hình 1.6 cho thy cách s  hot ng UML
biu din các bc 4-6 ca trình t.
Hình 1.6
S  hot ng ca UML



S  cng tác (Collaboration Diagram)
Các thành phn ca h thng làm vic vi nhau  hoàn thành mc tiêu (t ra và mt ngôn
ng mô hình hóa cn có cách biu din s hp tác này. S  cng tác UML c thit k

cho mc tiêu trên, nh hình 1.7. Ví d này thêm b m thi gian (internal timer) trong tp
class to nên máy gi(t. Sau mt khong thi gian nht 'nh, timer d"ng vic cp nc và
trng gi(t xoay ngc xuôi.
Hình 1.7
S  cng tác ca UML


S  thành phn (Component Diagram)
S  này và tip theo thoát kh)i máy gi(t b$i s  thành phn (component diagram) và s
 trin khai (deployment diagram) hng biu din sang các h thng máy tính.
Vic phát trin các phn mm ngày nay tin hành thông qua các thành phn phù hp vi
cách thc lp trình theo nhóm.
Hình 1.8
S  thành phn ca UML

S  trin khai (Deployment Diagram)
S  trin khai cho bit kin trúc vt lý ca mt h thng da trên máy tính. Nó v& nên các
máy tính và thit b', cho thy các kt ni gia chúng và cho bit phn mm trên m#i máy.
M#i máy tính c biu din b$i mt khi lp phng vi các ng ni gia các máy tính.
Hình 1.9
S  trin khai ca UML





Mt s tính nng khác
UML cung cp mt s tính n!ng khác cho phép t chc và m$ rng các diagram
Gói (package)
Thut ng: Khi cn t chc các thành phn ca mt diagram vào trong mt nhóm (group),

ta a chúng vào trong mt package, biu din nh hình 1.10.
Hình 1.10
Gói UML cho phép
nhóm các thành phn
ca mt diagram

Ghi chú (Note)
Thut ng: Ghi chú (note) ca UML giúp tránh mt thành phn nào ó trong diagram b'
hiu nhm.
Hình 1.11
Trong bt c diagram
nào, ta cng có th thêm
các ghi chú

Mu (Stereotype)
Thut ng: M.u (stereotype) cho phép dùng các thành phn UML s+n có  ch bin ra
nhng cái mi.

Thut ng: Khái nim giao din (interface) là mt ví d tt cho stereotype. Mt interface là
mt class ch có operation mà không có attribute. Nó chính là mt tp các hành vi mà ta
mun dùng li nhiu ln trên khp mô hình. Thay vì ngh- ra mt thành phn mi  biu
din mt interface, ta có th dùng mt biu tng class vi <<interface>> gn phía trên tên
class.
Hình 1.12
Mt stereotype cho phép
to mt thành phn mi
t nhng cái sn có.

Ti sao cn thit phi s dng nhiu loi diagram khác nhau?
Thut ng: Mt h thng có nhiu ngi quan tâm vi nhiu khía cnh khác nhau, h c

gi là stakeholder.
Vic thit k h thng liên quan n tt c các khía cnh (viewpoint) có th có. M#i UML
diagram cho ta mt cách to nên mt cái nhìn c th nh m th)a mãn m#i loi stakeholder.

Tóm lc
Vic phát trin h thng là mt hot ng mang tính con ngi. Nu thiu mt h thng ký
hiu d hiu thì quá trình phát trin d sinh l#i.
UML là mt h thng ký hiu ã tr$ thành mt chun trong vic phát trin h thng. Nó là
phát minh ca Grady Booch, James Rumbaugh và Ivar Jacobson. UML bao gm mt tp
các diagram  cung cp mt chun cho phép các phân tích viên h thng xây dng mt bn
thit k a din d hiu i vi khách hàng, lp trình viên hay bt c ai liên quan n quá
trình phát trin h thng. Lý do cn thit có nhiu loi diagram khác nhau vì m#i loi dành
cho mt stakeholder khác nhau trong h thng.

Câu hi:
1. Ti sao cn thit phi có nhiu diagram khi mô hình hóa mt h thng?
2. Nhng diagram nào cung cp các nhìn t-nh (static view) v h thng?
3. Nhng diagram nào cung cp các nhìn ng (dynamic view) v h thng (biu din
s thay i theo thi gian)?

Bài tp:
1. Gi s bn ang xây dng mt chng trình máy tính chi c vui vi ngi. Các s
 UML nào cn thit trong quá trình thit k? Vì sao?
2. i vi h thng $ bài tp trên, lit kê các câu h)i mà bn s& (t ra vi nhng ngi
cn thit và ti sao bn li h)i h.

Trang 1 – Bài 2
BÀI 2:
TÌM HIU V HNG I TNG (OBJECT-ORIENTATION)
Ni dung chính trong bài hc:

+ S tru tng hóa (abstraction)
+ S tha k (inheritance)
+ Tính a hình (polymorphism)
+ Tính óng gói (encapsulation)
+ Vic truyn thông ip (message sending)
+ Mi kt hp (association)
+ S tp hp (aggregation)
Hng i tng em li nhng i thay rt ln cho th gii phn mm. Nó c xem là
mt cách thc mi  to chng trình và có rt nhiu u im. Nó hng theo cách tip
cn da trên thành phn (component-based approach)  phát trin phn mm sao cho mt
h thng chính là mt tp các i tng (object). Sau ó, ta có th m rng h thng bng
cách tng cng kh nng cho các thành phn sn có hoc thêm các thành phn mi. cui
cùng, ta có th tái s dng các object ã to cho h thng trc ó khi xây dng mt h
thng mi, làm ct gim áng k thi gian phát trin h thng.
Hng i tng rt quan trng i vi ngành công ngh phn mm và OMG (Object
Management Group) là mt t chc ã thit lp các chu n cho vic phát trin hng i
tng. UML cho phép ta xây dng các mô hình d! dùng, d! hiu c"a các i tng sao cho
các lp trình viên có th to ra chúng trong phn mm.
Hng i tng ch# là mt tp ý tng da trên mt s nguyên lý c s. Trong bài này,
chúng ta s$ tìm hiu các nguyên lý ó.
i tng (object) có mi ni
%i tng có tính c th, nói cách khác chúng t&n ti xung quanh ta, chúng to nên th gii.
Nh ã  cp trong bài trc, phn mm ngày nay có xu hng mô ph'ng th gii hoc
mt phn nh' c"a thê 1gii, do vy các chng trình thng “bt trc” các object trong th
gii thc.
Thut ng: %i tng (object) là mt th hin (instance) c"a mt lp (class). M(i ngi
chúng ta là mt th hin c"a lp con ngi (person class). Mt object có cu trúc
(structure). Ngh)a là nó có các thuc tính (attribute, property) và hành vi (behavior). Mt
hành vi c"a object bao g&m các hành ng (operation) mà nó thc hin. Thuc tính và hành
vi kt hp thành c trng (feature) c"a object.

Vì là các object trong lp person nên m(i ngi chúng ta có các thuc tính nh: chiu cao,
cân nng, tui, … Chúng ta c*ng thc hin mt s hành ng nh: n, ng", c, vit, nói, i

Trang 2 – Bài 2
làm, … Nu chúng ta cn to mt h thng x lý các thông tin v con ngi, ch+ng hn nh
h thng qun lý lng hay h thng qun lý nhân s, chúng ta cn kt hp cht ch$ các
thuc tính và hành ng này trong phn mm c"a chúng ta.
Trong th gii hng i tng, mt class là mt m,u (template)  sinh các object. Tr li
vi ví d v máy git (washing machine). Nu lp washing machine c mô t bi các
thuc tính nh brand name, model name, serial number và capacity cùng vi các hành vi
nh add clothes, add detergent và remove clothes. Vi các thuc tính và hành vi trên, ta có
c c ch  sn xut ra các th hin (instance) mi c"a lp washing machine, có ngh)a là
ta có th to các object mi. Xem hình 2.1
Hình 2.1
Lp washing machine –
mô hình gc ca mt
máy git – là mt mu
(template) cho vic to
ra các th hin mi ca
các máy git.

Chú ý rng mc tiêu c"a hng i tng là phát trin phn mm có kh nng phn ánh mt
phn c th c"a th gii thc. Càng nhiu thuc tính (attribute) và hành vi (behavior) thu
thp c thì mô hình s$ càng có tính thc ti!n. Trong ví d trc, có th b sung thêm các
thuc 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 thuc tính và
hành vi giúp cho mô

hình gn vi thc t
hn.






Trang 3 – Bài 2
Các khái nim
S tru tng hóa (abstraction):
Thut ng: s tru tng hóa là s n gin hóa, lc b' i các tính cht, hành ng c"a
mt thc th  ch# còn li nhng gì cn thit.
Các loi vn  khác nhau òi h'i mc  thông tin khác nhau. Hình 2.2 xây dng mt mô
hình washing machine vi nhiu thuc tính và hành vi hn so vi Hình 2.1. Làm nh th có
cn thit không?
Nu ta là thành viên trong mt nhóm vi nhim v to mt chng trình máy tính mô ph'ng
chính xác cách thc mt máy git hot ng thì vic b sung thuc tính, hành vi nh ã nói
là rt cn thit. Mt chng trình máy tính nh th (dùng cho k- s thit k máy git) phi
có " thông tin  d tính chính xác v nhng s$ di!n ra khi máy git c to ra, khi nó
vn hành thc t. %i vi các loi chng trình nh th, có th loi b' nhng thuc tính
không thc s hu dng nh thuc tính serial number.
Vi ví d khác, nu chúng ta to mt phn mm theo dõi các giao d.ch trong mt ca hàng
git "i có nhiu máy git thì vic b sung thuc tính, hành vi nh ã nói là không cn thit.
Chúng ta có th gi li thuc tính serial number cho m(i i tng máy git.

S tha k (inheritance):
Thut ng: Mt class là mt lp các object (trong phn mm, nó là mt m,u cho vic to
object mi). Ngc li, mt object là mt th hin (instance) c"a mt class và nó có tt c
các c tính mà class có. %iu này gi là s tha k (inheritance). Bt c thuc tính và

hành vi nào ta quyt .nh cho lp washing machine, m(i object thuc lp c*ng s$ tha k
các thuc tính và hành vi ó.
Không phi ch# có object tha k t class mà mt class c*ng có th tha k t mt class
khác. Ví d washing machines, refrigerators, microwave ovens, toasters, dishwashers,
radios, waffle makers, blenders và irons u là các class, nhng chúng là thành viên c"a mt
class chung hn: appliances (& in gia dng). Mt appliance có các thuc tính nh công
tc on-off, dây in và các hành vi tt , m.
Thut ng: Nói cách khác các lp washing machines, refrigerators, microwave ovens, … là
các lp con (subclass) c"a lp appliance. Lp appliance gi là lp cha (super class) c"a các
lp khác. Hình 2.3 cho thy quan h superclass và subclass.

Trang 4 – Bài 2
Hình 2.3
Các loi  gia dng
khác nhau tha k các
thuc tính và hành vi
ca lp appliance. Mi
loi  in gia dng
khác nhau là mt
subclass ca lp
appliance. Ngc li,
lp appliance là mt
superclass



S tha k không dng  ó. Ch+ng hn Appliance tip tc là subclass c"a lp Household
Item (& gia dng). Mt subclass khác c"a Household Item là lp Furniture
Hình 2.4
Superclass cng có th

là subclass



Tính a hình (polymorphism):
Thut ng: ôi khi, mt hành vi (operation) có cùng tên trong các class khác nhau. Ví d,
“open” ca ln, “open” ca s, “open” tp chí, món quà, tài khon ngân hàng, …Trong m(i
trng hp ó, chúng ta thc hin mt hành vi khác nhau. Trong hng i tng, mt
hành vi cùng tên có th c thc hin khác nhau vi nhng class khác nhau. %iu này
c gi là tính a hình (polymorphism).
Hình 2.5
Trong tính a hình, mt
hành vi có th có cùng
tên trong nhng class
khác nhau và tin hành
khác nhau trong mi
class.


Trang 5 – Bài 2
Tính óng gói (encapsulation):
Khi mt object thc thi các hành vi c"a nó, các hành vi này b. che du (xem hình 2.6). Khi
chúng ta xem tivi, chúng ta không bit và không quan tâm n các linh kin in t phc
tp phía sau màn hình tivi, c*ng nh nhiu hành vi nhm quét nh lên màn hình.
Hình 2.6
Các object óng gói
nhng gì chúng thc
hin. Ngha là, chúng
du i các hot ng
bên trong ca các hành

vi i vi th gii bên
ngoài và các object
khác.


Vic truyn thông ip (message sending):
Trong mt h thng, các object làm vic cùng nhau bng cách gi các thông ip (message)
qua li. Mt object gi message n object kia  thc thi mt hành vi (operation) và object
nhn message s$ thc thi hành vi ó.
Ly ví d gia mt TV vi mt iu khin t xa (remote). Khi mun xem TV, chúng ta
nhn nút ON trên remote. %iu gì xy ra? i tng remote gi mt message n i tng
TV  bt TV lên. %i tng TV khi nhn c message này s$ ‘bit’ cn làm gì  thc
hin hành vi bt TV. Khi mun xem kênh khác, chúng ta nhn vào nút kênh tng ng trên
remote và i tng remote s$ gi message khác (thay i kênh) n i tng TV. Ngoài
ra còn rt nhiu chc nng khác, …
% cp chút ít v giao tip (interface). Hu ht các chc nng iu khin TV bng remote
u có th thc hin nh các nút bm ngay trên TV. Nhng rõ ràng, interface mà TV th
hin i vi chúng ta (tp các nút bm trên TV) không ging vi interface mà nó th hin
i vi remote (thông qua b nhn tia h&ng ngoi).
Hình 2.7
Ví d v vic truyn
message t mt object này
n mt object khác.
Remote-object gi mt
message n TV-object 
bt TV. TV-object nhn
message thông qua
interface ca nó, ó là b
nhn tia hng ngoi.


Trang 6 – Bài 2
Mi kt hp (association):
Thông thng, các object không c lp mà có quan h vi nhau. Ví d, khi bn bt Tivi,
theo thut ng hng i tng, bn và tivi có mt mi kt hp (association). Mi kt hp
“turn-on” là mi kt hp n hng (unidirectional), nh hình 2.8.
Ngoài ra còn có mi kt hp hai hng (bidirectional), ch+ng hn nh “is married to”.
Hình 2.8
Các object thng kt
hp vi nhau theo mt
vài cách. Khi mt ngi
bt TV, ngi ó ang
trong mi kt hp n
hng vi TV.

%ôi khi mt object có th kt hp vi mt object khác theo nhiu cách. Nu bn và &ng
nghip là bn bè thì gia 2 ngi 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 kt
hp vi nhau theo
nhiu cách.



Mt class có th kt hp cùng lúc vi nhiu class khác nhau. Mt ngi có th i trên ô tô
và ngi c*ng có th i trên xe bus. Xem hình 2.10.
Hình 2.10
Mt class có th kt hp
vi nhiu class khác.







Trang 7 – Bài 2
Thut ng: Lng s (multiplicity) là mt khía cnh quan trng c"a association gia các
object. Nó cho bit s lng object trong mt class có quan h vi vi 1 object c"a class kt
hp. Khóa hc (course) và ngi hng d,n (instructor) là mi kt hp 1-1 (one-to-one
association). Trong trng hp c bit, khi mt vài instructor cùng dy mt course trong
sut hc k/ thì mi kt hp gia course và instructor là one-to-many.
S tp hp (aggregation):
Hãy xem xét h thng máy tính c"a bn. Nó bao g&m 1 thùng CPU, 1 keyboard, 1 mouse, 1
monitor, 1 CD-ROM drive, 1 hoc nhiu HD, 1 modem, 1 FD, 1 printer và có th có thêm
vài hp loa. Bên trong thùng CPU còn có 1 CPU, 1 graphics card, 1 sound card và mt s
linh kin cn thit khác.
Thut ng: Máy tính c"a bn c xem là mt s tp hp (aggregation), là mt loi khác
c"a association gia các object. Ging nh nhiu th khác, máy tính c to nên t mt s
linh kin khác nhau (xem hình 2.11).
Hình 2.11
Mt h thng máy tính
c thù là mt ví d cho
aggregation-mt object
c to nên t s tp
hp ca mt vài loi
object khác nhau.






Thut ng: Mt dng c bit c"a aggregation liên quan n quan h cht ch$ gia mt
aggregation object vi các thành phn c"a nó. Nó c gi là s cu thành (composition).
%im chính yu c"a composition là các thành phn t&n ti nh là nhng component ch#
trong composite object thôi. Ví d, 1 sáo smi (shirt) là mt composite c"a 1 thân (body), 1
c áo (collar), 2 tay áo (sleeve), mt s nút áo (button), khuyt áo (buttonhold) và c tay áo
(cuff). Nu tách kh'i shirt thì collar tr nên vô dng.
%ôi khi, mt thành phn trong mt composition không t&n ti mãi cùng composition. Ví d
lá (leaf) tên mt cây (tree) có th tàn trc khi cây cht. D) nhiên, nu ta h"y cây thì lá c*ng
cht theo (xem hình 2.12)
Khái nim aggregation và composition quan trng bi chúng phn ánh nhng s vic rt
thông thng và giúp chúng ta to ra các mô hình gn ging vi thc t.

Trang 8 – Bài 2
Hình 2.11
Trong mt composition,
mt thành phn có th
“cht” trc khi
composition “cht”.
Nu ta hy s cu thành
(composite) thì các
thành phn cng b hy
theo.


Tóm lc
Hng i tng là mt tp các t tng da trên mt s nguyên lý c bn. Mt i tng
là mt th hin c"a mt lp. Mt lp loi tng quát c"a các i tng có c"ng thuc tính và
hành vi. Khi ta to mt i tng, vn  là cn xác .nh nhng thuc tính và hành vi cho
i tng.

Tha k (inheritance) là mt mt quan trng trong hng i tng: Mt i tng tha k
các thuc tính và hành vi t lp c"a nó. Mt lp c*ng có th tha k các thuc tính và hành
vi t mt lp khác.
Tính a hình (polymorphism) là mt mt quan trng khác. Nó ch# ra rng mt hành vi có th
có cùng tên trong các lp khác nhau, nhng m(i lp s$ thc thi hành vi theo mt cách khác
nhau.
Các object che du vic thc thi các hành vi i vi object khác và c i vi th gii bên
ngoài. M(i object a ra mt giao din (interface) sao cho các object khác có th yêu cu nó
thc thi các hành vi c"a chính nó.
Các object làm vic vi nhau bng cách gi thông ip (message) qua li. Thông ip là các
yêu cu thc thi hành vi.
Các object thng có mi kt hp vi mt objedt khác. Mi kt hp (assocition) ó có
nhiu dng khác nhau. Mt object trong mt class có th kt hp vi nhiu objest trong
class khác.
S tp hp (aggregation) là mt loi kt hp. Mt i tng tp hp (aggregate object) bao
g&m mt tp các i tng thành phn.
S cu thành (composition) là mt loi aggregation c bit. Trong mt i tng cu thành
(composite object), các thành phn t&n ti nh là mt b phn ch# c"a i tng cu thành.

T
rang
1


B
à
i 3

BÀI 3:
LÀM VIC VI HNG I TNG

Ni dung chính trong bài hc:
+ Trc quan hóa mt lp (class)
+ Các thuc tính (attribute)
+ Các hành vi (operation)
+ Các áp ng (responsibility) và ràng buc (constraint)

Trc quan hóa mt lp (class):
Chúng ta ã bit rng 1 hình ch nht là biu tng dùng  biu din 1 class trong UML.
Tên ca class, theo qui c, là mt t vi ký t u vit hoa, xut hin phía trên ca hình
ch nht. Nu tên class có 2 t tr lên thì kt các t sát vi nhau vi ch hoa u t (ví d
WashingMachine trong hình 3.1).
Hình 3.1
Biu tng class trong UML

Mt cu trúc UML khác, gi là gói (package), có th óng vai trò trong tên ca mt class.
Nh ã gii thiu trong các bài trc, mt package, c biu din nh mt tabbed folder,
là cách ca UML nhm t chc các thành phn ca diagram. Xem biu tng package trong
hình 3.2.
Hình 3.2
Ví d package UML

Thut ng: Nu lp WashingMachine là thành phn ca mt package có tên là Household
appliances, ta có th t tên cho class là Household appliances::WashingMachine. 2 du hai
chm tách ri tên package bên trái vi tên class bên phi. Loi tên class này gi là mt tên
ng dn (pathname). Xem hình 3.3
Hình 3.3
Mt class vi mt pathname


T

rang
2


B
à
i 3

Các thuc tính (attribute):
Thut ng: Mt thuc tính (attribute) là mt c tính ca mt class. Nó mô t vùng giá tr
mà tính cht trong các object (instance) ca class có th nm gi. Mt class có th không có
hoc có nhiu thuc tính.Theo qui c, tên thuc tính vit lin vi ch thng. Nu tên
thuc tính gm nhiu t thì các t kt lin vi nhau và m i t bt u bng ch hoa. Danh
sách các tên thuc tính bên di tên class, xem hình 3.4.
Hình 3.4
Mt class vi các thuc tính



M i object ca class có mt giá tr c th cho tng thuc tính. Hình 3.5 biu din mt ví d.
Chú ý rng tên object bt u bng ch thng, k tip là 1 du hai chm, k tip là tên
class và toàn b tên c gch di.
Chú ý: Tên myWasher:WashingMachine là mt th hin có thên (named instance).
Ngoài ra còn có th hin vô danh (anonymous instance) nh :WashingMachine.
Hình 3.5
Mt object có mt giá
tr c th cho mi thuc
tính ca class cha nó.



UML cho phép a vào các thông tin b sung cho các thuc tính. Trong biu tng class, ta
có th c t mt kiu d liu cho tng giá tr ca thuc tính. Nhng kiu d liu có th là
string, floating-point number, integer và boolean. ! mô t kiu, dùng mt du : ng"n cách
gia tên thuc tính vi tên kiu. Ngoài ra, có th ch# ra giá tr mc nh (default value) cho
mt thuc tính. Hình 3.6 ch# ra các cách c t thuc tính.
Hình 3.6
Mt thuc tính có th
cho bit kiu ca nó
cng nh giá tr mc
nh.



T
rang
3


B
à
i 3

Các hành vi (operation):
Thut ng: Mt hành vi (operation) là cái mà mt class có th t làm c hoc chúng ta
(hoc class khác) có th làm cho class ó. Gi$ng nh tên thuc tính, mt tên hành vi c%ng
ch# toàn ch thng khi nó có 1 t. Nu tên hành vi gm 2 t tr lên thì m i t bt u bng
ch hoa ri kt lin vi nhau. Danh sách các operation nm bên di danh sách các
attribute.
Hình 3.7
Danh sách các hành vi

ca class xut hin bên
di ng ngn cách
vi các thuc tính ca
class.

Thut ng: Ta c%ng có th ch# ra thông tin b sung cho các hành vi. Trong các du ngoc
theo sau tên hành vi, ta có th biu din các tham s$ c x& lý bi hành vi và cùng vi ó
là kiu d liu ca chúng. Mt loi hành vi là hàm (function), tr v mt giá tr sau khi hành
vi kt thúc thc hin. !$i vi mt function, ta có th cho bit giá tr tr v và kiu ca giá tr
ó.

Thut ng: Các thông tin v mt operation c gi là du hiu (signature) ca hành vi.
Hình 3.8 cho thy cách biu din signature.
Hình 3.8
Du hiu (signature)
cho mt operation.



Các thuc tính, hành vi và s trc quan hóa:
Chúng ta làm vic vi các class trong s tách ri và biu din tt c các thuc tính, hành vi
ca mt class. Trong thc t, chúng ta s' biu din nhiu class cùng lúc. Khi ó, không phi
lúc nào c%ng thun tin trong vic hin th tt c các thuc 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# hin th tên class mà b( tr$ng vùng
attribute hoc operation, nh hình 3.9.

T
rang
4



B
à
i 3

Hình 3.9
Trong thc t, ta không
phi luôn luôn biu
din tt c các thuc
tính và hành vi ca mt
class.
Thut ng: !ôi lúc cn biu din mt vài (không phi tt c) attribute và operation. ! làm
iu này, ta hin th nhng gì cn thit ri theo sau danh sách là du ba chm. !iu này
c gi là s t)nh lc (ellipsis) và vic b( qua mt vài attribute hoc operation c gi
là t)nh lc mt class. Hình 3.10 cho thy cách s& dng mt t)nh lc.
Hình 3.10
Mt tnh lc cho thy
các operation không
phi là tp y .



Nu danh sách các attribute và operation quá dài, ta có th dùng mt stereotype  t chc
cho danh sách cô ng h*n. Mt stereotype là cách ca UML cho phép ta m rng nó: cho
phép ta to các thành phn mi riêng bit cho vn  c th ang cn gii quyt. Nh ã 
cp trong các bài trc, ta biu din stereotype nh mt tên gi trong cp ngoc nhn gi là
guillemet. !$i vi mt danh sách thuc tính, ta có th dùng mt stereotype nh tiêu  cho
mt tp thuc tính con.
Hình 3.11
S dng mt stereotype

 t chc mt danh
sách các attribute và
operation.



Chú ý: Stereotype là mt cu trúc mm d+o. Ta co 1th dùng nó theo nhiu cách khác nhau.
Ví d, có th dùng nó phía trên tên ca mt class trong biu tng class  ch# ra vai trò mà
class ó ang nm gi.

T
rang
5


B
à
i 3

Các áp ng (responsibility) và ràng buc (constraint):
Thut ng: Biu tng class còn cho phép c t mt loi thông tin khác v mt class. Bên
di danh sách operation, ta có th trình bày các áp ng (responsibility) ca class.
Responsibility là mt mô t cho cái mà class phi làm – có ngh)a là các attribute và
operation nào ca class s' thc hin. Ví d, mt washing machine có responsibility là ly áo
qun d* vào và xut ra áo qun sch.
Trong biu tng class, ta trình bày các responsibility bên di danh sách các operation
(xem hình 3.12).
Hình 3.12
Trong mt biu tng
class, vit các

responsibility ca class
trong mt vùng di
danh sách các
operation.



Thut ng: ! thêm mt ràng buc (constraint), dùng du ngoc móc bao ly ni dung
ràng buc. Ni dung ràng buc trong ngoc c t các lut mà class phi tuân th. Ví d,
trong lp WashingMachine, ta mu$n c t rng sc cha ca mt máy git ch# có th là 16,
18 hoc 24 pound (có ngh)a ràng buc trên thuc tính capacity ca lp WashingMachine), ta
vit {capacity=16 or 18 or 24 lb) gn vi biu tng lp WashingMachine.
Hình 3.13
Lut trong ngoc móc
ràng buc thuc tính
capacity vi 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 mt
class di dng ghi chú (note) ính kèm class.
Ta thng thêm mt note cho mt attribute hay operation. Hình 3.14 biu din mt note cho
bit cách thc sinh s$ serial number cho các object trong lp WashingMachine.

T
rang
6



B
à
i 3

Hình 3.14
Ghi chú ính kèm cung
cp thêm thông tin v
class.


Tóm lc
Hình ch nht là biu t*ng UML  mô t mt class. Name, attribute, operation và
responsibility ca class c chia vào các vùng trong hình ch nht.Ta có th dùng
stereotype  t chc danh sách các attribute và operation. Ta có th t)nh lc mt class
bng cách biu din tp con ca các attribute và operation. !iu này làm cho 1 class
diagram ít phc tp.
Ta có th biu din kiu d liu và giá tr khi ng cho attribute. Ngoài ra còn có th biu
din nhng giá tr c x& lý bi mt operation c%ng nh kiu d liu ca chúng. !$i vi
mt operation, nhng thông tin b sung này c gi là du hiu (signature).
Nhm gim s nhp nhng trong mt nh ngh)a class, ta có th thêm các ràng buc. UML
cho phép mô t thêm v mt class bng cách ính kèm các chú thích (note) vào hình ch
nht biu din cho class.

Câu hi:
1. Cách trình bày mt class bng UML?
2. Các thông tin có th biu trên mt biu tng class?
3. Ràng buc là gì?
4. Ti sao cn ính kèm ghi chú vào mt biu tng class?
5. Khi nào chúng ta cn biu din mt signature cho mt opeartion?


Bài tp:
1. Mô t ngn cho môn hockey:

Trang 1 – Bài 4
BÀI 4
LÀM VIC VI MI QUAN H

Ni dung chính trong bài hc:
+ Mi kt hp (association)
+ Lng s (multiplicity)
+ Các mi kt hp nh tính (qualified association)
+ Các mi kt hp phn hi (reflexive association)
+ Tha k và tng quát hóa (inheritance and generalization)
+ S ph thuc (dependency)

Mi kt hp (association):
Thut ng: Khi các lass kt ni vi nhau thì s kt ni ó c gi là mi kt hp
(association). Hãy cùng xem xét mi kt hp gia mt cu th (player) và mt i bóng
(team). Ta có th mô t c im association này bng mt câu “mt player chi trong mt
team”. Ta hình dung assocition nh mt ng ni gia 2 class vi tên ca association
(“plays on”) nm trên ng ni. Ngoài ra hng ca quan h còn c ch ra bi hình tam
giác nh. Hình 4.1 cho thy cách trc quan hóa mi kt hp “plays on” gia player và team.

Hình 4.1
Mt kt hp gia mt
player và mt team.

Khi 2 class kt hp vi nhau thì mi class s óng mt vai trò (role) trong mi kt hp ó.
Ta có th biu din các vai trò trên diagram bng cách vit chúng gn ng ni. Trong
association gia player và team, nu i bóng là chuyên nghip thì team s có vai trò

employer còn player óng vai trò employee.
Hình 4.2
Trong mt association,
mi class gia mt vai
trò. Chúng c th
hin trên diagram.

Trang 2 – Bài 4
Có th biu din 2 association khác nhau gia 2 class trên cùng mt diagram.
Hình 4.3
Hai association gia
các class có th xut
hin trên cùng mt
diagram.

Nhi u class có th có nhng association khác nhau n cùng mt class. Nu ta quan tâm n
assocition riêng ca tng v trí phòng th (guard), gia sân (center) và tn công (forward)
i vi lp Team thì ta s có diagram nh hình 4.4
Hình 4.4
Mt vài class có th kt
hp vi cùng mt class
c th.




Ràng buc trên các mi kt hp:
!ôi khi mt association gia 2 class phi tuân theo mt lu"t (rule). Ta ch ra lu"t ó bng
cách t 1 ràng buc gn ng ni. Ví d, mt nhân viên ngân hàng (BankTeller) phc v
mt khách hàng (Customer), nhng mi customer c phc v theo tr"t t xp hàng #ng

ký. Ta th hin qui t$c này trong mô hình bng cách t t “ordered” trong cp du móc (ký
hiu ràng buc) gn lp Customer, nh hình 4.5.
Hình 4.5
Có th t mt ràng buc
trên mt association.
Trong ví d này,
association tên “Serves”
b ràng buc rng
BankTeller phi phc v
Customer theo trt t xp
hàng.
Mt lo%i ràng buc khác là quan h hoc (or), ký hiu bi {or} trên mt ng &t nét ni 2
ng association. Hình 4.6 mô hình hóa vic hc sinh ph thông chn mt khóa hc v
hc thu"t hay khóa hc v thng m%i.

Trang 3 – Bài 4
Hình 4.6
Mi quan h Or gia 2
association là mt ràng
buc.

Lp kt hp (association class):
Thut ng: Mt association có th có các attribute và operation nh class. Trong trng
hp này, ta có mt lp kt hp (association class). Ta trc quan hóa mt association class
ging nh vi class thông thng và dùng mt ng &t nét ni nó vi ng association.
Mt association class c'ng có th có association vi các class khác. Hình 4.7 cho thy mt
association class, thay th cho association tên “Plays On”, kt hp vi class General
Manager.
Hình 4.7
Mt association class

dùng mô hình hóa mt
association có attribute
và operation. Nó ni
n mt association
bng mt ng nét
t. Nó có th kt hp
vi các class khác.

Kt ni (link):
Nu nh 1 class có các th hin (instance) thì mt association c'ng có các instance ca nó.
Nu xét 1 player c th chi trong 1 team c th thì mi quan h “Plays On” ó gi là 1 kt
ni (link), c biu din bi 1 ng ni gia 2 object. !ng quên g%ch di tên các
object và tên ca link, nh Hình 4.8.

Hình 4.8
Mt link là mt th hin
ca mt association. Nó
dùng  ni các object
ch không phi là các
class. Trong mt link,
tên ca link c gch
di ging nh tên các
object.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×