Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 13 : Các muthiếtkếphcvtchccutrúccác₫ốitượng
Slide 1
13.1 Tng quát vmuthiếtkế HĐT
13.2 MuAdapter
13.3 Mu Composite
13.4 MuProxy
13.5 Mu Decorator
13.6 Mu Facade
13.7 Mu Flyweight
13.8 Kếtchương
Chương 13
Các muthiếtkếphcvtchccu trúc các ₫ối
tượng (Structural Patterns)
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 13 : Các muthiếtkếphcvtchccutrúccác₫ốitượng
Slide 2
13.1 Tng quát vmuthiếtkế HĐT
Trong vic phát trin1 phnmm, ta thường thchin các hot
₫ộng chcnăng sau ây :
1. Nmbtyêucuphnmm
2. Phân tích tng chcnăng
3. Thiếtkế
4. Hinthc (hay viết code)
5. Kimth
Các hot₫ộng trên mi quan hphthuc nhau, cthkết
qucabướci làdliu₫ầuvàocabướcthi+1. Do ónếu
bướcthi có li, nghĩalàkếtqucanókhôngúng thì skéo
theo các bướcsauósblichodùtacgng thchin chúng
ttcáchgìina.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 13 : Các muthiếtkếphcvtchccutrúccác₫ốitượng
Slide 3
13.1 Tng quát vmuthiếtkế HĐT
Nhưvy, libước₫ầutiênlànguyhinht, kế₫ólàlibước
thc2, th3, ... Tuy nhiên, các bướcnmbtyêucu phân
tích chcnăng thường chtorakếtquít, chưacó₫ộ phctp
cao, do ótavncócáchkim soát ₫ể nhng kếtqunày ít li
nht. Còn bt₫ầutbướcthiếtkếtrở₫i, kếtqusnhiuvàcó
₫ộ phctpcaohơn nên skhó kim soát hơn. Và nếucóli
bước này thì rt nguy hivìskéo theo hot₫ộng hinthc
không ý nghĩagìna.
Tóm li, thiếtkếphnmmlàmtvn₫ề rtkhókhăn, nhtlàkhi
phnmmln, mi quan hgia các phntsnhiuvàphc
tp, bnthiếtkếthường không hiuqu chanhiulikhó
biết. Hơnna, ta thường phitrgiá cao cho các lithiếtkế
chúng nh hưởng nng nề₫ến các giai on sau nhưviết code,
kimth….
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 13 : Các muthiếtkếphcvtchccutrúccác₫ốitượng
Slide 4
13.1 Tng quát vmuthiếtkế HĐT
Dùng phương pháp thiếtkếhướng ₫ốitượng sgiúp ta ththiết
kế ₫ượcphnmmcócu trúc ràng, mch lc, nhờ₫ótad
phát hinlinếucó, dhiuchnh, dnâng cptng thành phn
(thí dnhtính bao óng, bao gp, thakế, ax, tng quát
hóa…).
Tuy nhiên victhiếtkếphnmm HĐT còn phthucnhiuvào
khnăng ngườithiếtkế, không phiaithiếtkế₫uto₫ược
nhng kếtqutích ccnhư₫ã nêu trên.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 13 : Các muthiếtkếphcvtchccutrúccác₫ốitượng
Slide 5
13.1 Tng quát vmuthiếtkế HĐT
Hinnay, hot₫ộng thiếtkếphnmmlàphi₫ạt₫ược3 miêu
tiêu chính sau ây (trong nhiumc tiêu khác) :
Mc tiêu 1 : thiếtkế ₫ượcphnmmgiiquyếtúng các chc
năng user yêu cu. Đây mc tiêu chính yếunht.
Mc tiêu 2 : phihnchế ₫ượcvictáithiếtkếli trong tương
lai, cho do gì.
Mc tiêu 3 : bnthiếtkếhinhànhphihtrttnhtvictái
thiếtkếlinếu do gì óphitáithiếtkếliphnmm.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 13 : Các muthiếtkếphcvtchccutrúccác₫ốitượng
Slide 6
13.1 Tng quát vmuthiếtkế HĐT
nhiu nguyên nhân dn₫ếntáithiếtkếphnmm (PM) :
Do PM phthuc vào phncng, hệ₫iu hành (OS) hay PM khác
: PM càng dùng trctiếp các thông sphncng hay PM liên
quan sphi thay ₫ổi khi các thông snày thay ₫ổi.
Do PM phthuc vào giithut : khi PM có nhiugii pháp, nhiu
mc₫ộ x cho cùng mtvn₫ề, vic ràng bucchtchPM
vigii pháp cthsdn₫ếnkhóbsung, thay ₫ổiPM.
Do PM chưacótínhtng quát hóa. Thí dtin ích gphím tiếng
Vitlúc₫ầuchhtrnhpliu theo 1 cách gcth, nếumun
PM này htrgnhiu cách khác, ngay ccách do user tự₫tthì
phithiếtkếliPM gphím.
Các thành phnca PM liên quan nhau quá chtch: hiuchnh,
nâng cp 1 thành phnthường phi thay ₫ổicácthànhphnph
thuctrctiếpvàgiántiếpnótheokiu dây chuyn.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 13 : Các muthiếtkếphcvtchccutrúccác₫ốitượng
Slide 7
13.1 Tng quát vmuthiếtkế HĐT
Mtbin pháp ₫ược₫ề xut₫ể nhng bnthiếtkếtt, hnchế
₫ượcvictáithiếtkếlivàkhicnthiếtkếli, nó phihtrtt
nhtvictáithiếtkế sdng linhng muthiếtkếhướng ₫ối
tượng (Object Oriented Design Patterns), hay gittlàmuthiết
kế(Design Patterns).
Vymuthiếtkế ? Muthiếtkế các ₫ặcimsau:
bnthiếtkếcanhng người chuyên nghipvànitiếng,
ã₫ượcsdng trong các phnmmang ₫ượcdùngph
biếnvà₫ượcngười dùng ánh giá tt.
Giúp gii quyết 1 trong nhng vn₫ề thiếtkếthường gptrong
các phnmm.
Giúp cho bnthiếtkếphnmmcótínhuyn chuyncao, d
hiuchnh dnâng cp.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 13 : Các muthiếtkếphcvtchccutrúccác₫ốitượng
Slide 8
13.1 Tng quát vmuthiếtkế HĐT
Vai trò camuthiếtkế: muthiếtkế₫óng 1 svai trò chính yếu
nhưsau :
Cung cpphương pháp gii quyếtnhng vn₫ề thctế
thường gp trong phnmmmàmingườiãánh giá, kim
nghimlàrttt.
binpháptáisdng tri thc các chuyên gia phnmm.
Hình thành kho tri thc, ngvng trong giao tiếpgianhng
người làm phnmm.
Giúp ta tìm hiu₫ể nmvng hơn₫ặcim ngôn nglptrình
hướng ₫ốitượng.
Nhưvy, nếusdng trit₫ể các muthiếtkếtrong victhiếtkế
phnmmmi, ta stiếtkim₫ược chi phí, thi gian ngunlc.
HơnnaPM to₫ượcs ₫ộ tin cy, uyn chuyncao, ddàng
hiuchnh nâng cp sau này khi cnthiết.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 13 : Các muthiếtkếphcvtchccutrúccác₫ốitượng
Slide 9
13.1 Tng quát vmuthiếtkế HĐT
Phân loicácmuthiếtkế: Da vào công dng, ta thphân các
muthiếtkếthành 3 nhóm chính :
Structural (nhóm mucutrúc): các mu này cung cpcơchế
₫ể qunlýcutrúcvàmi quan hgia các class, thí dụ₫
dùng li các class có sn (class thưvin, class ca bên thba
- third party,…), ₫ể tomi ràng bucthpnhtgia các class
(lower coupling) hay cung cpcáccơchếthakếkhác.
Creational (nhóm muphcvkhito₫ốitượng) : giúp khc
phccácvn₫ề vkhito₫ốitượng, nhtlà₫ốitượng lnvà
phctp, hnchếsphthuccaphnmm vào platform
cpthp.
Behavioral (nhóm mugii quyết hành vi ca₫ốitượng) : giúp
che dushinthcca₫ốitượng, che dugiithut, htr
vic thay ₫ổicuhình₫ốitượng mt cách linh.
Khoa Khoa hc& Kthut Máy tính
Trường ĐH Bách Khoa Tp.HCM
© 2010
Môn : Lp trình hướng ₫ối tượng
Chương 13 : Các muthiếtkếphcvtchccutrúccác₫ốitượng
Slide 10
13.1 Tng quát vmuthiếtkế HĐT
Phân loicácmuthiếtkế: Còn nếudavàoloiphnt ₫ược
dùng trong mu, ta thphân các muthiếtkếthành 2 nhóm
chính :
Class patterns : nhóm muthiếtkếchsdng các class và
mi quan htĩnh gia các class nhưthakế, hinthc. Các
mi quan hnày ₫ượcxác₫ịnh tithiimdch, do ó class
patterns thích hp cho thành phnchcnăng không cn thay
₫ổi₫ộng trong thigianchy.
Object patterns : nhóm muthiếtkế dùng mi quan hgia
các ₫ốitượng, mi quan hnày rt₫ộng ddàng thay ₫ổi
btklúc nào trong lúc phnmmchy