BÀI 4
LÀM VIC VI MI QUAN H
Ni dung chính trong bài hc:
+ Mi kết hp (association)
+ Lượng s (multiplicity)
+ Các mi kết hp định tính (qualified association)
+ Các mi kết hp phn hi (reflexive association)
+ Tha kế và tng quát hóa (inheritance and generalization)
+ S ph thuc (dependency)
Mi kết hp (association):
Thut ng: Khi các lass kết ni vi nhau thì s kết ni đó được gi là mi kết hp
(association). Hãy cùng xem xét mi kết 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 chơi 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 hướng 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 kết hp “plays on” gia player và team.
Hình 4.1
Mt kết hp gia mt
player và mt team.
Khi 2 class kết hp vi nhau thì mi class s đóng mt vai trò (role) trong mi kết hp đó.
Ta có th biu din các vai trò trên diagram bng cách viết chúng gn đường ni. Trong
association gia player và team, nếu độ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 1 – 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.
Nhiu class có th có nhng association khác nhau đến cùng mt class. Nếu 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 kết
hp vi cùng mt class
c th.
Ràng buc trên các mi kết hp:
Đôi khi mt association gia 2 class phi tuân theo mt lut (rule). Ta ch ra lut đó 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), nhưng mi customer được phc v theo trt t xếp hàng đăng
ký. Ta th hin qui tc 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ư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 xếp
hàng.
Mt loi 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 thut hay khóa hc v thương mi.
Trang 2 – Bài 4
Hình 4.6
Mi quan h Or gia 2
association là mt ràng
buc.
Lp kết hp (association class):
Thut ng: Mt association có th có các attribute và operation như class. Trong trường
hp này, ta có mt lp kết hp (association class). Ta trc quan hóa mt association class
ging như vi class thông thường 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”, kết 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 kết hp
vi các class khác.
Kết ni (link):
Nếu như 1 class có các th hin (instance) thì mt association cũng có các instance ca nó.
Nếu xét 1 player c th chơi trong 1 team c th thì mi quan h “Plays On” đó gi là 1 kết
ni (link), được biu din bi 1 đưng ni gia 2 object. Đừng quên gch dưới 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
dưới ging như tên các
object.
Trang 3 – Bài 4
Lượng s (multiplicity)
Thut ng: Lượng s (multiplicity) giúp đặc t s lượng object t 1 class này có th quan
h vi 1 class t class kia mt mi kết hp. Chúng ta đặt các giá tr cho multiplicity phía
trên đường association, gn phía class tương ng, xem hình 4.9
Hình 4.9
Lượng s ch ra s
object ca mt class có
th quan h vi mt
object ca class kết hp.
Có nhiu cách khác nhau biu din cho multiplicity. Mt class có th quan h vi class khác
theo các loi one-to-one, one-to-many, one-to-one or more, one-to-zero or one, one-to-
bounded interval (ví d,1-to-5..10), one-to-n. UML dùng du * (asterisk) để biu din giá tr
“more” và “many”. Khái nim “or” được biu din bng hai chm, chng hn “1..*” (one or
more). Khái nim “or” cũng có th được biu din bi du phy, chng hn “5,10” (5 or 10).
Hình 4.10 mô t các các loi multiplicity có th có.
Nếu class A có quan h one-to-zero or one vi class B, khi đó class B được gi là tùy chn
(optional) cho class A.
Hình 4.10
Các loi multiplicity
khác nhau và cách
biu din chúng
trong UML.
Trang 4 – Bài 4
Các mi kết hp định tính (qualified association)
Khi mt multiplicity ca mt association là one-to-many, mt thách thc đặt ra là: tìm kiếm
(lookup). Khi mt object t mt class phi chn mt object trong class khác để hoàn tt mt
vai trò trogn mt mi kết hp thì class th nht phi da vào mt thuc tính c th để tìm ra
object đúng. Thuc tính đó được gi là danh hiu (identifier), chng hn như ID number. Ví
d, khi ta đăng ký trước phòng trong mt khách sn, nhân viên s cp cho ta mt s xác
nhn (confirmation number). Sau này, nếu ta gi đin đến hi v vic đặt phòng, ta phi
cung cp s xác nhn.
Thut ng: Trong UML, thông tin định danh được gi là qualifier. Biu tượng ca nó là
hình ch nht nh k bên class mà thc hin vic tìm kiếm (Hình 4.11). Ý tưởng là nhm
làm tăng tính hiu qu bng cách gim mt multiplicity one-to-many thành mt multiplicity
one-to-one.
Hình 4.11
Mt qualifier trong mt
mi kết hp gii quyết
vn đề tìm kiếm.
Các mi kết hp phn hi (reflexive association)
Đôi khi mt class kết hp vi chính nó. Điu này xy ra khi trong mt class có các object
gi các vai trò khác nhau. Ví d, mt người đi xe có th là tài xế hoc hành khách. Nếu
trong vai trò tài xế, người đó lái zero or more hành khách (cũng là người đi xe).
Hình 4.12
Trong mi kết hp phn
hi, ta v đường kết hp
t class ni vi chính
nó. Trên đó có tên,
hướng ca association,
tên các role và
multiplicity.
S tha kế và s tng quát hóa (inheritance and generalization)
Thut ng: Khái nim tha kế (inheritance) và tng quát hóa (generalization) đi đôi vi
nhau. Mt class (child class hoc subclass) có th tha kế các attribute và operation t mt
class khác (parent class hoc superclass). Class cha có tính tng quát hơn so vi class con.
Chú ý: mt class con có th thay thế cho mt class cha. Nghĩa là, bt c nơi nào class cha
xut hin thì class con cũng có th xut hin. Nhưng chiu ngược li không đúng.
Trang 5 – Bài 4