You are on page 1of 175

1

B mn Cng ngh phn mm


Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 1
Trng ai hoc Bach Khoa Tp. H Ch Minh
Khoa Cng Ngh Thng Tin
Mn hoc
PHN TCH & THIT K
HNG I TNG DNG UML
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 2
1. n lai 1 s khai nim c ban cua hng i tng, cac ngn ng
hng i tng thng dung, c ch dch cac type/class sang ngn
ng c in (ngn ng may).
2. n lai qui trnh phat trin phn mm hp nht.
3. n lai ngn ng UML c dung miu ta cac artifacts cua qui
trnh phat trin phn mm hp nht.
4. Gii thiu cac mu thit k hng i tng c dung ph bin
trong cac ng dung hin hanh va cac ng dung tng lai.
Ni dung mn hoc
2
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 3
Tai liu tham khao chnh
[1] The Unified Software Development Process, Ivar Jacabson,
Grady Booch, James Rumbaugh, Addison-Wesley, 1999.
[2] Software Engineering - A practitioner's approach, R.S.
Pressman, McGraw-Hill, 1997
[3] Design Patterns, Erich Gamma, Richard Helm, Ralph
Johnson, John Vlissides, Addison-Wesley, 1998.
[4] OMG Unified Modeling Language Specification, version 1.3,
Object Management Group (www.omg.org), 1999
[5] UML Toolkit, Hans-Erik Eriksson & Magnus Penker, 1998
[6] Object-Oriented Software Engineering, A Use-Case Driven
Approach, I. Jacobson, ACM Press/Addison-Wesley, 1992
[7] Object-Oriented Analysis and Design with Applications, G.
Booch, The Benjamin Cummings Publishing Company, 1994
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 4
Trng ai hoc Bach Khoa Tp. H Ch Minh
Khoa Cng Ngh Thng Tin
Chng 1
CAC KHAI NIM C BAN CUA
M HNH HNG I TNG
Chng 1: Cac khai nim c ban cua m hnh hng i tng
3
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 5
Ni dung
1.1 T lp trnh co cu truc n OOP
1.2 i tng, thuc tnh, tac vu.
1.3 Abstract type va class.
1.4 Tnh bao ong.
1.5 Tnh tha k va c ch 'override'.
1.6 Tnh bao gp.
1.7 Thng ip, tnh a hnh va kim tra kiu.
1.8 Tnh tng quat hoa.
1.9 Tnh vng bn.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 6
1. May tnh s la thit b co th thc hin 1 s hu han cac chc nng
c ban (tp lnh), c ch thc hin cac lnh la t ng t lnh u
cho n lnh cui cung. Danh sach cac lnh c thc hin nay
c goi la chng trnh.
2. bt ky cng vic ngoai i nao cung co th c chia thanh trnh t
nhiu cng vic nho hn. Trnh t cac cng vic nho nay c goi
la giai thut giai quyt cng vic ngoai i. Mi cng vic nho hn
cung co th c chia nho na,... cng vic ngoai i la 1 trnh
t cac lnh may (chng trnh).
3. vn mu cht cua vic dung may tnh giai quyt vn ngoai
i la lp trnh. Cho n nay, lp trnh la cng vic cua con ngi
(vi s tr giup ngay cang nhiu cua may tnh).
4. cac lnh cua chng trnh (code) phai tham khao hoc x ly (truy
xut) thng tin (d liu).
T lp trnh co cu truc n OOP
Chng 1: Cac khai nim c ban cua m hnh hng i tng
4
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 7
T lp trnh co cu truc n OOP
Chng 1: Cac khai nim c ban cua m hnh hng i tng
5. D liu cua 1 chng trnh co th rt nhiu va a dang. truy
xut ung 1 d liu ta cn :
- tn nhn dang.
- kiu d liu miu ta cu truc d liu.
- tm vc truy xut miu ta gii han khach hang truy xut d
liu.
6. Chng trnh c in = giai thut + d liu.
7. Chng trnh con (function, subroutine,...) cho phep cu truc
chng trnh, s dung lai code...
8. Chng trnh c in co cu truc phn cp nh sau :
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 8
Chng trnh = cu truc d liu + giai thut
entry 'start'
global data module
(package)
local data
of module
local data
of function
Chng 1: Cac khai nim c ban cua m hnh hng i tng
T lp trnh co cu truc n OOP
5
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 9
Chng trnh = tp cac i tng tng tac nhau
entry
i tng
(object)
local data
of object
local data
of operation
Chng 1: Cac khai nim c ban cua m hnh hng i tng
T lp trnh co cu truc n OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 10
Tng quat v hng i tng
M hnh hng i tng gii thiu 1 quan im lp trnh
(va phn tch/thit k) khac hn so vi trng phai c in
(co cu truc).
Bt u nhen nhom vao nhng nm cui 60s va n u
90s th tr nn rt ph bin trong cng nghip phn mm.
Nhng ngn ng hng i tng u tin : Smalltalk,
Eiffel. Sau o xut hin thm : Object Pascal, C++, Java,
C#,
Hnh thanh cac phng phap phn tch/thit k hng i
tng.
Va hin nay ta co 1 qui trnh phat trin phn mm hp nht
da trn ngn ng UML.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
6
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 11
i tng (Object)
~ M hnh i tng quan nim chng trnh bao gm cac i
tng sinh sng va tng tac vi nhau.
~ i tng bao gm :
thuc tnh (d liu) : mang 1 gia tr nht nh tai tng thi im.
tac vu (operation) : thc hin 1 cng vic nao o.
Interface
(abstract type)
Implementation
(class)
Chng 1: Cac khai nim c ban cua m hnh hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 12
Kiu tru tng (Abstract type)
~ Abstract type (type) nh ngha interface s dung i tng.
~ Interface la tp cac entry ma bn ngoai co th giao tip vi i
tng.
~ Dung signature nh ngha mi entry, Signature gm :
tn method (operation)
danh sach i s hnh thc, mi i s c c ta bi 3
thuc tnh : tn, type va chiu chuyn ng (IN, OUT,
INOUT).
c ta chc nng cua method (thng la chu thch).
~ Dung abstract type (ch khng phai class) c ta kiu cho
bin, thuc tnh, tham s hnh thc.
~ User khng cn quan tm n class (hin thc cu th) cua i
tng.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
7
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 13
Class (Implementation)
~ Class nh ngha chi tit hin thc i tng :
nh ngha cac thuc tnh d liu : gia tr cua tt ca thuc
tnh xac nh trang thai cua i tng.
kiu cua thuc tnh co th la type c in hay abstract type,
trong trng hp sau thuc tnh cha tham khao n i
tng khac.
coding cac method va cac internal function.
~ nh ngha cac method tao va xoa i tng.
~ nh ngha cac method constructor va destructor.
~ User khng cn quan tn n class cua i tng.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 14
V du v class trong Java
class abstract HTMLObject {
protected static final int LEFT = 0;
protected static final int MIDDLE = 1;
protected static final int RIGHT = 2;
private int alignment = LEFT;
protected Vector objects = null;
HTMLObject( ){ // constructor
objects = new Vector (5);
}
public void setAlignment( int algnmt ) {
alignment = algnmt;
}
public int getAlignment( ) {
return alignment;
}
public abstract String toHTML( ); // abstract operation
}
Chng 1: Cac khai nim c ban cua m hnh hng i tng
8
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 15
Tnh bao ong (encapsulation)
z Bao ong : che du moi chi tit hin thc cua i tng,
khng cho bn ngoai thy va truy xut tnh c lp cao
gia cac i tng (hay tnh kt dnh - cohesion gia cac
i tng rt thp).
che du cac thuc tnh d liu : nu cn cho phep truy
xut 1 thuc tnh d liu, ta tao 2 method get/set tng
ng giam sat vic truy xut va che du chi tit hin
thc bn trong.
che du chi tit hin thc cac method.
che du cac internal function va s hin thc cua chung.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 16
Tnh tha k (inheritance)
~ Tnh tha k cho phep giam nhe cng sc nh ngha
type/class : ta co th nh ngha cac type/class khng phai
t u ma bng cach k tha type/class co sn, ta ch nh
ngha thm cac chi tit mi ma thi (thng kha t).
a tha k hay n tha k.
Mi quan h supertype/subtype va superclass/subclass.
co th override cac method cua class cha, kt qua
override ch co ngha trong i tng class con.
i tng cua class con co th ong vai tro cua i
tng cha nhng ngc lai thng khng ung.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
9
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 17
V du v tha k va override - Java
class Geometry {
public Draw(Graphics g);
protected int xPos, yPos;
protected double xScale, yScale;
protected COLORREF color;
};
class Line extends Geometry {
int xPos2, yPos2;
// other attributes...
public Draw(Graphics g) {
// cac lnh ve oan thng
}
}
Chng 1: Cac khai nim c ban cua m hnh hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 18
Tnh bao gp (aggregation)
1 i tng co th cha nhiu i tng khac tao nn mi
quan h bao gp 1 cach qui gia cac i tng.
Co 2 goc nhn v tnh bao gp : ng ngha va hin thc.
O
1
O
2
O
3
Goc nhn ng ngha
Goc nhn hin
thc
O
1
O
2
O
3
Chng 1: Cac khai nim c ban cua m hnh hng i tng
10
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 19
V du v bao gp - C++
class Geometry { // abstract base class
public:
Geometry( );
~Geometry( );
virtual void Draw( Window *pWnd ) = 0; // abstract operation
protected:
int xPos, yPos;
double xScale, yScale;
COLORREF color;
};
class Group : public Geometry {
public:
Group( );
~Group( );
virtual void Draw( Window *pWnd ); // override
private:
Geometry **ppGeo; // pointer container
int geoCount;
};
Chng 1: Cac khai nim c ban cua m hnh hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 20
Thng ip (Message)
~ Thng ip la 1 phep goi tac vu n 1 i tng t 1
tham khao.
~ Thng ip bao gm 3 phn :
tham khao n i tng ch.
tn tac vu mun goi.
danh sach tham s thc cn truyn theo (hay nhn v t)
tac vu.
v du : aCircle.SetRadius (3); aCircle.Draw (pWnd);
~ Thng ip la phng tin giao tip (hay tng tac)
duy nht gia cac i tng.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
11
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 21
Tnh a xa (Polymorphism)
~ Cung 1 lnh gi thng ip n i tng thng qua cung 1
tham khao nhng v tr/thi im khac nhau co th gy ra
vic thc thi method khac nhau cua cac i tng khac
nhau.
T1 p1; // C1 va C2 la 2 class hin thc T1
...
p1 = New C1; // tao i tng C1, gan tham khao vao p1
p1.meth1(...);
...
p1 = New C2; // tao i tng C2, gan tham khao vao p1
p1.meth1(...);
Lnh p1.meth1(...); 2 v tr khac nhau kch hoat 2 method
khac nhau cua 2 class khac nhau.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 22
Kim tra kiu (type check)
~ Cht va dung mi quan h 'conformity' (tng thch tng
quat). Type A tng thch vi type B A cha moi method
cua B va ng vi tng method cua B :
tn tai 1 method cung tn trong A.
danh sach i s cua 2 method tng ng phai bng
nhau.
kiu i s OUT hay gia tr return cua method trong A
phai tng thch vi kiu cua i s tng ng trong B.
kiu i s IN cua method trong B phai tng thch vi
kiu cua i s tng ng trong A.
kiu i s INOUT cua method trong A phai trung vi
kiu cua i s tng ng trong B.
quan h so trung hay quan h con/cha (sub/super) la trng
hp c bit cua quan h tng thch tng quat.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
12
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 23
Tnh tng quat hoa (Generalization)
~ Co 2 ng ngha khac nhau cua tnh tng quat hoa :
class tng quat hoa cho phep san sinh t ng cac
class bnh thng, cac class bnh thng t no ch co
th tao ra i tng. Thng dung ng ngha nay trong
giai oan lp trnh.
ngc vi tnh tha k : supertype/superclass la
type/class tng quat hoa cua cac con cua no. Thng
dung ng ngha nay trong giai oan phn tch/thit k
phn mm.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 24
Tnh thng tru (persistence)
~ i sng cua 1 i tng c lp vi i sng cua phn t
tao ra no.
i tng phai tn tai khi con t nht 1 tham khao n no
trong h thng.
i tng phai b xoa khi khng con tham khao nao n
no, v tai thi im nay i tng la rac. Vic xac nh
chnh xac 1 i tng co phai la rac hay khng la 1 vic
phc tap code ng dung khng c phep lam, y la
cng vic cua h thng thng qua module 'garbage
collection'.
vng bn khng phai la vnh hng, mc co th la 1
session cua may ao (JVM) hay lu dai (thng qua a
cng, CDROM).
Chng 1: Cac khai nim c ban cua m hnh hng i tng
13
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 25
Tng kt
~ M hnh hng i tng quan nim th gii (hay chng trnh)
bao gm cac i tng sng chung va tng tac vi nhau.
~ Cac c im chnh cua hng i tng :
Bao ong : mi i tng bao gm d liu va tac vu. Cac tac vu thit
lp nn hanh vi cua i tng. Cac i tng c phn loai bng
class.
Cac i tng tng tac vi nhau bng cach gi thng ip.
gia cac class/i tng co th tn tai quan h bao gp, tha k, tng
quat hoa.
Tnh a hnh : kt qua cua s kim tra kiu da vao mi quan h
'conformity'.
Tnh vng bn : i tng tn tai khi con t nht 1 tham khao n no.
Chng 1: Cac khai nim c ban cua m hnh hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 26
Chng 2
TH DU V NGN NG OOP
) Visual C++
) Java
Chng 2: Th du v cac ngn ng OOP
Trng ai hoc Bach Khoa Tp. H Ch Minh
Khoa Cng Ngh Thng Tin
14
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 27
2.1 Ngn ng Visual C++
1. Ch h tr khai nim class.
2. Cho phep a tha k.
3. Dung 'abstract class' nh ngha interface.
4. Tm vc truy xut cac thanh phn.
5. a hnh co chon loc nh 'virtual function'
6. Ch h tr cac i tng tam.
7. Override method khi tha k.
8. Co th nh ngha function overloaded.
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 28
Ch h tr khai nim class
1. Dung class nh ngha kiu cho cac bin, thuc tnh
i tng co th cha vt ly i tng khac hay cha tham
khao n i tng khac.
2. a tha k trong nh ngha class 1 class co th cha nhiu
class con trung nhau dung "virtual base class" ti u hoa
b nh i tng.
Chng 2: Th du v cac ngn ng OOP
15
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 29
Class tru tng (Abstract class)
3. H tr khai nim "abstract class" nh ngha class ch cha
thng tin interface nhng khng cho phep dung class nay
nh ngha kiu cho bin hay thuc tnh. 1 abstract class la 1
class cha t nht 1 "pure virtual funtion".
class Geometry { // abstract class
public:
Geometry( );
~Geometry( );
virtual void Draw( Window *pWnd ) = 0; // pure virtual function
protected:
int xPos, yPos;
double xScale, yScale;
COLORREF color;
};
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 30
Tm vc truy xut thanh vin
4. Tm vc truy xut thng tin trong i tng :
private : thng tin b che du hoan toan.
protected : ch che du bn ngoai nhng cho phep cac i
tng con, chau, cht... truy xut.
public : cho phep tt ca moi ni truy xut.
Friend class : la class ma mi function cua no u co th truy
xut t do mi thanh phn cua class hin tai.
Friend function : la function co th truy xut t do mi thanh
phn cua class hin tai.
Co th han ch tm vc cua thanh vin cua class cha khi tha
k.
Chng 2: Th du v cac ngn ng OOP
16
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 31
H tr tnh a hnh co chon loc
5. nh ngha 'virtual function' nu mun ap dung tnh a hnh
trong vic gi thng bao yu cu function nay thc thi.
Tt ca cac 'virtual function' c quan ly trong 1 danh sach
"virtual function table".
a ch function 1
a ch function 2
a ch function 3
a ch function i
a ch function n
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 32
Cac i tng u tam thi
6. Cac i tng ch tn tai tam thi trong khng gian process.
Tham khao n i tng thc cht la pointer cuc b.
chng trnh phai t vit code cho hoat ng save/restore i
tng nu mun lu gi/dung lai i tng.
VC++ h tr hoat ng save/restore i tng nh kha nng
'Serialization'.
7. Co quyn 'override' bt ky toan t hay function nao cua class
cha.
8. Cho phep nh ngha cac ham 'overloaded' : cung tn nhng
'signature' khac nhau.
Chng 2: Th du v cac ngn ng OOP
17
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 33
Skeleton nh ngha class
class Geometry : Object { // == class Geometry : public Object {
public:
Geometry( );
~Geometry( );
virtual void Draw( Window *pWnd ); // virtual method
BOOL IsDisplayed(void);
....
protected:
COLORREF color;
....
private :
int xPos, yPos;
double xScale, yScale;
...
};
class Point : Geometry {};
class Line : Geometry { .... };
class Polygon : Geometry {....};
class Rectangle : Geometry {....};
....
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 34
Cu truc 1 chng trnh Dialog based n gian
InitInstance()
DoModal()
CProgramApp
CProgramDlg
Chng 2: Th du v cac ngn ng OOP
18
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 35
Cu truc 1 chng trnh SDI n gian
InitInstance()
CProgramApp
CSingleDocTemplate
CMainFrame
CProgramView
CProgramDoc
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 36
Cu truc 1 chng trnh MDI n gian
InitInstance()
CProgramApp
CMultiDocTemplate
CChildFrame
CProgramView
CProgramDoc
Chng 2: Th du v cac ngn ng OOP
19
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 37
2.2 Ngn ng Java
1. H tr 'interface' (1 dang cua type) va class.
2. H tr n tha k.
3. Dung 'abstract class' nh ngha interface.
4. Tm vc truy xut cac thanh phn.
5. H tr package
6. a hnh y u.
7. Ch h tr i tng tam trong session JVM
8. Override function khi tha k.
9. Co th nh ngha function overloaded.
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 38
1. Chu yu dung class nh ngha kiu cho cac bin, thuc
tnh.
Co th dung interface nh ngha kiu cho cac bin, thuc
tnh. i tng ch co th cha tham khao n i tng khac.
2. Phai goi ham tao i tng 1 cach tng minh, nhng khng
c xoa i tng.
class C1 extends RootClass {...}
C1 o1; // o1 cha tham khao n i tng C1
o1 = New C1;
3. Interface ch c dung trong trng hp c bit va khng
tng ng vi abstract type.
4. n tha k trong nh ngha class mi quan h tha k
gia cac class kha n gian.
H tr Class va Interface
Chng 2: Th du v cac ngn ng OOP
20
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 39
H tr abstract class
5. H tr khai nim "abstract class" nh ngha class cha
thng tin interface va khng cho phep 'instanciate' i tng.
Ban ch co th dung class 'abstract class' c ta kiu cho
cac bin hoc nh ngha cac class con.
class abstract Geometry { // abstract class
protected int xPos, yPos;
protected double xScale, yScale;
protected COLORREF color;
...
public abstract Draw(Graphics g); // abstract function
...
};
Abstract class co th cha y u cac hin thc bn trong,
nhng thng ch co cha cac 'abstract function'.
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 40
Tm vc truy xut cac thanh phn
6. Tm vc truy xut cac thanh phn trong i tng :
private : thanh phn b che du hoan toan.
protected : che du bn ngoai nhng cho phep cac i tng
con, chau, cht... truy xut.
public : cho phep tt ca moi ni truy xut.
friendly : cho phep moi phn t trong package truy xut. y
la tm vc default va khng co t khoa tm vc tng minh.
Chng 2: Th du v cac ngn ng OOP
21
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 41
7. Package la n v quan ly tm vc cua java, co th cha nhiu
class.
package graphics;
public class Circle extends Graphic implements Draggable {
. . .
}
Tt ca moi phn t c nh ngha trong 1 file source u
thuc 1 package : tn c qui nh bi phat biu package hay
la package default.
Nhiu file source co th thuc cung 1package (dung cung tn
trong phat biu package).
H tr package
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 42
H tr y u tnh a hnh
8. Tt ca cac public function c quan ly trong 1 danh sach
"public function table".
a ch function 1
a ch function 2
a ch function 3
a ch function i
a ch function n
Chng 2: Th du v cac ngn ng OOP
22
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 43
Cac i tng u 'tam thi'
9. Cac i tng ch tn tai tam thi trong 1session chay JVM.
Ban co th tao ra cac i tng mi ma khng cn xoa no.
i tng se tn tai mt khi con tham khao n no. Module
Garbage Collection trong JVM se chu trach nhim phat hin
i tng 'rac' va xoa no ra khoi b nh JVM.
10. Co quyn 'override' bt ky function nao cua class cha.
11. Cho phep nh ngha cac ham 'overloaded' : cung tn nhng
'signature' khac nhau.
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 44
Th du v chng trnh Java
import java.net.*;
public class getnet {
public static void main(String args[]) {
try {
if(args.length!=1) {
System.out.println("Usage: java AddrLookupApp <HostName>");
return;
}
InetAddress host = InetAddress.getByName(args[0]);
String hostName = host.getHostName();
System.out.println ("Host name : "+hostName);
System.out.println ("IP address:"+host.getHostAddress());
}
catch (UnknownHostException e) {...}
}
}
Chng 2: Th du v cac ngn ng OOP
23
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 45
Th du v chng trnh Java
Chng 2: Th du v cac ngn ng OOP
12.34.25
AlarmClock
GUIClock
wakeup()
<<cha>>
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 46
Th du v cac class Java
public class AlarmClock {
private static final int MAX_CAPACITY = 10;
private static final int UNUSED = -1;
private static final int NOROOM = -1;
private Sleeper[] sleepers = new Sleeper[MAX_CAPACITY];
private long[] sleepFor = new long[MAX_CAPACITY];
public AlarmClock () {
for (int i = 0; i < MAX_CAPACITY; i++)
sleepFor[i] = UNUSED;
}
Chng 2: Th du v cac ngn ng OOP
24
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 47
Th du v cac class Java
public synchronized boolean letMeSleepFor(Sleeper s, long time)
{
int index = findNextSlot();
if (index == NOROOM) {
return false;
} else {
sleepers[index] = s;
sleepFor[index] = time;
new AlarmThread(index).start();
return true;
}
}
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 48
Th du v cac class Java
private synchronized int findNextSlot() {
for (int i = 0; i < MAX_CAPACITY; i++) {
if (sleepFor[i] == UNUSED)
return i;
}
return NOROOM;
}
private synchronized void wakeUpSleeper(int sleeperIndex) {
sleepers[sleeperIndex].wakeUp();
sleepers[sleeperIndex] = null;
sleepFor[sleeperIndex] = UNUSED;
}
Chng 2: Th du v cac ngn ng OOP
25
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 49
Th du v cac class Java
private class AlarmThread extends Thread {
int mySleeper;
AlarmThread(int sleeperIndex) {
super();
mySleeper = sleeperIndex;
}
public void run() {
try {
sleep(sleepFor[mySleeper]);
} catch (InterruptedException e) {}
wakeUpSleeper(mySleeper);
}
}
}
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 50
Th du v cac class Java
public interface Sleeper {
public void wakeUp();
public long ONE_SECOND = 1000;// in milliseconds
public long ONE_MINUTE = 60000; // in milliseconds
}
import java.applet.Applet;
import java.awt.Graphics;
import java.util.*;
import java.text.DateFormat;
public class GUIClock extends Applet implements Sleeper {
private AlarmClock clock;
public void init() {
clock = new AlarmClock();
}
Chng 2: Th du v cac ngn ng OOP
26
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 51
Th du v cac class Java
public void start() {
clock.letMeSleepFor(this, 1000);
}
public void paint(Graphics g) {
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
DateFormat dateFormatter =
DateFormat.getTimeInstance();
g.drawString(dateFormatter.format(date), 5, 10);
}
public void wakeUp() {
repaint();
clock.letMeSleepFor(this, 1000);
}
}
Chng 2: Th du v cac ngn ng OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 52
Trng ai Hoc Bach Khoa Tp. HCM
Khoa Cng ngh Thng tin
Chng 3
NGUYN TC DCH OOP
) Dch abstract type
) Dch class
Chng 3: Nguyn tc dch OOP
27
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 53
Chng trnh la 1 tp cac i tng sng va tng
tac ln nhau.
Cac i tng thuc 1 s loai nht nh (n)
Mi loai i tng c miu ta bi 1 type + 1 class
Chng trnh la tp n nh ngha type + class
Dch chng trnh OOP la vong lp dch n type + n
class.
Ta se miu ta qui trnh dch 1 type va 1 class
Tng quat v vn dch OOP
Chng 3: Nguyn tc dch OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 54
Abstract type ch cha thng tin tru tng
(interface), khng miu ta s hin thc Kt qua
vic dch 1 type ch dng lai cy ng ngha cua type
tng ng phuc vu vic kim tra kiu, ch khng
tao code ma may.
Ch cn 3 bc : duyt t vng, phn tch cu phap,
phn tch ng canh.
Nn dung cng cu h tr nh LEX, YACC.
Dch 1 abstract type
Chng 3: Nguyn tc dch OOP
28
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 55
Chng 3: Nguyn tc dch OOP
Dch class la cng vic chnh cua chng trnh dch
OOP.
Gm 2 cng vic chnh : dch thuc tnh d liu va
dch cac method (hay cac internal function).
Cn y u cac bc : duyt t vng, phn tch cu
phap, phn tch ng canh, tao ma.
Nn dung cng cu h tr nh LEX, YACC.
Dch 1 class
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 56
Chng 3: Nguyn tc dch OOP
class cu truc record
class C1 : C0 {
double d;
int i ;
...
public :
int proc4(int i);
void proc5 (double d);
...
};
Dch thuc tnh d liu
typedef struct {
// import cac field t cu truc
// c sinh ra t C0
// cac field tng ng vi C1
int C1_d;
int C1_i;
...
// cac field d liu iu khin
// t tao bi chng trnh dch
void (*pvfaddr)() ;
} C1;
29
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 57
Dch thuc tnh d liu (tt)
mi class 1 record c in.
tn class tn record.
copy cac field d liu cua cu truc sinh ra t class cha.
chuyn tng thuc tnh cua class thanh tng field cua record,
'tuyt i hoa' tn cua thuc tnh tranh nhp nhng.
thm cac field d liu iu khin phuc vu cho run-time : th du
bang a ch cac method cua i tng (pvftbl).
Chng 3: Nguyn tc dch OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 58
Dch thuc tnh d liu (tt)
cu truc record c dch ra ma may thanh 1 vung nh lin tuc
co dai bng dai cua record.
- field C1 o1; C1_o1 db dup (sizeof(C1))
truy xut 1 thuc tnh d liu tr thanh vic truy xut nh
dung cach nh a ch ch s :
- o1.i = 5; mov bx, C1_o1
mov [bx+4], 5
Chng 3: Nguyn tc dch OOP
30
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 59
class C1 : C0 {
int i ;
double d;
...
public :
int proc4(int i, double k);
void proc5 (double d);
...
};
Tao bang a ch cac method
0 "proc1" C0_proc1
1 "proc2" C1_proc2
2 "proc3" C0_proc3
3 "proc4" C1_proc4
4 "proc5" C1_proc5
5 .... ...
fname faddr
pvftbl
Chng 3: Nguyn tc dch OOP
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 60
Tao bang a ch cac method (tt)
tao bang a ch gm C1METHCNT phn t (C1METHCNT la
s method cua class hin hanh, k ca cac method tha k.
mi phn t c nhn dang qua ch s va gm 2 thng tin
chnh : tn gi nh cua method va a ch cua method.
copy bang a ch cua class cha a co.
hiu chnh lai cac a ch cua cac method b override.
thm vao cac method mi nh ngha trong class hin hanh.
Chng 3: Nguyn tc dch OOP
31
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 61
Chng 3: Nguyn tc dch OOP
int C1::proc1(int i,double k) {
C2 o2;
C2 *p2;
C1::i = i;
d = k;
proc5(d);
o2.proc2(i,d);
p2 = New(C2);
p2->proc2(i,d);
....
};
Dch 1 method
int C1_proc1(C1* p, int i, double d) {
C2 o2; C2 *p2;
// truy xut thuc tnh
p->C1_i = i; p->C1_d = d;
// goi ham
C1_proc5(p,d);
C2_proc2(&o2, i,d);
// gi thng bao : kim tra, load,
// anh xa bang a ch method
for (i = 0; i <C1METHCNT; i ++)
if (strcmp ("proc2", p2->
pvftbl[i].fname)==0) break;
(*pvftbl[i].faddr)(p2,i,d);
};
1
2
3
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 62
Chng 3: Nguyn tc dch OOP
Dch 1 method (tt)
tn method c chuyn t dang 'tng i' sang 'tuyt i'
(ni kt tn class vao).
thm tham s u tin cho ham sinh ra : miu ta tham khao
n i tng ma ham se truy xut cac thuc tnh d liu.
tn thuc tnh c chuyn t dang 'tng i' sang 'tuyt i'
(ni kt tn class vao).
goi ham internal goi ham nhng thm tham s u tin.
gi thng bao 3 bc :
kim tra, tm, load va anh xa bang a ch cac method cua
i tng.
tm ch s cua method cn goi trong bang (i).
goi gian tip method thng qua a ch phn t th i trong
bang.
32
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 63
Chng 3: Nguyn tc dch OOP
Ti u hoa code tao ra
co 2 vn ln trong qua trnh dch 1 class sang ngn ng c
in.
bang a ch method chim nhiu ch.
tn thi gian phuc vu lnh gi thng bao : kim tra, load
va anh xa bang a ch, tm ch s method cn goi va goi
gian tip qua a ch trong bang.
1 s chng trnh dch tm cach ti u hoa cac vn nay.
slide sau la cac ti u hoa cua chng trnh dch C++ va cai gia
phai tra.
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 64
Chng 3: Nguyn tc dch OOP
Ti u hoa code tao ra (tt)
trong C++, tt ca i tng u tam thi va gn cht vao ng
dung bang a ch cac method cua cac i tng lun nm
sn trong khng gian cua ng dung.
mi ln tao i tng, bin pvftbl trong i tng c gan
ngay a ch u bang method khng cn lam bc 1 cho
mi ln gi thng bao.
C++ ch dung mi quan h con/cha trong kim tra kiu cng
vic 2 c lam tai thi im dch thay v tai thi im gi thng
bao trong luc chay.
ct tn gi nh method khng cn phai lu tr trong bang a
ch cac method.
ch co cac virtual function mi c giai quyt theo c ch a
hnh, con cac function khac c dch ra li goi trc tip.
33
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 65
Chng 3: Nguyn tc dch OOP
Ti u hoa code tao ra (tt)
cai gia phai tra cua vic ti u hoa trong C++ :
ngi lp trnh phai t quyt nh method nao cn x ly
theo c ch a hnh, ham nao khng ? Nu s quyt nh
nay sai th se gy li khi chay, ma la ngi th kho long
quyt nh chnh xac.
tnh a hnh ch ung gia cac i tng co mi quan h
con/cha, o th t cac a ch method cua moi class con
trong bang a ch lun ging th t cac method tng ng
cua class cha, tuy nhin gia 2 class bt ky th khng th
am bao kim tra kiu trong C++ khng th nng cp ln
bng cach dung mi quan h "conformity".
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 66
Trng ai Hoc Bach Khoa Tp. HCM
Khoa Cng ngh Thng tin
Chng 4
QUI TRNH HP NHT & UML
) Qui trnh phat trin phn mm hp nht
) Tng quat v ngn ng m hnh UML
Chng 4: UML & Qui trnh hp nht
34
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 67
New or changed
requirements
New or changed
system
Software Engineering
Process
What Is a Process?
Defines Who is doing What, When to do it,
and How to reach a certain goal.
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 68
Key concepts
Cycle
Phase, Iterations
Process Workflows
Activity, steps
Artifacts
models
reports, documents
Worker: Architect
What does What does
happen? happen?
What is What is
produced? produced?
Who does Who does
it? it?
When does When does
architecture happen? architecture happen?
Chng 4: UML & Qui trnh hp nht
When does When does
product happen? product happen?
35
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 69
Key concepts
Chng 4: UML & Qui trnh hp nht
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle i Cycle n
time
Phase
Arch
Iteration
... Dev
Iteration
Dev
Iteration
... Trans
Iteration
...
Release Release Release Release Release Release Release Release
Prelim
Iteration
...
Inception Elaboration Construction Transition
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 70
Lifecycle Phases
time
Inception Elaboration Construction Transition
Inception Define the scope of the project and
develop business case
Elaboration Plan project, specify features, and
baseline the architecture
Construction Build the product
Transition Transition the product to its users
Chng 4: UML & Qui trnh hp nht
36
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 71
Major Milestones
time
Vision Baseline
Architecture
Initial
Capability
Product
Release
Inception Elaboration Construction Transition
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 72
Phases and Iterations
An iteration is a sequence of activities with an established plan and
evaluation criteria, resulting in an executable release
Arch
Iteration
... Dev
Iteration
Dev
Iteration
... Trans
Iteration
...
Release Release Release Release Release Release Release Release
Prelim
Iteration
...
Inception Elaboration Construction Transition
Chng 4: UML & Qui trnh hp nht
37
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 73
Iterations and Workflow
Pr elimi nary
Iteration(s)
iter.
#1
iter.
#2
iter.
#n
iter.
#n+1
ite r.
#n +2
it er.
#m
iter.
#m +1
Inception Elaboration Construction Transition
I t e r a t i o n s
Phases
Core Workflows
An iteration in the
elaboration phase
Requirements
Design
Implementation
Test
Analysis
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 74
Workflows and Models
Requirements
Design
Implementation
Test
Analysis
Use Case
Model
Design
Model
Depl.
Model
Impl.
Model
Analysis
Model
Test
Model
UML diagrams provide
views into each model
Each workflow is
associated with one or
more models.
Chng 4: UML & Qui trnh hp nht
38
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 75
Use Case Model
Use Case
Diagrams
Collaboration
Diagrams
Component
Diagrams
Deployment
Diagrams
Object
Diagrams
Statechart
Diagrams
Sequence
Diagrams
Class
Diagrams
Activity
Diagrams
Use Case
Model
Design
Model
Depl.
Model
Impl.
Model
Analysis
Model
Test
Model
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 76
Analysis & Design Model
Use Case
Diagrams
Collaboration
Diagrams
Component
Diagrams
Deployment
Diagrams
Object
Diagrams
Statechart
Diagrams
Sequence
Diagrams
Class
Diagrams
Activity
Diagrams
Use Case
Model
Design
Model
Depl.
Model
Impl.
Model
Analysis
Model
Test
Model
Incl. subsystems
and packages
Chng 4: UML & Qui trnh hp nht
39
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 77
Deployment and Implementation Model
Use Case
Diagrams
Collaboration
Diagrams
Component
Diagrams
Deployment
Diagrams
Object
Diagrams
Statechart
Diagrams
Sequence
Diagrams
Class
Diagrams
Activity
Diagrams
Use Case
Model
Design
Model
Depl.
Model
Impl.
Model
Analysis
Model
Test
Model
Incl. active classes
and components
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 78
Test Model
Use Case
Diagrams
Collaboration
Diagrams
Component
Diagrams
Deployment
Diagrams
Object
Diagrams
Statechart
Diagrams
Sequence
Diagrams
Class
Diagrams
Activity
Diagrams
Use Case
Model
Design
Model
Depl.
Model
Impl.
Model
Analysis
Model
Test
Model
Test model refers to
all other models and
uses corresponding
diagrams
Chng 4: UML & Qui trnh hp nht
40
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 79
Overview of the Unified Process
The Unified Process is
Iterative and incremental
Use case driven
Architecture-centric
Risk confronting
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 80
Use Case Driven
Req.ts Impl. Test
Use Cases bind these workflows together
Analysis Design
Chng 4: UML & Qui trnh hp nht
41
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 81
Use Cases Drive Iterations
Drive a number of development activities
Creation and validation of the systems
architecture
Definition of test cases and procedures
Planning of iterations
Creation of user documentation
Deployment of system
Synchronize the content of different models
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 82
Architecture-Centric
Models are vehicles for visualizing, specifying,
constructing, and documenting architecture
The Unified Process prescribes the successive
refinement of an executable architecture
time
Architecture
Inception Elaboration Construction Transition
Chng 4: UML & Qui trnh hp nht
42
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 83
Overview of the UML
The UML is a language for
visualizing
specifying
constructing
documenting
the artifacts of a software-intensive system
There are 4 key elements :
Modeling elements
Relationships
Extensibility Mechanisms
Diagrams
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 84
Modeling Elements
Structural elements
class, interface, collaboration, use case,
active class, component, node
Behavioral elements
interaction, state machine
Grouping elements
package, subsystem
Other elements
note
Chng 4: UML & Qui trnh hp nht
43
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 85
Relationships
Dependency
Association
Generalization
Realization
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 86
Extensibility Mechanisms
Stereotype
Tagged value
Constraint
Chng 4: UML & Qui trnh hp nht
44
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 87
Models, Views, and Diagrams
Use Case
Diagrams
Use Case
Diagrams
Use Case
Diagrams
Scenario
Diagrams
Scenario
Diagrams
Collaboration
Diagrams
State
Diagrams
State
Diagrams
Component
Diagrams
Component
Diagrams
Component
Diagrams
Deployment
Diagrams
State
Diagrams
State
Diagrams
Object
Diagrams
Scenario
Diagrams
Scenario
Diagrams
Statechart
Diagrams
Use Case
Diagrams
Use Case
Diagrams
Sequence
Diagrams
State
Diagrams
State
Diagrams
Class
Diagrams
Activity
Diagrams
A model is a complete
description of a system
from a particular
perspective
Models
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 88
Diagrams
A diagram is a view into a model
Presented from the aspect of a particular
stakeholder
Provides a partial representation of the system
Is semantically consistent with other views
In the UML, there are nine standard diagrams
Static views: use case, class, object, component,
deployment
Dynamic views: sequence, collaboration,
statechart, activity
Chng 4: UML & Qui trnh hp nht
45
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 89
Use Case Diagram
Captures system functionality as seen by users
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 90
Use Case Diagram
Captures system functionality as seen by
users
Built in early stages of development
Purpose
Specify the context of a system
Capture the requirements of a system
Validate a systems architecture
Drive implementation and generate test cases
Developed by analysts and domain experts
Chng 4: UML & Qui trnh hp nht
46
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 91
Class Diagram
Captures the
vocabulary of a
system
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 92
Class Diagram
Captures the vocabulary of a system
Built and refined throughout development
Purpose
Name and model concepts in the system
Specify collaborations
Specify logical database schemas
Developed by analysts, designers, and
implementers
Chng 4: UML & Qui trnh hp nht
47
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 93
Object Diagram
Captures instances and links
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 94
Object Diagram
Shows instances and links
Built during analysis and design
Purpose
Illustrate data/object structures
Specify snapshots
Developed by analysts, designers, and
implementers
Chng 4: UML & Qui trnh hp nht
48
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 95
Component Diagram
Captures the physical structure of the
implementation
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 96
Component Diagram
Captures the physical structure of the
implementation
Built as part of architectural specification
Purpose
Organize source code
Construct an executable release
Specify a physical database
Developed by architects and
programmers
Chng 4: UML & Qui trnh hp nht
49
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 97
Deployment Diagram
Captures the
topology of a
systems
hardware
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 98
Deployment Diagram
Captures the topology of a systems
hardware
Built as part of architectural specification
Purpose
Specify the distribution of components
Identify performance bottlenecks
Developed by architects, networking
engineers, and system engineers
Chng 4: UML & Qui trnh hp nht
50
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 99
Sequence Diagram
Captures
dynamic
behavior (time-
oriented)
Purpose
Model flow of
control
Illustrate typical
scenarios
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 100
Collaboration Diagram
Captures dynamic behavior
(message-oriented)
Purpose
Model flow of control
Illustrate coordination of
object structure and control
Chng 4: UML & Qui trnh hp nht
51
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 101
Statechart Diagram
Captures dynamic behavior (event-oriented)
Purpose
Model object lifecycle Model object lifecycle
Model reactive objects (user interfaces, devices, Model reactive objects (user interfaces, devices,
etc.) etc.)
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 102
Activity Diagram
Captures dynamic
behavior (activity-
oriented)
Purpose
Model business
workflows
Model operations
Chng 4: UML & Qui trnh hp nht
52
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 103
Architecture and the UML
Organization
Package, subsystem
Dynamics
Interaction
State machine
Design View Implementation View
Process View
Components
Classes, interfaces,
collaborations
Active classes
Deployment View
Nodes
Use Case View
Use cases
Chng 4: UML & Qui trnh hp nht
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 104
Architecture and Models
Architecture embodies a collection of views of the models
Views
Models
Use Case
Model
Design
Model
Depl.
Model
Impl.
Model
Test
Model
Analysis
Model
Chng 4: UML & Qui trnh hp nht
53
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 105
Trng ai Hoc Bach Khoa Tp. HCM
Khoa Cng ngh Thng tin
Chng 5
NM BT YU CU HT
Cac artifacts cn tao ra
Cac workers tham gia
Qui trnh phn tch
Chng 5: Nm bt yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 106
Muc ch cua hoat ng nm bt yu cu la xy dng m hnh h
thng ma se c xy dng bng cach dung cac use-case. Cac im
bt u cho hoat ng nay kha a dang :
t m hnh nghip vu (business model) cho cac ng dung nghip
vu.
t m hnh lnh vc (domain model) cho cac ng dung nhung
(embeded).
t c ta yu cu cua h thng nhng c tao bi nhom khac
va/hoc dung cac phng phap c ta khac (th du nh hng
cu truc).
t 1 im nao o nm gia cac im xut phat trn.
Mu c c h c u a h o a t n g n m b t yu c u
Chng 5: Nm bt yu cu hng i tng
54
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 107
M hnh use-case :
actor : ngi/h thng ngoai/thit b ngoai tng tac vi h thng
use-case : cac chc nng co ngha cua h thng cung cp cho
actor.
flow of events
cac yu cu c bit cua use-case
c ta kin truc (view of use-case model)
bang thut ng
cac prototype giao din vi user (user-interface prototype)
C a c artif a ct s c n ta o r a tr o n g n m b t yu c u
Chng 5: Nm bt yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 108
Use-Case Model
Actor
Use-Case System
Use - Case
*
1
*
C a c artif a ct s c n ta o r a tr o n g n m b t yu c u
Chng 5: Nm bt yu cu hng i tng
55
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 109
Use-Case
Model
System
Analyst
chu trach nhim v
Use-case
Specifier
User-Interface
Designer
Architect
chu trach nhim v
chu trach nhim v
chu trach nhim v
Architecture
Description
User Interface
Prototype
Use-Case Glossary Actor
C a c wor ker s tr o n g n m b t yu c u
Chng 5: Nm bt yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 110
Architect
Use-Case
Specifier
Find Actors &
Use-Cases
Q ui tr nh n m b t yu c u
User-Interface
Designer
System Analyst
Structure the
Use-Case Model
Prioritize
Use-Cases
Detail a
Use-Case
Prototype
User-Interface
Chng 5: Nm bt yu cu hng i tng
56
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 111
Muc ch nhn dang actor va use-case la :
Gii han h thng vi mi trng bao quanh no.
Phat hoa ai va cac g se tng tac vi h thng va h thng cung
cp cac chc nng g.
Nm bt va nh ngha danh sach cac thut ng chung thit yu
cho vic tao cac c ta v cac chc nng cua h thng.
Hoat ng nay gm 4 bc :
Tm cac actor cua h thng.
Tm cac use cases cua h thng.
Miu ta vn tt v tng use-case.
Miu ta toan th m hnh use-case.
T m A ct o r s & U s e c a s e s
Chng 5: Nm bt yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 112
Vic tm cac actor phu thuc vao im xut phat : nu xut phat t m
hnh nghip vu hay m hnh lnh vc th vic tm actor rt n gian. Con
nu xut phat t cac y nim m h th hay tra li cac cu hoi sau :
Ai la ngi s dung chc nng chnh cua h thng ?
Ai cn s h tr t h thng thc hin cng vic thng nht
cua ho ?
Ai phai thc hin cng vic bao dng, quan tr va gi cho h
thng hoat ng ?
H thng se kim soat thit b phn cng nao ?
H thng ang xy dng cn tng tac vi nhng h thng khac
khng ? H thng nao ?
Ai hoc vt th nao quan tm n hay chu anh hng bi kt
qua ma h thng phn mm tao ra ?
T m A ct o r s
Chng 5: Nm bt yu cu hng i tng
57
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 113
Vic tm cac use-case phu thuc vao im xut phat : nu xut phat t
m hnh nghip vu hay m hnh lnh vc th vic tm use-case rt n
gian. Con nu xut phat t cac y nim m h th hay tra li cac cu hoi
sau :
Actor yu cu chc nng g cua h thng ?
Actor cn phai oc, tao, xoa, sa i hoc lu tr thng tin nao
cua h thng ?
Actor cn thit phai c canh bao v nhng s kin trong h
thng, hay actor cn phai bao hiu cho h thng v vn nao
o khng ?
H thng co th h tr mt s cng vic thng nht cua actor
nao o khng ?
T m U s e-C a s e s
Chng 5: Nm bt yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 114
Mi use-case sau khi tm c, nn c t tn, c miu ta bng vai
cu tng kt cac hoat ng ri sau o c ta tng bc h thng cn g
tng tac vi actor.
Dung lc va cac flow of events miu ta m hnh use-case tng
th, c bit la cac mi quan h gia cac use-case va vi actor.
Quan h gia cac actors : tng quat hoa (generalization).
Quan h gia actor va use-case : lin kt (association).
Quan h gia cac use-cases :
tng quat hoa.
include
extend
Miu ta v n tt t ng U s e- C a s e s
Chng 5: Nm bt yu cu hng i tng
58
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 115
Cac ni quan h gia cac actor va use-cases
Actor A
Use-Case X
Use-Case Y
Actor B
Use-Case Z
Use-Case B
Use-Case C
Use-Case D
Use-Case A
<<include>>
<<extend>>
Chng 5: Nm bt yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 116
Store Manager
Add New User
Remove User
Edit User Information
POS Login User Maint enance
<<exten...
<<extend>>
<<extend>>
<<include>>
Cac ni quan h gia cac use-cases va use-cases
Chng 5: Nm bt yu cu hng i tng
59
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 117
Customer
Retail S tor e
Customer
Telephone
Customer
Online
Customer
Cus tomers
Cac ni quan h gia cac actor va actor
Chng 5: Nm bt yu cu hng i tng
Quan h gia cac actors : tng
quat hoa (generalization).
Th du Customer la actor tng
quat hoa cua cac actor Online
Customer, Telephone Customer,
Retail Store Customer.
Lu y actor tng quat hoa
thng khng co tht, no la
phn t tru tng.
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 118
Lc use-case Sales:From Order to Delivery
Chng 5: Nm bt yu cu hng i tng
Perform Transaction
Buyer
Order Goods & Services
Confirm Order
Invoice Buyer
Send Reminders
Seller
Accounti ng System
Pay Overdraft Fee
Pay Invoice
<<extend>>
Ini tiator
Initiator
Initiator
Initiator
Initiator
60
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 119
Lc trang thai cua use-case Pay Invoice
Chng 5: Nm bt yu cu hng i tng
Browsing
Invoice
Scheduled
Invoice Paid
Invoice
Cancelled
reject
schedule
pay on due date
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 120
Xy dng cac lc use-case va cac c ta giai thch m hnh use-
case, nht la cach thc ma cac use-case quan h vi nhau hay vi cac
actor :
lc miu ta cac use-case phuc vu cho 1 actor hay 1
use-case nghip vu.
am bao tnh nht quan khi miu ta nhiu use-case ng
thi, nn xy dng 1 bang thu ng chung (glossary).
m hnh use-case co th c t chc dang cy th bc
nh cac package use-case.
xy dng c ta "survey" cho m hnh use-case tng th va
nh khach hang va ngi dung kim tra, anh gia lai.
Miu ta tng th m hnh Use-Cases
Chng 5: Nm bt yu cu hng i tng
61
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 121
cac use-case tm c khng phai thit yu nh nhau, do o
kin truc s cn sp xp th t u tin chung xac nh
use-case nao nn c phat trin trc, use-case nao c
phat trin sau.
kt qua cua hoat ng nay la xy dng c goc nhn kin
truc cua m hnh use-case, no c dung hoach nh
cac bc lp cung vi cac yu t khac nh nghip vu, kinh
t...
Sp th t u tin cac use-case
Chng 5: Nm bt yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 122
Muc ch la c ta "flow of events" cho tng use-case :
cu truc c ta use-case.
c ta use-case bao gm nhng g.
hnh thc hoa c ta use-case.
Cu truc c ta use-case :
gm 1 lung cng vic c ban va cac lung phu.
Cac lung phu co th xay ra v cac ly do :
Actor co th chon thc hin 1 trong nhiu nhanh.
Nu hn 1 actor dung use-case, cac hoat ng cua ho co
th anh hng ln nhau.
H thng co th phat hin li nhp t actor.
1 s tai nguyn khng hoat ng tt lam cho use-case
khng hoan tt cng vic ung cua no.
Chi tit hoa Use-Case
Chng 5: Nm bt yu cu hng i tng
62
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 123
nn nh ngha trang thai bt u.
khi nao va cach nao use-case bt u.
th t cac hoat ng c thc hin.
khi nao va cach nao use-case kt thuc.
nn nh ngha trang thai kt thuc.
khng cho phep nhiu 'path' thc thi.
Co th miu ta lung thi hanh phu trong c ta lung c
ban.
c ta lung phu c rut trch t lung c ban.
Tng tac gia h thng va actor va chung trao i nhng
g.
Vic dung cac i tng, gia tr, tai nguyn trong h thng.
Phai miu ta ro rang h thng lam g va actor lam g.
c ta use-case gm nhng g ?
Chng 5: Nm bt yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 124
Khi s tng tac gia actor va use-case gm nhiu trang thai
phc tap ta nn dung ky thut m hnh trc quan din ta use-
case v no giup nha phn tch hiu ro hn v use-case :
lc trang thai UML co th c dung miu ta trang
thai cua use-case va s chuyn gia cac trang thai.
lc hoat ng co th c dung miu ta s chuyn
trang thai chi tit hn di dang cac hoat ng.
lc tng tac co th c dung miu ta cac tng
tac gia i tng use-case va i tng actor.
Khng nn lam dung cac lc v y la ngn ng cua nha phat
trin, cac khach hang va ngi dung kho long hiu ni.
Hnh thc hoa use-case (Formalizing)
Chng 5: Nm bt yu cu hng i tng
63
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 125
M hnh use-case c cu truc lai :
rut trch cac use-case tng quat va dung chung bi cac use-
case c bit hn.
rut trch cac use-case nhim y va phu thm ni rng use-
case khac.
Trc khi hoat ng nay xay ra :
nha phn tch a nhn din tng i y u cac actor va
use-case, miu ta chung trong cac lc cu thanh m
hnh use-case tng th.
ngi c ta use-case a phat trin c ta chi tit cho mi
use-case.
Cu truc lai m hnh Use-Case
Chng 5: Nm bt yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 126
Cac cng vic cu th :
Nhn dang cac use-case tng quat c dung chung.
Nhn dang cac use-case co quan h "extend".
Nhn dang cac use-case co quan h "include".
Mt s iu lu y :
Cu truc cac use-case va mi quan h gia chung nn phan
anh cac chc nng thc t.
Mi use-case cn c x ly nh 1 artifact ring bit, do o
khng nn chon use-case qua ln hay qua nho.
Tranh chia nho use-case.
Cu truc lai m hnh Use-Case
Chng 5: Nm bt yu cu hng i tng
64
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 127
Trng ai Hoc Bach Khoa Tp. HCM
Khoa Cng ngh Thng tin
Chng 6
PHN TCH HNG I TNG
Cac artifacts cn tao ra
Cac workers tham gia
Qui trnh phn tch
Chng 6: Phn tch yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 128
Muc ch cua hoat ng phn tch yu cu la xy dng m hnh phn
tch vi cac c im sau :
dung ngn ng cua nha phat trin miu ta m hnh.
th hin goc nhn t bn trong cua h thng.
c cu truc t cac class phn tch va cac package phn tch.
c dung chu yu bi nha phat trin hiu cach thc tao hnh
dang h thng.
loai tr moi chi tit d tha, khng nht quan.
phat hoa cac hin thc cho cac chc nng bn trong h thng.
nh ngha cac dn xut use-case, mi dn xut use-case cp
phn tch miu ta s phn tch 1 use-case.
Muc ch cua phn tch yu cu
Chng 6: Phn tch yu cu hng i tng
65
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 129
M hnh phn tch = h thng phn tch :
cac class phn tch
boundary class
entity class.
control class
cac dn xut use-case cp phn tch :
cac lc class phn tch
cac lc tng tac (cng tac,...).
'flow of events' cp phn tch
cac yu cu c bit cua use-case
cac package phn tch
c ta kin truc (view of analysis model)
Cac artifacts cn tao ra trong phn tch yu cu
Chng 6: Phn tch yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 130
Analysis
Model
Analysis
System
Use-Case Reali zation -
Analysis
Analysis Class
Analysis Package
Cac artifacts cn tao ra trong phn tch yu cu
*
*
*
*
*
*
1
Chng 6: Phn tch yu cu hng i tng
66
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 131
Analysis
Model
Use-Case
Engineer
Component
Engineer
Architect
Architecture
Description
Use-Case
Realization -
Analysis
Analysis
class
Analysis
package
chu trach nhim v chu trach nhim v chu trach nhim v
Chng 6: Phn tch yu cu hng i tng
Cac workers trong phn tch yu cu
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 132
Architect
Use-Case
Engineer
Architectural
Analysis
Analyze a
Use-Case
Analyze a
Class
Analyze a
Package
Qui trnh phn tch yu cu
Component
Engineer
Chng 6: Phn tch yu cu hng i tng
67
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 133
Muc ch cua phn tch kin truc la phat hoa m hnh phn tch va kin
truc h thng bng cach nhn dang cac package phn tch, cac class
phn tch d thy va cac yu cu c bit chung cho h thng.
Cac package phn tch giup t chc h thng thanh nhng n v nho
d quan ly. Mi package cha 1 s use-case vi tnh cht sau :
cac use-case h tr cho cung 1 qui trnh nghip vu.
cac use-case h tr cho cung 1 actor.
cac use-case co quan h ln nhau : tng quat hoa, include va
extend.
Theo thi gian, khi vic phn tch tin trin, s tinh ch cu truc cac
package se tin trin theo.
Phn tch kin truc : nhn dang cac package phn tch
Chng 6: Phn tch yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 134
Co 3 loai (stereotype) class phn tch :
class bin (boundary class) m hnh s tng tac gia actor va h
thng
class thc th (entity class) m hnh thng tin cn cho h thng,
loai thng tin co tnh bn vng, tn tai lu dai.
class iu khin (control class) m hnh vic x ly, cng tac, giao
tac trong use-case.
3 loai class phn tch
Chng 6: Phn tch yu cu hng i tng
Boundary class Entity class Control class
68
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 135
T cac class lnh vc hay cac class nghip vu trong bc nm bt yu
cu, ngh 1 s class thc th quan trong nht (t 10-20).
Cac class phn tch con lai se c nhn dang trong hoat ng phn
tch use-case.
Cac yu cu c bit cung c nhn dang c x ly trong cac
bc sau, chung gm :
tnh bn vng.
s phn tan & ng thi.
cac tnh cht an toan d liu.
khang vi li.
quan ly giao tac.
Tnh cht cua mi yu cu c bit se c cn nhc sau trong tng
class va tng dn xut use-case.
Phn tch kin truc : nhn dang cac class thc th d thy
Chng 6: Phn tch yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 136
Phn tch use-case la :
nhn dang cac class phn tch co i tng cua chung tham
gia vao vic thc hin 'flow of events' cua use-case.
phn phi hanh vi cua use-case bng cach cho cac i
tng phn tch tng tac nhau.
nm bt 1 s yu cu c bit cho dn xut use-case.
Phn tch use-case
Chng 6: Phn tch yu cu hng i tng
69
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 137
Trong bc nay ta nhn dang cac class iu khin, bin, thc th cn
thit hin thc use-case va phat hoa tn, trach nhim, thuc tnh va
cac mi quan h gia chung. Dung cac hng dn sau :
nhn dang cac class thc th bng cach chu y cac thng tin trong
c ta use-case va trong m hnh lnh vc.
nhn dang class bin c s cho mi class thc th va tm c.
nhn dang class bin trung tm cho mi actor la con ngi.
nhn dang class bin trung tm cho mi actor la h thng ngoai
hay thit b I/O.
nhn dang class iu khin co trach nhim x ly trong dn xut
use-case.
Tp hp cac class phn tch tham gia vao dn xut use-case thanh 1
(hay nhiu) lc class.
Phn tch use-case : nhn dang cac class phn tch
Chng 6: Phn tch yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 138
Payment Request UI
Order Configmation
Order Handler
Payment Request
Payment Scheduler
Invoice
Buyer
(f rom Use-Case Model)
Th du v lc class phn tch cho use-case Pay Invoice
Chng 6: Phn tch yu cu hng i tng
70
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 139
Cn chu y cac im sau trong lc cng tac :
p. t actor gi 1 thng bao n class bin kch hoat use-case.
mi class phn tch nn co t nht 1 i tng tham gia vao lc
cng tac.
cha vi kt hp tac vu cu th cho thng bao.
cac mi ni trong lc cng tac thng la 'instance' cua mi
quan h kt hp gia cac class tng ng.
cha tp trung vao th t thi gian cac thng bao.
Lc cng tac nn x ly tt ca mi quan h cua use-case
c hin thc.
cn b sung c ta dang vn ban vao lc cng tac, c ta
nay nn c vao 'flow of events cp phn tch".
Phn tch use-case : miu ta s tng tac gia cac i tng phn tch
Chng 6: Phn tch yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 140
Cn chu y cac im sau trong lc cng tac :
cac thng ip c anh s theo kiu phn cp.
3.4.2 xay ra sau 3.4.1 va ca 2 c lng trong 3.4
3.4.3a va 3.4.3b xay ra ng thi va c lng trong 3.4
cu phap tng quat cua 1 thng ip :
precedessor guard-condition sequence-expression return-value :=
message-name argument-list
V du :
2/ 1.3.1: p := find(specs)
1.1, 4.2/ 3.2 *[i:=1..6]: invert(x, color)
Lc cng tac
Chng 6: Phn tch yu cu hng i tng
71
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 141
Lc cng tac
Cac thanh phn cua lc cng tac :
Chng 6: Phn tch yu cu hng i tng
: Buyer
: Payment Scheduler
: Payment Request UI
: Invoice
: Order Confirmation
: Order Handler
: Payment Request
1: Browse Invoice
4: Get
5: Get
6: Schedule InVoice for payment
8: New
2: Browse
9: setStatus(scheduled)
7: Schedule payment
3: Check Invoice
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 142
Muc ch cua vic phn tch class la :
nhn dang va duy tr cac ngha vu, trach nhim cua class phn
tch da vao vai tro cua no trong dn xut use-case.
nhn dang va duy tr cac thuc tnh va cac mi quan h cua class
phn tch.
nm bt cac yu cu c bit lin quan n vic hin thc class
phn tch.
Phn tch class
Chng 6: Phn tch yu cu hng i tng
72
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 143
t hp cac vai tro ma class ong trong cac dn xut use-case
khac nhau se cho ta 1 s ngha vu cua class.
nghin cu cac lc class va lc tng tac trong cac dn
xut use-case co class tham gia.
i khi cn nghin cu 'flow of events cp phn tch' cua dn xut
use-case tm thm cac ngha vu cac class.
Phn tch class : nhn dang cac ngha vu
Chng 6: Phn tch yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 144
Mi ngha vu thng cn 1 s thuc tnh. Dung cac hng dn sau :
tn thuc tnh nn la danh t.
kiu thuc tnh cp phn tch nn cp y nim, cha cn kiu
cu th, nn dung lai kiu a co khi c ta kiu cho thuc tnh mi.
nu class phn tch qua phc tap, nn tach 1 s thuc tnh phc
tap ra thanh class ring.
thuc tnh cua class thc th thng d thy.
thuc tnh cua class bin giao tip vi ngi thng miu ta thng
tin c x ly bi user nh cac field text,...
thuc tnh cua class bin giao tip vi h thng ngoai thng
miu ta cac tnh cht cua giao tip.
thuc tnh cua class iu khin t khi co.
i khi khng cn cac thuc tnh hnh thc.
Phn tch class : nhn dang cac thuc tnh
Chng 6: Phn tch yu cu hng i tng
73
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 145
Cac i tng tng tac nhau thng qua cac lc cng tac. Cac mi
lin kt nay thng la 'instance' cua mi quan h kt hp gia cac
class. Cac mi lin kt nay cung co th am ch nhu cu v s gp
nhiu i tng. Mi quan h gp nn c dung khi cac i tng
miu ta :
cac khai nim cha vt ly khai nim khac (xe cha tai x va
khach)
cac khai nim c xy dng t cac khai nim khac (xe gm cac
banh xe va ng c).
cac khai nim tao thanh tp hp y nim nhiu i tng (gia nh
gm cha, me va con).
rut trch cac hanh vi chung cua nhiu class phn tch, ta co th dung
class tng quat hoa, nhng ch nn cp y nim.
Phn tch class : nhn dang mi quan h gia cac class
Chng 6: Phn tch yu cu hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 146
Muc ch cua phn tch package la :
am bao tng package phn tch c lp vi cac package khac
nhiu nh co th co.
am bao package phn tch hoan thanh muc ch cua no la hin
thc 1 s class lnh vc hoc 1 s use-case.
miu ta cac phu thuc sao cho co th c lng anh hng cua
cac thay i trong tng lai.
Dung cac hng dn sau :
am bao package cha cac class ung, c gng cho tnh kt dnh
cao bng cach gp cac class co mi quan h chc nng.
han ch ti a s phu thuc gia cac package, phn phi lai cac
class qua phu thuc vao package khac.
Phn tch package
Chng 6: Phn tch yu cu hng i tng
74
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 147
Trng ai Hoc Bach Khoa Tp. HCM
Khoa Cng ngh Thng tin
Chng 7
THIT K HNG I TNG
Cac artifacts cn tao ra
Cac workers tham gia
Qui trnh thit k
Chng 7: Thit k hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 148
Muc ch cua cng vic thit k la :
at ti s hiu bit su sc cac vn v cac rang buc va cac
yu cu khng chc nng co lin quan n ngn ng lp trnh, s
dung lai linh kin, HH, cng ngh phn tan, ng thi, database,
giao din, quan ly giao tac.
tao ra u vao cho hoat ng hin thc bng cach nm bt cac
h thng con, cac interface va cac class.
chia cng vic hin thc ra nhiu phn d quan ly va x ly bi
cac i khac nhau (co th ng thi).
nm bt cac interface chnh gia cac h thng con.
co th hin th trc quan va xem xet bang thit k dung cac ky
hiu chung.
tao ra mc tru tng cua s hin thc h thng.
Muc ch cua thit k
Chng 7: Thit k hng i tng
75
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 149
Chng 7: Thit k hng i tng
M hnh thit k = h thng thit k :
cac h thng con
cac class thit k.
cac interface cua h thng con va class.
cac dn xut use-case cp thit k :
cac lc class
cac lc tng tac (trnh t, trang thai,...).
'flow of events' cp thit k.
cac yu cu cp hin thc.
c ta kin truc (view of design model)
M hnh b tr :
c ta kin truc (view of deployment model)
Cac artifacts cn tao ra trong thit k
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 150
Desgin Class
Design
Model
Desgin
System
Use-Case Realization -
Design
Interface
Design
Subsystem
*
*
* * *
*
*
*
1
Chng 7: Thit k hng i tng
Cac artifacts cn tao ra trong thit k
76
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 151
Class thit k la s tru tng trc tip cua class hin thc :
dung ngn ng lp trnh miu ta class thit k.
thng xac nh tm vc cua cac thanh phn.
cac mi quan h co y ngha trc tip ti hin thc : tng quat hoa
tha k, quan h gp, kt hp thanh thuc tnh tng ng.
method trong thit k method trong hin thc.
co th delay vic x ly 1 s yu cu ti luc hin thc.
class thit k thng co stereotype tng ng vi ngn ng lp
trnh : <<form>>, <<class module>>, <<user control>>...
class thit k hin thc (hay cung cp) 1 interface.
co th co 1 s class active, nhng nn tn tai trong m hnh
process thay v trong m hnh thit k.
c im cua class thit k
Chng 7: Thit k hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 152
Use-Case
Engineer
Component
Engineer
chu trach nhim v chu trach nhim v chu trach nhim v
Desgin
Model
Deployment
Model
Architecture
Description
Use-Case
Realization -
Desgin
Design
class
Design
Subsystem
Interface
Chng 7: Thit k hng i tng
Cac wokers trong hoat ng thit k
Architect
77
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 153
Architect
Use-Case
Engineer
Architectural
Design
Design a
Use-Case
Design a
Class
Design a
Subsystem
Chng 7: Thit k hng i tng
Qui trnh thit k
Component
Engineer
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 154
Muc ch cua thit k kin truc la phat hoa m hnh thit
k va m hnh b tr cung kin truc cua chung bng
cach nhn dang cac vn sau :
Cac nut tnh toan va cac cu hnh mang cua chung.
Cac h thng con va interface cua chung.
Cac class thit k co y ngha kin truc nh cac class
chu ng.
Cac c ch thit k tng quat x ly cac yu cu chung
nh tnh bn vng, hiu qua,... (c nm bt trong cac
class phn tch va cac dn xut use-case cp phn
tch.
Chng 7: Thit k hng i tng
Thit k kin truc : muc ch
78
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 155
Chng 7: Thit k hng i tng
Cu hnh mang vt ly se anh hng n kin truc phn mm, gm cac
kha canh :
cac nut nao lin quan, kha nng v b nh va cng sut tnh cua
nut.
kiu ni kt va kiu giao thc nao gia cac nut.
cac tnh cht v s ni kt va giao thc nh bng thng, sn
sang, cht lng...
cn kha nng tnh d tha, ch khang li, di c process,
sao lu d liu,...
Thit k kin truc : nhn dang nut va cu hnh mang
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 156
Chng 7: Thit k hng i tng
Chia cng vic thit k t u hay khi m hnh thit k phat trin thanh
phc tap cn c chia nho. Mt s h thng con c dung lai t cac
project khac :
nhn dang cac h thng con cp ng dung
nhn dang cac h thng con cp gia va cp h thng
nh ngha s phu thuc gia cac h thng con.
nhn dang giao tip cua cac h thng con.
Thit k kin truc : nhn dang h thng con va interface cua chung
79
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 157
Chng 7: Thit k hng i tng
Cn nhn dang cac class thit k quan trong v mt kin truc lam
tin cho hoat ng thit k, cac class khac se c nhn dang trong
vic thit k use-case.
nhn dang cac class thit k t cac class phn tch tng ng
nhn dang cac class chu ng khi chu y yu cu ng thi trn h
thng :
cac yu cu v hiu qua, sn sang, throughput cua h
thng
s phn tan cua h thng trn cac nut.
cac yu cu khac nh khi ng, kt thuc, tranh deadlock,
tranh bao hoa, cu hnh lai cac nut, kha nng ni kt.
Thit k kin truc : nhn dang cac class thit k quan trong v kin truc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 158
Chng 7: Thit k hng i tng
T cac yu cu chung va c bit a c nhn dang trong phn phn
tch (trong cac class phn tch va cac dn xut use-case cp phn tch),
quyt nh cach x ly chung da trn cng ngh hin thc va thit k
sn co. Kt qua la 1 tp cac c ch thit k tng quat. Cac yu cu cn
x ly thng lin quan n :
tnh bn vng.
s phn tan & ng thi.
cac tnh cht an toan d liu.
khang vi li.
quan ly giao tac.
Thit k kin truc : nhn dang cac c ch thit k tng quat
80
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 159
Muc ch cua thit k use-case la :
Nhn dang cac class thit k va cac h thng con co
object cn cho vic thc hin 'flow of events-design'
cua use-case.
phn tan hanh vi cua use-case bng cach cho cac
object thit k va h thng con tng tac nhau.
nh ngha yu cu trn cac tac vu cua class thit k,
h thng con va interface cua chung.
nm bt cac yu cu cp hin thc cho use-case.
Thit k Use-Case
Chng 7: Thit k hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 160
Nhn dang cac class thit k nh sau :
nghin cu cac class phn tch tham gia trong dn xut use-
case cp phn tch tng ng, nhn dang cac class thit k
ni vi cac class phn tch nay.
nghin cu cac yu cu c bit trong dn xut use-case
cp phn tch tng ng, nhn dang cac class thit k hin
thc cac yu cu c bit nay.
gan ngha vu cho cac class thit k tm c.
nu con thiu 1 vai class cn cho vic thit k use-case c
bit, ky s use-case nn lin h vi kin truc s va ky s linh
kin ban bac.
xy dng lc class cha cac class thit k tm c.
Thit k Use-Case : nhn dang cac class thit k
Chng 7: Thit k hng i tng
81
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 161
Dung lc trnh t :
lc trnh t cha cac phn t actor, i tng thit k va
cac t.bao gia chung.
nu use-case co nhiu lung iu khin khac nhau, nn tao
lc trnh t cho tng lung.
nn chuyn lc cng tac cp phn tch thanh lc
trnh t ban u, t o phat trin thm chi tit.
dung 'flow of events', duyt qua cac bc trong no quyt
nh cac tng tac nao cn thit gia cac i tng thit k
va phn t actor.
Thit k Use-Case : miu ta cac tng tac gia cac object thit k
Chng 7: Thit k hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 162
Thit k Use-Case : miu ta cac tng tac gia cac object thit k
Chng 7: Thit k hng i tng
Nn chu y cac ghi nhn sau trong vic xy dng lc trnh t :
nn tp trung vao trnh t trong lc .
actor gi thng bao n 1 i tng thit k yu cu thc
hin use-case.
mi class thit k nn co t nht 1 i tng tham gia vao
lc trnh t.
cac message c gi gia cac ng i sng i tng,
co th co tn tam va se tr thanh tn tac vu tng ng.
dung label va flow of events cp thit k b sung lc
trnh t.
lc trnh t nn x ly tt ca mi quan h cua use-case
cn hin thc.
82
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 163
: People
: LoginForm
: Database
1: login(uname,pswd)
1.2 [succ = true]: welcome
1.1: succ := Verify(uname,pswd)
Lc cng tac
Cac thanh phn cua lc cng tac : (th du lc cng
tac cho use-case Login cua h thng ng ky mn hoc h tn
ch thng qua Web.
Chng 7: Thit k hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 164
: Database
: People
: LoginForm
1: submit(uname, psswd)
1.1: verify(uname, psswd)
1.2: welcome
Lc trnh t
Cac thanh phn cua lc trnh t : (th du lc trnh t
cho use-case Login cua h thng ng ky mn hoc h tn ch
thng qua Web.
Chng 7: Thit k hng i tng
83
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 165
Composed
entry/ assign ID
exit/ fill date
on char/ handle character
compose command
Stored
entry/ save into folder
Read
entry/ convert to rich text
unhightlight
focus
hightlight
read command / recover( id )
logout
save command
re-fwd cmd / quote / append subject
Sending
do/ send( repc )
send command[ recipents != null ] / parse
sending done
Lc trang thai
Cac thanh phn cua lc trang thai : (th du lc trang
thai cho use-case Send/Read e-mail).
Chng 7: Thit k hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 166
Show input for username
and password
Reject
[ psswd invalid ]
Welcome
[ psswd valid ]
Verify
Database LoginForm
Lc hoat ng
Cac thanh phn cua
lc hoat ng :
(th du lc hoat
ng cho use-case
Login cua h thng
ng ky mn hoc h
tn ch thng qua
Web.
Chng 7: Thit k hng i tng
84
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 167
Muc ch cua vic thit k class la tao ra class thit k hoan
thanh vai tro cua no trong dn xut use-case va cac yu cu phu.
Bao gm vic duy tr class thit k va cac kha canh sau cua no :
cac tac vu cua class.
cac thuc tnh cua class.
cac mi quan h ma class tham gia.
cac method cua class (hin thc tac vu tng ng).
cac trang thai cua i tng.
cac phu thuc ti bt ky c ch thit k tng quat nao.
cac yu cu co lin quan n hin thc cua class.
s hin thc ung cua bt ky interface ma class phai cung
cp.
Thit k class
Chng 7: Thit k hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 168
Bc u ta phat hoa cac class thit k t cac interface va class phn
tch : 1 interface co 1 class thit k, con class phn tch th :
thit k class bin phu thuc vao cng ngh tao interface : form,
activeX control... y dung cac prototype giao din vi user trong
bc trc.
thit k class thc th thng phu thuc vao cng ngh database.
Vic anh xa t m hnh hng i tng sang m hnh d liu
quan h co th cn worker, m hnh va cng vic ring.
cn tp trung thit k class iu khin, chu y cac nhu cu sau :
vn phn tan : cn nhiu class thit k trn cac nut khac nhau
hin thc 1 class iu khin.
vn hiu qua : nn dung 1 class thit k cho 1 class iu khin
vn giao tac: class thit k cn tch hp cng ngh quan ly
giao tac.
Thit k class : Phat hoa class thit k
Chng 7: Thit k hng i tng
85
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 169
Nhn dang cac tac vu ma class thit k cn cung cp va tm vc
cua chung (dung cu phap ngn ng lp trnh). Cac u vao cua
bc nay la :
cac trach nhim cua bt ky class phn tch ma dn ti class
thit k.1 trach nhim tng ng 1 hay nhiu tac vu, nhng
y mi phat hoa thng s hnh thc cac tham s.
cac yu cu c bit cua bt ky class phn tch ma dn ti
class thit k.
cac interface ma class thit k phai cung cp.
dn xut use-case cp thit k ma class tham gia.
Thit k class : Nhn dang cac tac vu
Chng 7: Thit k hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 170
Tac vu thng oi hoi thuc tnh, cn da vao cac hng dn sau
:
chu y thuc tnh cua bt ky class phn tch ma dn ti class
thit k.1 thuc tnh nay am ch 1 hay nhiu thuc tnh cua
class thit k.
han ch dung kiu cua ngn ng lp trnh cho thuc tnh.
c gng dung kiu a co.
nu class thit k qua phc tap, 1 vai thuc tnh cua no co
th tach ra thanh cac class ring.
nu co qua nhiu thuc tnh hay thuc tnh qua phc tap,
nn dung lc class ring miu ta thuc tnh.
Thit k class : Nhn dang cac thuc tnh
Chng 7: Thit k hng i tng
86
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 171
Cn theo cac hng dn sau :
chu y cac mi quan h kt hp & gp cua bt ky class phn
tch ma dn ti class thit k.
tinh ch s phn t tham gia, tn vai tro, tnh cht cua vai
tro, class kt hp, kt hp n-ary.
tinh ch hng cua mi quan h kt hp t lc tng
tac.
Nhn dang mi quan h tng quat hoa dung cu phap ngn ng
lp trnh, nu ngn ng lp trnh khng h tr, dung mi quan h
kt hp, gp thay th.
Thit k class : Nhn dang cac mi quan h kt hp & gp
Chng 7: Thit k hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 172
Method c ta cach tac vu c hin thc. Miu ta cac method
dung ngn ng t nhin hay ngn ng pseudocode. Nu cung ky
s linh kin thc hin 2 khu thit k va hin thc, ng ta thng
t khi c ta method trong giai oan thit k.
Mt vai i tng thit k c iu khin bi trang thai : trang
thai xac nh hanh vi cua no khi nhn 1 thng bao t ngoai
miu ta trang thai dung lc trang thai.
X ly cac yu cu c bit cha c chu y cac bc trc.
Thit k class : Nhn dang cac mi quan h kt hp & gp
Chng 7: Thit k hng i tng
87
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 173
Muc ch cua vic thit k h thng con la :
am bao h thng con la c lp vi nhau nhiu nh co th
co.
am bao h thng con la c lp vi interface cua no nhiu
nh co th co.
am bao h thng con cung cp c interfcae ung.
am bao h thng con hoan thanh muc ch, tao hin thc
ung cho cac tac vu.
Thit k h thng con (Subsystem)
Chng 7: Thit k hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 174
Gm cac cng vic sau :
duy tr s phu thuc gia cac h thng con (nn thng qua
interface), ti thiu hoa s phu thuc bng cach b tr lai
cac class qua phu thuc vao h thng con khac.
duy tr interface cua cac h thng con.
duy tr ni dung cua cac h thng con.
Thit k h thng con (Subsystem)
Chng 7: Thit k hng i tng
88
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 175
Trng ai Hoc Bach Khoa Tp. HCM
Khoa Cng ngh Thng tin
Chng 8
HIN THC HNG I TNG
Cac artifacts cn tao ra
Cac workers tham gia
Qui trnh hin thc
Chng 8: Hin thc hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 176
Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng
Muc ch cua hin thc la :
k hoach cac bc tch hp h thng cn thit cho mi bc
lp theo c ch tng dn (h thng c hin thc nh
chui cac bc nho va d quan ly).
phn tan h thng bng cach anh xa cac thanh phn kha thi
trn cac nut trong m hnh b tr (da chu yu vao cac class
chu ng).
hin thc cac class va h thng con thit k.
kim tra n v trn cac thanh phn, tch hp chung vao 1
hay nhiu file kha thi trc khi gi i kim tra tch hp va
kim tra h thng.
Muc ch cua giai oan hin thc
89
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 177
M hnh hin thc = h thng hin thc :
cac h thng con hin thc
cac component (executable, file, library, table, document,...)
cac interface cua h thng con va component.
k hoach tch hp cac "build"
c ta kin truc (view of Implementation model)
Cac artifacts cn tao ra trong hin thc
Chng 8: Hin thc hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 178
Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng
Stub la 1 thanh phn ma phn hin thc ch mc "template"
phat trin hoc kim tra thanh phn khac phu thuc va stub.
Stub co th ti thiu s thanh phn mi cn hin thc cho mi
version cua h thng. co phn hin thc, nh o lam n gian
vic tch hp va kim tra tch hp.
H thng con do c ch packaging trong mi trng hin thc tao
ra :
package trong java.
project trong VB.
th muc cac file trong C++,...
Stub, h thng con
90
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 179
Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng
Phn mm c hin thc theo tng bc nho d quan ly, mi
bc ta xy dng 1 build. Build la 1 version kha thi cua h thng.
Li ch cua cach tip cn nay la :
version kha thi co th tao ra kha sm thay v phai ch i
lu, vic kim tra tch hp nh o c bt u sm co
th demo cho cac thanh vin ni b hay cac ngi lin
quan.
d dang phat hin im yu va li v mi ln ch co 1 phn
mi rt nho c thm vao.
kim tra tch hp thng nhanh hn la kim tra toan b h
thng.
Build
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 180
Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng
K hoach xy dng build tch hp miu ta trnh t cac build cn
thit cho mi bc lp, ng vi mi build no miu ta :
chc nng ky vong c hin thc trong build, y la danh
sach cac use-case va/hoc cac kch ban cua chung. Danh
sach nay cung ch ra cac yu cu phu kem theo.
Cac phn nao cua m hnh hin thc b tac ng trong build,
y la danh sach cac h thng con va cac thanh phn c
oi hoi hin thc chc nng ky vong cua build.
K hoach xy dng build tch hp
91
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 181
Implementation
Model
Interface
Implementation
System
Implementation
Subsystem
Component
Cac artifacts cn tao ra trong thit k
1 *
*
*
*
* *
Chng 8: Hin thc hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 182
System
Integrator
Component
Engineer
chu trach nhim v chu trach nhim v chu trach nhim v
Imple.
Model
Deployment
Model
Architecture
Description
Integration
Build Plan
Component Imple.
Subsystem
Interface
Cac workers trong hoat ng hin thc
Architect
Chng 8: Hin thc hng i tng
92
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 183
Chng 8: Hin thc hng i tng
Architect
System
Integrator
Architectural
Implementation
Integrate
System
Implement
a Subsystem
Perform
Unit Test
Qui trnh hin thc
Component
Engineer
Implement
a Class
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 184
Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng
Muc ch cua hin thc kin truc la phat hoa m hnh hin thc
va kin truc cua no bng cach :
nhn dang cac thanh phn co y ngha kin truc nh cac
thanh phn kha thi (exe).
anh xa cac thanh phn ti cac nut trong cu hnh mang lin
quan : 1 class chu ng c hin thc trong 1 thanh phn
kha thi va tr thanh 1 process chay 1 nut cu th.
Hin thc kin truc
93
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 185
Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng
Muc ch cua tch hp h thng la :
tao 1 k hoach tch hp cac build miu ta build nao trong
tng bc lp va cac yu cu trong mi build.
tch hp mi build trc khi kim tra tch hp.
Mt vai tiu chun cho 1 build k tip la :
build nn thm 1 s chc nng vao build trc bng cach
hin thc hoan chnh use-case.
build khng nn bao gm qua nhiu thanh phn mi hay
c tinh ch.
build nn da trn build trc theo c ch ni rng t di
ln.
Tch hp h thng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 186
Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng
ng vi mi use-case cn hin thc, lam cac vic sau :
chu y dn xut use-case cp thit k (dn ngc v use-
case).
nhn dang cac h thng con va class thit k trong dn
xut use-case cp thit k.
nhn dang cac h thng con hin thc va cac thanh phn
dn ngc v h thng con va class thit k.
chu y anh hng cua vic hin thc cac yu cu ln cac h
thng con va cac thanh phn nay, anh gia anh hng
quyt nh nn hin thc use-case trong build nay hay delay
cho build sau.
Tch hp h thng (tt)
94
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 187
Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng
Nu build c k hoach cn thn th vic tch hp no rt n
gian :
chon version ung cua cac h thng hin thc va cac thanh
phn ri dch, lin kt chung tao ra build.
chu y mi phu thuc dang bottom-up khi dch cac thanh
phn va h thng con.
build va c tao ra se c kim tra tch hp va h thng
nu no pass c kim tra tch hp va la build cui cua 1
bc lp.
Tch hp 1 build
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 188
Chng 8: Hin thc hng i tng Chng 8: Hin thc hng i tng
Muc ch cua hin thc h thng con la am bao no hoan thanh
vai tro cua no trong mi build :
mi class trong h thng con thit k cn cho build hin tai
nn c hin thc bi thanh phn trong h thng con hin
thc tng ng (va qui).
mi interface cua h thng con thit k cn cho build hin
tai cung nn c cung cp bi h thng con hin thc
tng ng (va qui)..
Hin thc h thng con
95
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 189
Chng 8: Hin thc hng i tng
Muc ch cua hin thc class la hin thc tng class thit k
thanh file thanh phn tng ng, gm cac cng vic sau :
Phat hoa 1 file thanh phn cha source code cua class. 1
file co th cha nhiu class, nhng theo qui nh cua ngn
ng lp trnh va nguyn ly phn chia module, co th 1 file
ch cha 1 class (VC++, java).
tao source code t class thit k va cac mi quan h ma
class tham gia.
hin thc cac tac vu cua class thit k di dang cac
method.
am bao thanh phn cung cp cung interface nh class thit
k.
Hin thc class
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 190
Chng 8: Hin thc hng i tng
Kha nng tai s dung phu thuc vao cac yu t sau :
Gi cho mi method co c kt cao : nn thc hin 1 chc
nng ro rang.
gi cho mi method u nho : nu chim nhiu trang th tach
ra nhiu method.
gi cho cac method thng nht : nn dung cung danh sach
tham s cho cac method co y ngha s dung ging nhau.
tach bit method chin lc va phng thc thc thi.
m rng method cang nhiu cang tt : khai quat hoa kiu
tham s, s tham s,...
tranh dung d liu toan cuc.
Kha nng tai s dung
96
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 191
Chng 8: Hin thc hng i tng
Kha nng m rng phu thuc vao cac yu t sau :
bao ong lp con : ngay ca lp bao ngoai cung khng thy
bn trong.
che du cu truc d liu : khng xut ra bn ngoai.
tranh a lin kt gi nhiu i tng : tham khao cho phep
thc hin chc nng trn i tng tng ng, tranh dung
no tip tuc truy xut gian tip n cac i tng khac.
tranh dung lnh switch trn kiu i tng : ban thn i
tng t hiu mnh la ai.
phn bit tac vu public va private.
Kha nng m rng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 192
Chng 8: Hin thc hng i tng
La xy dng 1 phn mm phc tap cn nhiu nhom tham gia
ng thi, giao tip gia cac thanh vin la rt quan trong :
Khng bt u lp trnh nu cha hiu ro.
gi cho cac method d hiu : kt nh cao va nho.
tao cho method d oc : tn bin va kiu co y ngha ro rang.
s dung cung tn cho cac giai oan khac nhau : phn tch,
thit k, hin thc...
la chon tn ky lng : th hin ung vai tro, ngha vu.
s dung cac hng dn va qui tc lp trnh : style...
lp tai liu cho cac class va cac method : muc ch, chc
nng...
xut ban c ta hng dn cach s dung class.
Lp trnh ng dung ln
97
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 193
Muc ch la kim tra chc nng cua tng n v c hin thc 1
cach ring le. Co 2 loai kim tra tng n v :
kim tra c ta (black-box testing) : kim tra hanh vi cua n
v nh c thy t ngoai.
kim tra cu truc (white-box testing) : kim tra s hin thc
bn trong n v.
Cung con 1 s loai kim tra n v khac nh : kim tra tnh hiu
qua, kim tra vic dung b nh, kim tra tai, kim tra kha nng.
Vic kim tra tch hp va kim tra h thng se c thc hin
trong giai oan kim tra.
Thc hin kim tra n v (Unit test)
Chng 8: Hin thc hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 194
Muc ch kim tra c ta (black-box testing) la kim tra hanh vi
cua n v nh c thy t ngoai :
kim tra xem component cho kt qua g ng vi tng d liu
nhp va trang thai nao o.
S lng t hp b ba {gia tr d liu nhp, trang thai bt
u, gia tr kt qua} thng rt ln nn vic kim tra tt ca
t hp nay la khng kha thi.
ta xac nh cac lp tng ng cua "test case" va ch kim
tra trn cac lp tng ng nay. Lp tng ng la tt ca
cac "test case" lam n v cho hu nh cung hiu ng.
Kim tra c ta
Chng 8: Hin thc hng i tng
98
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 195
Muc ch cua kim tra cu truc (white-box testing) la kim tra s
hin thc bn trong n v :
am bao moi hang lnh u c kim tra (t nht la chay 1
ln).
kim tra moi path cn quan tm : cac path chay thng
nht, cac path d gy sai, cac path t c bit v giai thut
nht, cac path co rui ro cao.
Kim tra cu truc
Chng 8: Hin thc hng i tng
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 196
Trng ai Hoc Bach Khoa Tp. HCM
Khoa Cng ngh Thng tin
Chng 9
KIM TH
Cac artifacts cn tao ra
Cac workers tham gia
Qui trnh kim th
Chng 9: Kim th
99
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 197
M hnh kim th = h thng kim th :
Test case : 1 trng hp kin th { input, status, output}
Test procedure : cach thc thc hin test case
Test component : t ng hoa 1 hay nhiu thu tuc kin th
Plan Test : chin lc, tai nguyn, lch
Defect : li
Evaluate Test : phu cac testcase, cac code, trang thai li
Cac artifacts cn tao ra trong kim th
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 198
Test Model Test System
1
*
*
*
Test
Component
Test
Procedure
Test Case
Cac artifacts trong kim th
Chng 9 : Kim th
100
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 199
Test Model Test case Test
Procedure
Test
Evaluation
Test
Component
Test
Engineer
Component
Engineer
Integration
Tester
System
Tester
Test Plan
Test
defect
chu trach nhim v
chu trach nhim v
chu trach nhim v
Cac workers trong kim th
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 200
Integration tester
System
Tester
Plan test
Qui trnh kim th
Component
Engineer
Test Engineer
Evaluate test
Perform Integration
Test
Perform
System Test
Implement
Test
Design test
Chng 9 : Kim th
101
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 201
Muc ch la k hoach hoa cac n lc kim th cho 1 bc lp
bng cach :
miu ta chin lc kim th : thc hin kiu kim th nao,
thc hin nh th nao, khi nao th va anh gia kt qua kim
th nh th nao.
c lng cac yu cu cua n lc kim th, nh cac tai
nguyn v h thng hay tai nguyn v ngi.
lp lch cho n lc kim th.
Ky s kim th dung chu yu m hnh use-case va cac yu cu
phu, cung co th dung thm m hnh thit k.
K hoach vic kim th
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 202
Muc ch la :
nhn dang va c ta cac test case cho mi build.
nhn dang va cu truc cac thu tuc kim th xac nh
cach thc hin cac test case.
Cu th :
thit k cac test case tch hp.
thit k cac test case h thng.
thit k cac test case "regression".
nhn dang va cu truc cac thu tuc kim th.
Thit k cac test case
Chng 9 : Kim th
102
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 203
Thit k cac test case tch hp :
test case tch hp kim tra cac thanh phn c hin
thc trong build tng tac vi nhau, thng da vao dn
xut use-case cp thit k, chu yu la cac lc tng
tac va trnh t.
giam nhe n lc thit k test case, ky s kim th c
gng tm ra cac test case co phn giao ti thiu, mi test
case tng ng vi 1 path hay 1 kch ban ring trong dn
xut use-case.
sau khi kim th, ky s kim th se so sanh cac tng tac
thc s gia cac i tng vi s tng tac trong thit k,
nu ging th Ok, nu khac th co li.
Thit k cac test case tch hp
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 204
Cac test case h thng c dung kim tra xem cac chc
nng h thng co hoat ng tt mc tng th ? Mi test case
kim th cac t hp use-case hoat ng di nhng iu kin
khac nhau nh cu hnh phn cng, mc tai, s actor, kch thc
database.
Khi phat trin cac test case h thng nn y u tin cua cac
t hp test case ma :
c oi hoi hoat ng song song.
co th c thc hin song song.
co anh hng vi nhau nu c thc hin song song.
lin quan ti nhiu process.
thng dung tai nguyn h thng theo 1 cach phc tap va
khng th tin oan.
Thit k cac test case h thng
Chng 9 : Kim th
103
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 205
da vao tng test case va ngh thu tuc kim th cho tng
test case.
c gng dung lai cac thu tuc kim th a co nhiu nh co
th (co th co thay i nho).
1 thu tuc kim th co th tac ng trn nhiu test case va 1
test case co th co nhiu thu tuc kim th.
Thit k cac thu tuc kim th
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 206
Muc ich la t ng hoa cac thu tuc kim th bng cach tao cac
thanh phn kim th (nu co th). Da vao cac thu tuc kim th
ta tao cac thanh phn kim th theo 2 cng ngh :
dung tool t ng kim th.
vit tng minh thanh phn kim th.
Cac thanh phn kim th thng nhn rt nhiu d liu nhp vao
tao ra nhiu d liu xut, do o cn thit phai hin th trc quan
c cac d liu nay d theo doi (dung bang tnh hay
database).
Thc hin kim th
Chng 9 : Kim th
104
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 207
Thc hin cac test case cua mi build va ghi nhn kt qua. Qui
trnh thc hin :
thc hin bng tay tun t cac test case hay bng cac thanh
phn kim li t ng.
So sanh kt qua co c vi kt qua ky vong.
thng bao cac li ti ky s linh kin lin quan.
thng bao cac li ti ky s thit k test case anh gia kt
qua kim th tng th.
Thc hin kim th tch hp
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 208
muc ch kim th h thng la thc hin cac test case c
oi hoi cho mi bc lp va nm bt cac kt qua kim th.
kim th h thng co th bt u khi kim th tch hp cho
thy h thng a thoa man cac muc tiu cht kng tch
hp ( khoang 95%).
qui trnh kim th h thng tng t nh kim th tch hp.
Cac cng vic kim tra h thng :
Kim tra tnh phuc hi sau li (Recovery testing)
Kim tra tnh bao mt (Security testing).
Kim tra trong mi trng cng thng (Stress Testing).
Kim tra trong hiu sut (Performance testing).
Thc hin kim th h thng
Chng 9 : Kim th
105
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 209
Ky s kim th quan tm 2 thc o chnh :
mc hoan thanh kim th.
tin cy : xu hng li phat hin so vi x hng test case
thanh cng.
Da trn xu hng li, ky s kim th co th ngh cac cng vic sau
:
thc hin thm kim li xac nh thm li.
ni long tiu chun kim li nu muc tiu cht lng qua cao so
vi bc lp hin hanh.
Tach cac b phn co ve at tin cy, con cac b phn cha at
phai c xem xet va kim th lai.
Cui cung lp tai liu v mc hoan thanh kim th, tin cy, cac
cng vic ngh (ta goi la c ta anh gia kim th).
anh gia vic kim th
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 210
Sau khi vit code cho ng dng xong, ta s th chy n xc nh
xem n gii quyt ng yu cu khng. Thng ng dng cha nhiu
li sai thuc 1 trong 3 loi sau :
1. cc li v t vng (tn cc phn t, t danh ring,..) v c php ca
cc phn t cu thnh ng dng. VC++ s pht hin cc li ny
trit v hin th thng bo li cho ta xem xt v sa cha.
Thng sau khi c VC++ thng bo v cc li ny, ta d dng
sa chng.
V d :
ItemRec item; // s bo sai nu kiu ItemRec cha c nh ngha
// error C2146: syntax error : missing ';' before identifier 'item'
int a
double b; // thiu du ; trc double
// error C2144: syntax error : missing ';' before type 'double
If (delta >= 0) // sai t vng v If phi vit thng
//error C2065: 'If' : undeclared identifier
Tng qut v hot ng debug ng dng
Chng 9 : Kim th
106
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 211
Tng qut v hot ng debug ng dng
2. cc li run-time (gii thut, trn b nh,...). VC++ khng th pht hin cc
li ny v chng thuc phm tr ng ngha. ng dng s chy theo gii
thut c miu t, ta phi t nh gi tnh ng/sai v gii thut, nhng
vic tm li gii thut thng rt kh. gip ngi lp trnh d dng
tm ra cc li gii thut, VC++ cung cp cng c cho php h kim sot
c qui trnh chy ng dng v truy xut cc bin d liu ca chng
trnh, cng c ny c gi l 'Debug'.
V d :
double a[50];
double b;

b = 3.1416;
a[50] = 9.0; // cng s lm b = 9.0 v vng nh ca bin b cng
// chnh l vng nh ca phn t a[50]
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 212
Tng qut v hot ng debug ng dng
3. cc li do truy xut ti nguyn ng thi vi cc ng dng khc (mn HH
s trnh by c th li ny v cch gii quyt). Th d 2 ng dng truy xut
ti khon A ng thi :
1. hin th giao din & ch
ngi dng ra lnh
2. Ngi dng ra lnh np
vo ti khon A s tin
700USD x l :
21a c ti khon A vo
b nh,
22a Tng gi tr ti
khon trong b nh
ln 700USD.
23a Ghi li gi tr mi.
3. Quay v bc 1
1. hin th giao din & ch
ngi dng ra lnh
2. Ngi dng ra lnh rt tin
t ti khon A 500USD
x l :
21b c ti khon A vo
b nh,
22b Gim gi tr ti
khon trong b nh
i 500USD.
23b Ghi li gi tr mi.
3. Quay v bc 1
Ti khon
A
Nu ti khon A l 1000USD v HH iu khin chy 2 process P1 v P2 theo
th t 21a22a21b22b23b23a th kt qu ti khon A s l 1700USD
(gi tr ng l 1200USD).
Chng 9 : Kim th
107
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 213
Trong qu trnh debug, ng dng s 1 trong 2 ch sau :
Pause : ch ca ng dng trc khi chy hay khi dng li theo 1 iu kin
dng no ca ngi debug. VC++ s ghi nh lnh sp thi hnh trc khi
dng (lnh u tin ca ng dng nu n cha bt u chy). Do tnh lch s,
ta dng thut ng PC - program counter ni v lnh ny. ch ny,
ngi debug c th xem trng thi ca ng dng : gi tr ca cc bin d liu
bit ng dng chy ng hay sai theo yu cu, lch s gi hm trong call
strack, thm/bt cc iu kin dng, iu khin vic thi hnh tip theo ca
ng dng, lc ny ng dng s chuyn sang ch Running.
Running : ch m ng dng ang chy cc lnh ca n n khi n gp 1
iu kin dng thit lp trc, lc ny ng dng s chuyn v ch
Pause.
Trong qu trnh debug, ng dng ch Pause ch yu thi gian v ngi
debug tng tc vi ng dng ch yu ch ny. Mi khi ng dng c chy
tip, n chuyn qua ch Running, nhng s nhanh chng chy n lnh dng
v chuyn v ch Pause (tr phi b 'blocked' ch I/O hay b 'loop' trong cc vng
lp v tn).
Tng qut v tin ch debug tch hp trong VC++
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 214
Ca s Variable
Ca s Watch
Ca s Debug
Ca s Registers
Ca s Memory
Ca s CallStack
108
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 215
xem ni dung ca 1 bin d liu, ngi debug c th :
di chut n tn bin trong ca s code, 1 ca s nh cha gi tr ca bin
s c hin th ngi debug xem xt.
Xem ni dung ca bin trong ca s Variable.
nhp biu thc (thng l bin d liu) vo vng Name ca ca s Watch
xem ni dung ca n.
hiu chnh gi tr ca 1 bin no (do b sai, nhng mun sa li cho ng
hu c th kim th cc lnh cn li), ngi debug c th di cursor v cell cha
gi tr hin hnh ca bin (trong ca s Variable hay trong ca s Watch ri
hiu chnh li gi tr mi).
Cc thao tc xem v hiu chnh bin d liu
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 216
hin th ca s cha danh sch cc hm ang thc hin d dang (cc hm
lng nhau theo th t), ngi debug c th :
chn menu View.Debug Windows.Call Stack.
n phi chut trn gy ca s bt k ri chn mc Call Stack.
xem v tr PC hin hnh (lnh sp thc hin k tip), ngi debug c th :
chn menu Debug.Show Next Statement (thng khi ng dng dng li, n
s hin th lnh chy k tip - lnh b dng vi mu t c bit v c du mi
tn l tri ca lnh).
Cc thao tc xem v tr thi hnh hin ti
Chng 9 : Kim th
109
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 217
xem/hiu chnh cc im dng (breakpoint), ta chn menu Edit.Breakpoints
hin th ca s Breakpoints, t thc hin chc nng mong mun :
Xem danh sch cc im dng hin hnh, c th xa ht chng bng cch
chn button Remove All, c th xa tng im dng bng cch chn n ri
n button Remove.
Mun thit lp im dng mi, chn tab Location, nhp v tr lnh cn dng
v iu kin dng mong mun (mc nh l lun lun dng v tr qui nh).
Mun thit lp im dng mi da trn 1 bin no b thay i gi tr, chn
tab Data, nhp biu thc cn tnh ton (bin cn quan tm).
Mun thit lp im dng mi da trn thng bo (message) ca Windows,
chn tab Message, chn hm x l, chn thng bo cn dng.
Ta c th (v nn) thit lp nhiu im dng ng thi 'ro chn' nhiu lung
thi hnh khc nhau ca chng trnh.
Cc lnh thit lp iu kin dng
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 218
chy tip ng dng t v tr PC hin hnh, ngi debug c th :
o chn menu Debug.Go bt u chy ng dng, ng dng ch dng li khi
gp iu kin dng no c thit lp.
o chn menu Debug.Go chy tip t v tr PC hin hnh, ng dng ch dng
li khi gp iu kin dng no c thit lp.
o chn menu Debug.Step Over chy tip 1 lnh ri dng li (Pause), nu
lnh thi hnh l lnh gi th tc th ton b th tc s c chy. y l lnh
cho php thc hin tng lnh theo mc v m.
o chn menu Debug.Step Into chy tip 1 lnh ri dng li (Pause), nu
lnh thi hnh l lnh gi th tc th ng dng s dng li lnh u tin ca
th tc. y l lnh cho php thc hin tng lnh theo mc vi m.
o chn menu Debug.Step Out chy tip cc lnh cn li ca th tc hin
hnh ri quay v v dng li sau lnh gi th tc ny (Pause).
o chn menu Debug.Run to Cursor chy tip ng dng t v tr PC hin hnh
n lnh cha cursor hin hnh ri dng li (Pause).
Cc lnh iu khin chy tip ng dng
Chng 9 : Kim th
110
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 219
Ngoi ra khi ng dng trng thi 'Pause', ngi debug c th thc hin
cc lnh sau :
chn menu Debug.Stop Debugging kt thc vic chy ng dng.
chn menu Debug.Restart kt thc vic chy ng dng ri bt u chy li
t u.
Khi ng dng trng thi Running', ngi debug c th thc hin cc lnh sau :
chn menu Debug.Break dng t ngt vic chy ng dng, lnh ang
thc hin s c nh du ta d theo di. Chc nng ny gip ta bit ng
dng ang b 'loop' on lnh no. Nu ng dng ang b 'block' ch bin
c I/O, s khng c lnh no c dnh du c.
Cc lnh iu khin khc
Chng 9 : Kim th
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 220
Trng i Hc Bch Khoa Tp. HCM
Khoa Cng ngh Thng tin
Chng 10
CC MU CU TRC
Mu Adapter
Mu Composite
Mu Proxy
Mu Decorator
Mu Flyweigth
Mu Facade
Chng 10 : Cc mu cu trc
111
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 221
Thit k phn mm l mt vn rt kh khn, nht l khi phn mm
ln, mi quan h gia cc phn t nhiu bn thit k thng khng
hiu qu hoc c li.
Cc li thit k thng phi tr gi cao do nh hng n nhiu giai
on sau (vit code, kim tra).
Phng php lp trnh hng i tng cung cp c ch c th xy
dng c phn mm d nng cp, thay i (VD: c tnh tha k, a
hnh). Tuy nhin vic xy dng nhng phn mm HT nh th ph
thuc nhiu vo kh nng ngi thit k.
Mc tiu ca thit k: khng ch thit k nhng phn mm ng m cn
c th hn ch hoc h tr ti thit k trong tng lai.
Gii thiu
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 222
C nhiu nguyn nhn dn n ti thit k :
Ph thuc vo phn cng, h iu hnh (OS) hay phn mm khc: cc
phn mm xc nh qu cht ch cc thng s phn cng hay phn mm
lin quan s phi thay i khi cc thng s ny thay i.
Ph thuc vo gii thut: khi h thng c nhiu gii php, nhiu mc x
l cho cng mt vn , vic rng buc cht ch h thng vi gii php c
th s dn n kh b sung, thay i h thng.
Khng tng qut ha khi lp trnh, nht l lp trnh hng i tng. VD:
rng buc thng s hnh thc vi i tng lp con thay v c th l i
tng lp cha.
Cc component lin quan nhau qu cht ch: mi quan h gia cc
component nhiu dn n hin tng thay i dy chuyn khi phi thay i
mt component no . VD: lm dng tha k trong lp trnh hng i
tng, cc component gi ln nhau nhiu
Gii thiu (tt)
Chng 10 : Cc mu cu trc
112
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 223
Mt bin php c xut c nhng bn thit k tt: s dng li
nhng mu thit k ca nhng chuyn gia qua kim nghim thc t.
Mu thit k (Design pattern) thng c c im:
L nhng thit k c s dng v c nh gi tt.
Gip gii quyt nhng vn thit k thng gp.
Ch trng vic gip cho bn thit k c tnh uyn chuyn, d nng cp,
thay i.
Gii thiu (tt)
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 224
Cung cp phng php gii quyt nhng vn thc t thng gp
c nh gi, kim nghim.
L bin php ti s dng tri thc cc chuyn gia phn mm.
Hnh thnh kho tri thc, ng vng trong giao tip gia nhng ngi lm
phn mm.
Gip ngi tm hiu nm vng hn c im ngn ng lp trnh, nht l
lp trnh hng i tng.
tng tin cy, tit kim ngun lc
Vai tr ca design pattern
Chng 10 : Cc mu cu trc
113
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 225
C nhiu loi Software patterns: analysis patterns, design patterns,
organization patterns, process patterns Bi ging ny ch tp trung
vo Object Oriented Design Patterns (t y v sau gi l Design
Patterns hay mu thit k).
Design patterns c ba nhm chnh
Structural Cung cp c ch x l nhng lp khng th thay i (lp th
vin ca third party), rng buc mun (lower coupling) v cung cp cc
c ch khc tha k.
Creational Khc phc cc vn khi to i tng, hn ch s ph
thuc platform.
Behavioral Che du hin thc ca i tng, che du gii thut, h tr
vic thay i cu hnh i tng mt cch linh ng.
Phn loi software patterns
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 226
Mi nhm Design Pattern c cc pattern v lp (class patterns) v
pattern v i tng (object patterns).
Class patterns da trn mi quan h tha k gia cc lp, mi quan h
ny l tnh (xc nh ti thi im dch), do class patterns thch hp
cho h thng khng cn thay i ng trong thi gian chy.
Object patterns da trn mi quan h gia cc i tng, do c th
thay i thi im chy.
Phn loi Object Oriented Design Patterns
Chng 10 : Cc mu cu trc
114
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 227
Tm kim i tng: vic phn chia h thng thnh mt tp hp cc i
tng hot ng hiu qu l cng vic kh khn. Design pattern gip
a ra nhng i tng thng gp trong nhng trng hp thit k
tng t gp trc y.
Xc nh s lng v kch thc i tng: trong trng hp h thng
cn rng buc s lng xc nh i tng ang hot ng hay ngi
thit k bn khon v vic nn tp trung mt s chc nng no vo
trong 1 i tng hay tch ra thnh nhiu i tng.
Xc nh interface v hin thc (implementation) ca i tng. Hng
chng trnh n c im: program to an interface, not an
implementation.
Gip thit k theo hng ti s dng v linh ng bng cch s dng
mi quan h gia cc i tng (bao gp, tha k) mt cch ph hp
v thit k theo hng tin on trc cc thay i trong tng lai.
Kh nng ng dng design patterns
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 228
Tn
Mc tiu v nhu cu p dng
V d s dng
Lc class miu t mu : cha cc phn t (lp, i tng) trong
pattern v mi quan h gia chng.
Cc ng cnh nn p dng pattern.
Cu trc design pattern s trnh by
Chng 10 : Cc mu cu trc
115
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 229
Cc mu cu trc (Structural Patterns) tp trung gii quyt vn kt
hp cc lp v/hoc i tng thnh mt kin trc ln hn.
Cc mu cu trc lp (structural class patterns) s dng tha k kt
hp cc lp hay cc interface. Tng t qu trnh a tha k: mt lp
tha k t nhiu lp cha s mang c im ca tt c cc lp cha gp
li.
Cc mu cu trc i tng (structural object patterns) tp trung vo
vic kt hp cc i tng thc hin nhng chc nng no .
Trong cc slide tip theo, chng ta s tm hiu cc mu: Adapter,
Composite, Proxy, Decorator, Facade, Flyweight.
Structural Patterns
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 230
Mc tiu : chuyn i interface ca mt class thnh mt interface khc
theo yu cu s dng ca Client.
Nhu cu p dng : c nhng trng hp chng ta s dng mt class
nhng khng mun tun theo interface ca chnh class m li mun
chuyn sang mt interface khc. Mu Adapter gip chng ta gii quyt
vn ny.
V d : chng trnh drawing editor x l cc i tng ha Line,
Polygon, Text... thng qua interface s dng Shape (c nh ngha
nh class root nu ngn ng lp trnh khng h tr Interface). Hin thc
class Line, Polygon t u kh d v n gin nhng hin thc class
Text th phc tp hn nn dng li class sn c no (th d
TextView cung cp chc nng qun l Text) nhng khng th hay khng
mun thay i class TextView nh ngha class Adapter tn l
TextShape tha k class Shape ca ng dng.
Adapter
Chng 10 : Cc mu cu trc
116
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 231
Th d v mu Adapter dng object
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 232
S cu trc ca mu Adapter dng class
Chng 10 : Cc mu cu trc
Mu Adapter dng class xy
dng lp Adapter bng cch
tha k c interface cn
chuyn v interface ch.
117
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 233
S cu trc ca mu Adapter dng object
Chng 10 : Cc mu cu trc
Mu Object
Adapter xy dng
lp Adapter bng
cch tha k
interface ch v
bao gp i tng
ca interface cn
chuyn.
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 234
Target (Shape) : nh ngha interface cho Client s dng.
Client (DrawingEditor) : s dng cc i tng thng qua interface
Target.
Adaptee (TextView) : nh ngha interface c sn cn chuyn sang
interface Target.
Adapter (TextShape) : chuyn interface Adaptee sang interface Target.
Cc phn t tham gia
Chng 10 : Cc mu cu trc
118
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 235
mun dng mt lp c sn nhng interface ca n khng tng thch
vi interface ang s dng trong khi chng ta ch mun dng interface
ang s dng.
mun to ra cc lp c th giao tip vi cc lp khc nhng cha bit
trc interface ca nhng lp .
(i vi mu object adapter) mun s dng nhiu lp con c sn
nhng s khng hiu qu nu phi chuyn interface (bng mu Adapter)
ca tng lp con. Object Adapter s chuyn interface ca ch lp cha.
Cc ng cnh nn dng mu Adapter
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 236
Mc tiu : to quan h th bc bao gp gia cc i tng. Client c th
xem i tng bao gp v i tng b bao gp nh nhau kh nng
tng qut ha trong code ca client d pht trin, nng cp, bo tr.
Nhu cu p dng : C nhng trng hp h thng mun xem xt cc i
tng n cng nh cc i tng phc (i tng cha nhiu i tng
n). Trong trng hp ny, h thng va phi m bo c tnh bao
gp ln tnh khng phn bit gia cc phn t. Mu Composite cung cp
gii php cho yu cu ny.
V d : chng trnh drawing editor va c cc i tng n nh k t,
im nh va c cc i tng phc nh t (gm nhiu k t), hng
(gm nhiu t), nhm cc phn t nh hnDi gc ngi s dng,
h thng tc ng nh nhau ln mt t v mt k t...
Composite
Chng 10 : Cc mu cu trc
119
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 237
Th d v mu Composite
Chng 10 : Cc mu cu trc
Graphic
Draw()
Add(Graphic)
Remove(Graphic)
GetChild(int)
for all g in graphics
g.Draw()
Line
Draw()
Text
Draw()
Rectangle
Draw()
Picture
Draw()
Add(Graphic)
Remove(Graphic)
GetChild(int)
add g to list of graphics
graphics
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 238
S cu trc ca mu Composite
Chng 10 : Cc mu cu trc
120
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 239
Component
Khai bo interface v hin thc mt s tc v chung cho cc i tng ca
nhng lp tha k (gi chung l cc component)
Khai bo interface cho vic truy xut v qun l i tng ca cc
component.
C th khai bo hay hin thc cc phng thc truy xut n i tng
cha ca nhng component.
Leaf : nh ngha tc v cho cho nhng component c bn.
Composite : nh ngha tc v cho nhng component bao gp nhng
component khc.
Client : S dng cc component thng qua interface Component
Cc phn t tham gia
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 240
chng trnh mun th hin quan h bao gp - b bao gp.
chng trnh mun i x cc phn t bao gp v b bao gp nh nhau.
V d: compiler (chng trnh con hay module c th bao gp cc
chng trnh con hay module khc); chng trnh giao din GUI
(window l i tng phc, button l i tng n); chng trnh text
editor
Cc ng cnh nn dng mu Composite
Chng 10 : Cc mu cu trc
121
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 241
Mc tiu : Cung cp i tng i din cho mt i tng khc h tr
hoc kim sot qu trnh truy xut i tng . i tng thay th gi
l Proxy.
Nhu cu p dng :
Nhng i tng ln khi khi to s tn nhiu ti nguyn, do nn tr hon
thi im khi to thc s cc i tng ny. Trong thi gian tr hon, proxy
ng vai tr thay th i tng.
Chng trnh mun truy xut mt i tng khng gian a ch khc.
Proxy thay th i tng my remote.
i tng cn c bo mt khi tng tc trc tip vi client. Client ch tc
ng c ln Proxy, Proxy chuyn yu cu Client xung i tng thc
hin yu cu.
Chng trnh mun b sung mt s thao tc kim sot ln mt i tng.
Proxy ng vai tr i tng kim sot.
Proxy
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 242
Remote proxy : cung cp i tng i din (local) cho mt i tng
phn b (nonlocal) khc (v d RMI, JINI).
Virtual proxy : cung cp i tng i din cho i tng ln khi khi to
tn nhiu ti nguyn. Mc ch tr hon thi im to i tng ln.
(V d i tng hnh nh trong mt chng trnh x l ng thi nhiu
hnh nh).
Protection proxy : cung cp i tng i din cho mt i tng khc
cn c bo mt t bn ngoi. V d cc KernelProxies cung cp truy
xut n Kernel ca h iu hnh.
Smart proxy : cung cp i tng i din b sung mt s thao tc
khi c truy xut n i tng thc. V d proxy kim tra s tham kho
n i tng, proxy thc hin vic load persistent object trong ln tham
kho u tin
Phn loi Proxy
Chng 10 : Cc mu cu trc
122
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 243
Th d v mu Proxy
Chng 10 : Cc mu cu trc
Image
Draw()
GetExtent()
Store()
Load()
imageImp
extent
if (image==0)
image = LoadImage(filename);
else image->Draw();
ImageProxy
Draw()
GetExtent()
Store()
Load()
filename
extent
image
Graphic
Draw()
GetExtent()
Store()
Load()
DocumentEditor
if (image==0)
return extent;
else return image->GetExtent();
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 244
S cu trc ca mu Proxy
Chng 10 : Cc mu cu trc
RealSubject
Request()
...
...
// prolog code
realSubject->Request();
// epilog code
Proxy
Request()
...
...
realSubject
Subject
Request()
...
Client
123
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 245
Proxy
gi lin h n i tng RealSubject.
c th thay th i tng RealSubject.
kim sot qu trnh truy xut n i tng RealSubject, c th to hoc
delete i tng ny.
Thc hin mt s hot ng khc ty loi Proxy:
+ remote proxy: encode v gi thng tin n i tng RealSubject
khng gian a ch khc.
+ virtual proxy: cha cc thng tin v i tng realSubject c th khi
to li n sau ny.
+ protection proxy: kim tra i tng ang thc hin truy xut c quyn
khng
+ smart proxy: thc hin cc thao tc b sung khi c truy xut n i
tng thc.
Cc phn t tham gia
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 246
Subject :
nh ngha interface chung cho 2 lp i tng RealSubject v Proxy, do
i tng Proxy c th thay th v tr i tng RealSubject.
RealSubject:
Lp th hin i tng thc s Client cn truy xut.
Qu trnh giao tip thi im run-time c th m t bng s :
Cc phn t tham gia
Chng 10 : Cc mu cu trc
124
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 247
Cc chng trnh phn b
Cc h thng chng trnh cn phi hp hot ng ca nhiu i tng.
Cc h thng middleware.
H thng cn chia ti phc v c nhanh.
DBMS, OS

Cc ng cnh nn dng mu Proxy
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 248
Mc tiu : thm ng trch nhim cho i tng.
Nhu cu p dng :
mun thm trch nhim cho 1 s i tng ch khng phi cho ton b cc
i tng ca class tng ng.
V d :
Toolkit GUI cho php user thm border v scrollbar vo bt k phn t GUI
no nh TextView...
Mu Decorator
Chng 10 : Cc mu cu trc
aBorderDecorator
component
aScrollDecorator
component
aTextView
component
125
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 249
Decorator
Chng 10 : Cc mu cu trc
ScrollDecorator
Draw()
ScrollTo()
scrollPosition
BorderDecorator
Draw()
DrawBorder()
borderWidth
Decorator
Draw()
VisualComponent
Draw()
TextView
Draw() component->Draw();
Decorator::Draw();
DrawBorder();
component
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 250
S cu trc ca mu Decorator
Chng 10 : Cc mu cu trc
ConcreteDecoratorA
Operation()
addedState
Decorator
Operation()
Component
Operation()
ConcreteComponent
Operation() component->Operation();
Decorator::Operation();
AddedBehavior();
component
ConcreteDecoratorB
Operation()
AddedBehavior()
addedState
126
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 251
Component (VisualComponent)
nh ngha interface cho cc i tng m ta cn thm trch nhim cho
chng 1 cch ng.
ConcreteComponent (TextView)
nh ngha i tng m ta cn thm trch nhim cho chng 1 cch ng.
Decorator
cha tham kho n i tng Component v nh ngha interface tng
thch vi interface ca Component.
ConcreteDecorator (BorderDecorator, ScrollDecorator)
thm trch nhim cho thnh phn gc.
Cc phn t tham gia
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 252
mun thm ng trch nhim cho 1 vi i tng m khng nh hng
n cc i tng cng loi.
tch ly thm cc trch nhim ca i tng.
khi khng th ni rng i tng bng cch tha k (s bng n h
thng class con-cha).
Cc ng cnh nn dng mu Decorator
Chng 10 : Cc mu cu trc
127
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 253
Mc tiu : cung cp interface hp nht cho tp cc interface ca 1 h
thng con. Facade nh ngha 1 interface cp cao hn cc interface c
sn lm cho h thng con d s dng hn.
Nhu cu p dng :
ti thiu ha tnh "coupling" gia cc h thng con ti thiu ha giao tip
gia cc h thng con.
V d :
h thng con bin dch c nhiu class phc v cc bc bin dch ri rc
nh Scanner, Parser, ProgramNode, BytecodeStream,
ProgramNodeBuilder. dch source code, ta c th vit 1 ng dng gi
dch v ca tng class duyt token, parser, xy dng cy c php, to
code i tng... Tuy nhin lm nh trn s rt kh v d gy ra li. Cch
khc phc l nh ngha 1 class mi vi giao tip hp nht tn l Compiler,
n cung cp 1 hm Compile (file), ng dng no cn dch source code ch
cn gi thng ip Compile n i tng Compiler.
Facade
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 254
Th d v cu trc Facade
Chng 10 : Cc mu cu trc
Stream
BytecodeStream
CodeGenerator
St ack Machi neCodeGe
ner at or
RI SCCodeGene
r at or
Vari abl e No
de
Expr essi onN
ode
St at e me nt N
ode
Progr a mN
ode
Progr a mNode
Buf f er
Sy mb
ol
Toke
n
Parser
Scann
er
Compiler
Compile()
128
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 255
S cu trc ca mu Facade
Chng 10 : Cc mu cu trc
Facade
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 256
Facade (Compiler)
bit class no lin quan n request xc nh.
nh cc i tng lin quan thc hin request.
subsystem classes (Scanner, Parser,..)
hin thc cc chc nng ca h thng con.
x l cng vic c nh t i tng Facade.
khng cn bit Facade, khng c tham kho n Facade.
Cc phn t tham gia
Chng 10 : Cc mu cu trc
129
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 257
mun cung cp 1 giao tip n gin cho 1 h thng con phc tp.
mun to thm lp ngn cch h thng con vi client.
Cc ng cnh nn dng mu Facade
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 258
Mc tiu : dng phng tin dng chung qun l hiu qu 1 s ln
i tng nh.
Nhu cu p dng :
thit k hng i tng thng c nhiu im li, nhng hin thc u tr
bn thit k c th tr gi t v s khng hiu qu.
th d chng trnh x l vn bn c th dng khi nim i tng miu
t bt k phn t c bn no : k t, cng thc, hnh, .... Tuy nhin k t l
i tng rt nh v xut hin rt nhiu ln trong vn bn, nu mi ln xut
hin 1 k t, ta to ring 1 i tng mi cho k t th rt khng hiu
qu. Mu Flyweight rt thch hp gii quyt vn dng chung k t.
Flyweight l i tng dng chung da vo khi nim c bn l trng thi
trong v trng thi ngoi. Trng thi trong c cha trong flyweight, c
lp vi ng cnh s dng (code k t,...). Trng thi ngoi ph thuc v
thay i theo ng cnh, n khng th c cha trong flyweight, ng cnh
cn truyn cho flyweight trng thi ngoi khi nh flyweight 1 cng vic no
.
Mu Flyweight
Chng 10 : Cc mu cu trc
130
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 259
Th d v mu Flyweight
Chng 10 : Cc mu cu trc
Character
Draw(Context)
Intersects(Point,Context
)
char c
Glyph
Draw(Context)
Intersects(Point,Context)
Row
Draw(Context)
Intersects(Point,Contex
t)
Column
Draw(Context)
Intersects(Point,Contex
t)
children
children
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 260
S cu trc ca mu Flyweight
Chng 10 : Cc mu cu trc
ConcreteFlyweight
Operation(extrinsicState
)
intrinsicState
Flyweight
Operation(extrinsicState)
FlyweightFactory
GetFlyweight(key)
UnsharedConcreteFlyweight
Operation(extrinsicState)
allState
Client
if (flyweight(key) exists
return existing flyweight
else {
create new flyweight;
add it to pool of flyweights;
return the new flyweight;
}
131
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 261
Flyweight (Glyph)
nh ngha interface cho i tng nhn yu cu v hot ng theo trng
thi ngoi.
ConcreteFlyweight (Character)
hin thc interface Flyweight thnh cc i tng dng chung.
UnsharedConcreteFlyweight (Character)
hin thc interface Flyweight thnh cc i tng khng dng chung.
FlyweightFactory
to v qun l cc i tng Flyweight.
Client
cha tham kho n flyweight v nh khi cn
Cc phn t tham gia
Chng 10 : Cc mu cu trc
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 262
Khi cc iu kin sau ng thi tha mn :
ng dng dng 1 s ln i tng.
gi b nh cao v phi cha s lng ln i tng.
phn ln trng thi i tng c th bn ngoi.
nhiu nhm i tng c th c thay th bng 1 s nh i tng khi
cc trng thi ngoi ca chng b loi b.
ng dng khng ph thuc vo tn nhn dng i tng.
Cc ng cnh nn dng mu Flyweight
Chng 10 : Cc mu cu trc
132
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 263
Trng i Hc Bch Khoa Tp. HCM
Khoa Cng ngh Thng tin
Chng 11
CC MU CREATIONAL
Mu Abstract Factory
Mu Factory Method
Mu Prototype
Mu Singleton
Mu Builder
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 264
Creational design patterns gip xy dng h thng linh ng v mt khi
to, qun l v s dng i tng. Chng c th cho php h thng ch
ng trong vic xc nh i tng no c to, ai to ra i tng ,
cch thc v thi im khi to i tng .
c im ni bt trong creational patterns l chng trnh cn s dng
i tng khng trc tip sinh ra i tng m nh cc phn t trung
gian tng linh ng.
Class creational patterns s dng c im tha k thay i class s
c s dng sinh ra i tng, Object creational patterns truyn qu
trnh khi to i tng cho mt i tng khc.
Creational Patterns
Chng 11 : Cc mu Creational
133
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 265
Xy dng mt m l (maze) cho cc tr chi c s dng m l.
Mt m l c nh ngha bng mt tp hp cc phng (room), mi
phng bit cc i tng k cn n 4 hng: bc, nam, ng, ty. i
tng k cn c th l mt phng khc, mt bc tng (wall) hay mt
cnh ca (door) sang phng khc.
Cc hng c th c hin thc bi cc hng s hay kiu enum trong
C++:
enum Direction {North , South , East , West }
Lc lp ca h thng nh sau:
V d v qu trnh khi to i tng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 266
MapSite
Enter()
Room
Enter()
SetSide()
GetSide()
roomNumber
Maze
AddRoom()
RoomNo()
Wall
Enter()
Door
Enter()
isOpen
sides
rooms
V d v qu trnh khi to i tng
Chng 11 : Cc mu Creational
134
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 267
MapSite l lp cha tru tng ca tt c cc phn t trong m l.
MapSite ch c mt phng thc Enter ch thao tc i vo mt phn
t (room, door, wall). Ty c im ca mnh, cc phn t s phi
override phng thc ny.
Lp Room c th c hin thc trong C++ nh sau :
class Room : public MapSite {
public:
Room (int roomNo);
MapSite* GetSide (Direction) const;
void SetSide(Direction, MapSite*);
virtual void Enter();
private:
MapSite m_sides[4];
int m_roomNumber;
};
V d v qu trnh khi to i tng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 268
Class Wall c th c hin thc trong C++ nh sau :
class Wall : public MapSite {
public:
Wall ();
virtual void Enter();
};
Class Door c th hin thc trong C++ nh sau :
class Door : public MapSite {
public:
Door (Room* = 0, Room*=0);
virtual void Enter();
Room* OtherSideFrom (Room*);
private:
Room* m_room1, m_room2;
bool m_isOpen;
};
V d v qu trnh khi to i tng
Chng 11 : Cc mu Creational
135
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 269
Lp Maze c th hin thc trong C++ nh sau :
class Maze {
public:
Maze();
void AddRoom(Room*);
Room* RoomNo(int) const;
private:
//
};
Lp MazeGame tch hp nhng lp gii thiu to thnh mt game
c s dng m l. Lp ny phi to ra mt m l (Maze), method
CreateMaze to mt m l n gin gm 2 phng c th c nh
ngha trong C++ nh sau :
V d v qu trnh khi to i tng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 270
Maze* MazeGame::CreateMaze() {
Maze* aMaze=new Maze;
Room* r1=new Room(1);
Room* r2=new Room(2);
Door* theDoor = new Door(r1,r2);
aMaze->AddRoom(r1)
aMaze->AddRoom(r2)
r1->setSide(North, new Wall);
r2->setSide(North, new Wall);
return aMaze;
}
Phng thc CreateMaze b rng buc cng (Hard code), iu ny dn n hai nhc
im :
- Khng th sinh ra mt maze c cu trc khc (VD: cc phn t cc hng ca
cc room thay i).
- Rt kh ti s dng phng thc ny to ra mt maze c c im khc (VD:
maze trong cc phng c th c bom hoc qu tng, ca gia cc phng ch c
th m bng cu thn ch) v CreateMaze rng buc cng cc tn lp.
V d v qu trnh khi to i tng
Chng 11 : Cc mu Creational
136
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 271
Truyn cho phng thc CreateMaze mt i tng c kh nng sinh ra room, wall,
door theo c th ca ng dng. Khi nu mun thay i maze th ch cn truyn
mt i tng khc. y l hng tip cn ca mu Abstract Factory.
Code trong CreateMaze gi cc phng thc thng thng (hoc virtual) khi
to i tng thay v gi constructor ca lp tng ng. Khi nu mun thay i
lp s to i tng th ch cn to mt subclass tha k MazeGame, trong
override cc phng thc khi to i tng trn. y l hng tip cn ca mu
Factory Method.
CreateMaze c truyn cc i tng room, door, wall c kh nng sinh ra i
tng tng t chng (clone). Khi nu mun thay i i tng trong
CreateMaze, ta ch cn truyn vo cc i tng khc. Cc i tng truyn cho
CreateMaze gi l Prototype v hng tip cn ny l ca mu Prototype.
CreateMaze c truyn 1 i tng m c th to ml mi dng cc tc v thm
phng, ca v tng vo ml m n xy dng ri ta dng tha k thay i cc
phn ca ml hay cch thc xy dng ml. y l hng tip cn ca mu
Builder.
Trong cc slide sau chng ta s tm hiu cc mu phn mm ny.
Gii php khc phc
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 272
Abstract Factory
Chng 11 : Cc mu Creational
Mc tiu : cung cp interface cho vic khi to i tng m khng cn
xc nh trc lp c th (concrete) tng ng.
Nhu cu p dng : c nhng trng hp khi xy dng chng trnh
chng ta cha bit chnh xc hay cha mun rng buc lp no s c
s dng sinh ra i tng, chng hn:
chng trnh c kh nng chy trn nhiu platform. Mi platform c mt h
cc lp giao din, vic s dng c th h lp giao din no ch bit khi
chng trnh chy.
framework cn khi to i tng nhng cha bit trc lp c th s s
dng.
Nhng chng trnh nh vy thng c mt s yu cu i vi ngi thit k:
code chng trnh phi c kh nng tng tc tng qut ln cc i tng
s c sinh ra.
d chuyn i gia cc h i tng.
d b sung cc h i tng mi.
137
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 273
Gii php ngh:
Cung cp interface cho cc i tng d nh s c khi to khi h thng
chy, gi l AbstractProduct.
Cung cp interface khi to cc i tng kiu AbstractProduct, gi l
AbstractFactory.
khi to mt i tng c th, cn xy dng 2 lp concrete: mt lp hin
thc interface AbstractFactory khi to i tng t lp hin thc
AbstractProduct.
Hng tip cn trn l ca mu Abstract Factory.
V d v qu trnh khi to i tng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 274
Th d v mu AbstractFactory
Chng 11 : Cc mu Creational
WidgetFactory
CreateScrollbar()
CreateWindow()
MotifWidgetFactory
CreateScrollbar()
CreateWindow()
PMWidgetFactory
CreateScrollbar()
CreateWindow()
Window
Client
PMWindow MotifWindow
Scrollbar
PMScrollbar MotifScrollbar
138
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 275
AbstractFactory
CreateProductA()
CreateProductB()
ConcreteFactory1
CreateProductA()
CreateProductB()
ConcreteFactory2
CreateProductA()
CreateProductB()
AbstractProductA
Client
ProductA2 ProductA1
AbstractProductB
ProductB2 ProductB1
S cu trc ca mu AbstractFactory
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 276
AbstractFactory : nh ngha interface cho vic khi to i
tng. Thng l lp Abstract.
ConcreteFactory : hin thc cc method trong interface
AbstractFactory to ra cc i tng c th. H thng c nhiu
ConcreteFactory, mi ConcreteFactory sinh ra mt nhm i
tng, cc nhm i tng do cc ConcreteFactory sinh ra tng
ng nhau v vai tr.
AbstractProduct : lp Abstract, nh ngha interface cho mt kiu
lp (kiu lp button, kiu lp Scrollbar)
ConcreteProduct : lp hin thc i tng c sinh ra t lp
ConcreteFactory tng ng, tha k lp Abstract Product.
Cc phn t tham gia
Chng 11 : Cc mu Creational
139
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 277
Client : chng trnh cn to cc i tng. Client ch s dng cc
interface AbstractFactory v AbstractProduct.
Qu trnh tng tc gia cc phn t :
Ti thi im compile, Client nm gi pointer n phn t ca lp
AbstractFactory (gi s l _factory).
Ti thi im run-time, Client bit cn s dng h i tng
ConcreteProduct no s khi to i tng ConcreteFactory tng
ng v gn vo _factory. Client thng qua interface AbstractFactory
yu cu i tng ConcreteFactory sinh ra cc i tng mong
mun.
Client da vo interface ca cc i tng ConcreteProduct c
khai bo trong AbstractProduct s dng cc i tng ny.
Cc phn t tham gia
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 278
h thng mun xc nh qu trnh khi to v s dng i tng ti thi
im chy chng trnh.
h thng mun tng tc vi mt h trong mt tp hp h i tng v
vic chn h i tng c xc nh ti thi im run-time.
h thng mun rng buc tnh s dng ng thi cc phn t trong mt
h i tng.
Cc ng cnh nn dng mu Abstract Factory
Chng 11 : Cc mu Creational
140
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 279
Lp MazeFactory (tng ng phn t Abstract Factory) cung cp
phng thc mc nh khi to cc i tng maze, wall, room, door.
Cc lp con tha k c th override cc phng thc ny sinh ra cc
maze, wall, room, door khc.
MazeFactory khng s dng Constructor m cung cp cc method
Make to ra cc i tng.
MazeFactory c th c hin thc trong C++ nh sau:
class MazeFactory {
public: MazeFactory();
virtual Maze* MakeMaze() const { return new Maze;}
virtual Wall* MakeWall() const { return new Wall;}
virtual Room* MakeRoom(int n) const {
return new Room(n); }
virtual Door* MakeDoor(Room* r1, Room* r2) const {
return new Door(r1, r2);
}
V d p dng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 280
Lp MazeGame ng vai tr l Client s dng mu Abstract Factory.
Phng thc CreateMaze c truyn mt i tng kiu MazeFactory,
CreateMaze s dng i tng ny sinh ra cc i tng cn thit.
CreateMaze c th c hin thc trong C++ nh sau:
Maze* MazeGame::CreateMaze (MazeFactory& factory) {
Maze* aMaze = factory.MakeMaze();
Room* r1 = factory.MakeRoom (1);
Room* r2 = factory.MakeRoom (2);
Door* aDoor = factory.MakeDoor(r1, r2);
aMaze->AddRoom(r1);
aMaze->AddRoom(r2);
r1->SetSide(North, factory.MakeWall());

return aMaze;
}
V d p dng
Chng 11 : Cc mu Creational
141
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 281
thay i i tng to ra, ta ch vic truyn mt i tng factory
khc, min l i tng ny thuc kiu MazeFactory.
VD to mt maze m trong room c th c bom, ta nh ngha lp
RoomWithABomb tha k lp Room v lp BombedMazeFactory tha
k lp MazeFactory trong override phng thc MakeRoom nh sau:
Room* BombedMazeFactory::MakeRoom(int n) const {
return new RoomWithABomb(n);
}
Trong chng trnh Game ch cn thc hin on code:
MazeGame game;
BombedMazeFactory factory;
game.CreateMaze(factory);
V d p dng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 282
Khi p dng mu Abstract Factory, chng trnh c mt s c im :
c th thch ng vi nhiu kiu maze khc nhau.
vic thm mt kiu maze ch l thm mt h cc lp, khng nh hng n
code chng trnh c.
chng trnh nht qun trong vic s dng mt h cc phn t ca cng
mt kiu maze, khng xy ra trng hp 2 phn t ca 2 h khc nhau
cng tn ti trong code ca client.
vic b sung mt loi phn t vo maze s gp kh khn v phi b sung
vo lp MazeFactory, do s nh hng n hu nh tt c cc lp khc.
V d p dng
Chng 11 : Cc mu Creational
142
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 283
Factory Method
Chng 11 : Cc mu Creational
Mc tiu : nh ngha interface sinh ra i tng nhng cho lp
con quyt nh lp no c dng sinh ra i tng. Factory Method
cho php mt lp chuyn qu trnh khi to i tng cho lp con.
Nhu cu p dng :
Tng t nhu cu p dng mu Abstract Factory: cn phi cung
cp gii php to i tng nhng cha bit c lp c th dng
sinh ra i tng.
Hng gii quyt theo mu Factory Method: thay v to lp Abstract
Factory to cc i tng nh trong mu Abstract Factory,
Factory Method to mt phng thc o, cc lp con s override
phng thc ny khi to i tng.
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 284
Application
CreateDocument()
NewDocument()
OpenDocument()
MyDocument
S th d
Chng 11 : Cc mu Creational
Document
Open()
Close()
Save()
Revert()
Document* doc=CreateDocument();
docs.Add(doc);
doc->Open();
return new MyDocument;
MyApplication
CreateDocument()
docs
143
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 285
S cu trc ca mu Factory method
Chng 11 : Cc mu Creational
Creator
FactoryMethod()
AnOperation()
ConcreteProduct
Product
...
Product = FactoryMethod();
...
return new ConcreteProduct;
ConcreteCreator
FactoryMethod()
docs
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 286
Product : nh ngha interface cho cc i tng sn phm.
ConcreteProduct : lp th hin i tng sn phm cn to. Hin
thc interface Product.
Creator : nh ngha factory method, sn phm tr v l i tng
kiu Product.
ConcreteCreator : tha k lp Creator, override factory method
tr v i tng ConcreteProduct.
Cc phn t tham gia
Chng 11 : Cc mu Creational
144
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 287
mt lp khng bit trc lp ca i tng m n cn khi to.
mt lp mun lp con ca mnh thay i hay xc nh lp ca i tng
cn khi to.
mt lp mun chuyn qu trnh hin thc mt nhim v no cho mt
trong cc lp con nhng cho php ng dng xc nh lp con c th.
Cc ng cnh nn dng mu Factory Method
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 288
Lp MazeGame ng vai tr l Creator, cung cp cc factory method
to cc i tng:
class MazeGame {
public: Maze* CreateMaze();
// factory methods:
virtual Maze* MakeMaze() const { return new Maze; }
virtual Room* MakeRoom(int n) const { return new Room(n); }
virtual Wall* MakeWall() const { return new Wall; }
virtual Door* MakeDoor(Room* r1, Room* r2) const { return
new Door(r1, r2); }
};
V d p dng
Chng 11 : Cc mu Creational
145
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 289
Method CreateMaze c th c nh ngha li nh sau:
Maze* MazeGame::CreateMaze () {
Maze* aMaze = MakeMaze();
Room* r1 = MakeRoom(1); Room* r2 = MakeRoom(2);
Door* theDoor = MakeDoor(r1, r2);
aMaze->AddRoom(r1);
aMaze->AddRoom(r2);
r1->SetSide(North, MakeWall());
//.
r2->SetSide(North, MakeWall());
//.
return aMaze;
}
V d p dng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 290
Cc maze game khc mun thay i phn t trong game th:
nh ngha cc lp tha k t cc lp th hin cc phn t tng ng
VD: RoomWithABomb tha k Room.
nh ngha lp tha k lp MazeGame, trong lp ny override factory
method to ra i tng mun thay i.
VD:
class BombedMazeGame : public MazeGame {
public: BombedMazeGame();
virtual Wall* MakeWall() const { return new BombedWall; }
virtual Room* MakeRoom(int n) const
{ return new RoomWithABomb(n); }
};
V d p dng
Chng 11 : Cc mu Creational
146
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 291
Prototype
Chng 11 : Cc mu Creational
Mc tiu : gip khi to i tng bng cch copy mt i tng khc
(prototype) ang tn ti.
Nhu cu p dng :
Mun to i tng nhng khng bit hoc khng mun s dng lp
Concrete. V d Editor Framework cho php ng dng b sung cc
control vo toolbox nhng cha bit lp c th s sinh ra Control.
Gii php ngh :
+ Framework cung cp interface copy mt i tng, interface
ny s c cc lp concrete cn sinh ra i tng implement.
+ ng dng pht trin t Framework hay component to ra i
tng mong mun, sau mi ln to thm mt i tng bng
cch gi hm copy i tng ny.
y chnh l phng php ca mu Prototype.
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 292
V d v mu Prototype
Chng 11 : Cc mu Creational
Tool
Manipulate()
return copy of self;
prototype
MusicsalNote
Draw(Position)
Clone()
p = protoype->Clone();
while (user drag mouse) {
p->Draw(new position);
}
insert p onto drawing
WholeNote
Draw(Position)
Clone()
return copy of self;
HalfNote
Draw(Position)
Clone()
MusicalNote
Staff
Draw(Position)
Clone()
GraphicTool
Manipulate()
RotateTool
Manipulate()
147
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 293
S cu trc ca mu Prototype
Chng 11 : Cc mu Creational
Client
Operation()
return copy of self;
return copy of shelf;
prototype
Prototype
Clone()
p = protoype->Clone();
ConcretePrototype1
Clone()
ConcretePrototype2
Clone()
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 294
Prototype: cung cp interface copy chnh n (clone)
ConcretePrototype: hin thc interface c cung cp bi
Prototype copy chnh n.
Client: to mi i tng bng cch yu cu mt i tng c
(prototype) copy chnh n.
Cc phn t tham gia
Chng 11 : Cc mu Creational
148
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 295
Class c th cung cp phng thc set gi tr cho i tng sau
khi c to ra bng cch copy t prototype.
Nu s lng prototype trong ng dng khng c nh, nn qun
l chng bng mt i tng prototype manager. i tng ny
cha cc tham kho n cc prototype v cc key tng ng
truy xut chng.
Vic hin thc phng thc clone ph thuc nhiu vo ngn ng
lp trnh. C th copy hon ton (deep copy) hay share bin
(shallow copy).
Java, SmallTalk, Eiffel cung cp phng thc clone(). C++ c
phng thc copy.
Tt c nhng phng thc trn u mc nh thc hin shallow
copy.
Khi hin thc deep copy, vn tham kho vng.
Mt s vn hin thc
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 296
Mu Prototype thng c s dng khi h thng cn c lp vi cc
i tng m n sinh ra v
khi lp cn dng sinh i tng c xc nh ti thi im
chng trnh chy (dynamic loading), hoc
trnh trng hp xy dng s lng cc phn t khi to i tng
ngang bng vi s lng kiu i tng b sung d nh to ra, hoc
khi cc i tng ca cng mt class c t im khc bit.
Cc ng cnh nn dng mu Prototype
Chng 11 : Cc mu Creational
149
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 297
Chng trnh ny pht trin t v d p dng mu Abstract Factory.
nh ngha lp MazePrototypeFactory tha k lp MazeFactory, i
tng lp ny c cung cp cc prototype to ra cc i tng cng
loi. MazePrototypeFactory c th c hin thc trong C++ nh sau:
class MazePrototypeFactory : public MazeFactory{
public:
MazePrototypeFactory(Maze*, Wall*, Room*, Door*);
virtual Maze* MakeMaze() const;
...// Cc method khi to cc phn t ca maze
private:
Maze* _mazePrototype;
Room* _roomPrototype;
Wall* _wallPrototype;
Door* _doorPrototype;
}
V d p dng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 298
Constructor ca lp MazePrototypeFactory ch khi to cc prototype
vi cc i tng tng ng c cung cp t ng dng:
MazePrototypeFactory::MazePrototypeFactory (
Maze* m, Wall* w, Room* r, Door* d ) {
_mazePrototype = m;
_wallPrototype = w;
_roomPrototype = r;
_doorPrototype = d;
}
V d p dng
Chng 11 : Cc mu Creational
150
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 299
Cc lp Door, Wall, Room u phi hin thc phng thc clone tha k
t lp MapSite v cc phng thc set gi tr nu cn:
class Door : public MapSite {
public: Door();
Door(const Door&);
virtual void Initialize(Room*, Room*);
virtual Door* Clone() const;
private: Room* _room1; Room* _room2;
};
Door::Door (const Door& other)
{ _room1 = other._room1; _room2 = other._room2; }
void Door::Initialize (Room* r1, Room* r2)
{ _room1 = r1; _room2 = r2; }
Door* Door::Clone () const { return new Door(*this); }
V d p dng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 300
Cc phng thc khi to wall, room, door u clone prototype c sn
v set cc gi tr nu cn:
Wall* MazePrototypeFactory::MakeWall () const {
return _wallPrototype->Clone();
}
Door* MazePrototypeFactory::MakeDoor (Room* r1, Room *r2) const {
Door* door = _doorPrototype->Clone();
door->Initialize(r1, r2);
return door;
}
V d p dng
Chng 11 : Cc mu Creational
151
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 301
thay i maze cn to, ta ch cn cung cp cc factory cho
constructor ca MazePrototypeFactory :
MazeGame game;
MazePrototypeFactory bombedMazeFactory( new Maze, new
BombedWall, new RoomWithABomb, new Door );
Maze* maze = game.CreateMaze(bombedMazeFactory);
Khi b sung phn t sn phm mi (VD: roomWithABomb), khng cn
phi cung cp lp Factory (BombedMazeFactory) sinh ra cc sn
phm ny m ch cn cung cp prototype ca sn phm .
V d p dng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 302
Mu Builder
Chng 11 : Cc mu Creational
Mc tiu : tch vic xy dng i tng phc tp khi vic miu t n
sao cho cng 1 qui trnh xy dng c th to ra nhiu s miu t khc
nhau.
Nhu cu p dng :
Trnh c file RTF cn i file RTF sang 1 s dng khc cha bit
trc nh text th, Tex,... hay sang 1 iu khin son tho text.
Gii php ngh :
+ nh ngha class TextConverter cha cc tc v chuyn i token
c bn.
+ Mi nh dng cn chuyn ti s c m trch bi 1 subclass
ca class TextConverter.
y chnh l phng php ca mu Builder.
152
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 303
V d v mu Builder
Chng 11 : Cc mu Creational
RTFReader
ParseRTF()
builder
while (t=getnexttoken()) {
switch (t.type) {
case CHAR :
builder->ConvertCharacter(t.Char);
break;
case FONT :
builder->ConvertFont(t.Font);
break;
case PARA :
builder->ConvertParagraph();
}
}
ASCIIConverter
ConvertCharacter()
GetASCIIText()
TextConverter
ConvertCharacter()
ConvertFont()
ConvertParagraph()
TeXConverter
ConvertCharacter()
ConvertFont()
ConvertParagraph()
GetTeXText()
TextWidgetConverter
ConvertCharacter()
ConvertFont()
ConvertParagraph()
GetTextWidget()
ASCIIText
TeXText TextWidget
builders
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 304
S cu trc ca mu Builder
Chng 11 : Cc mu Creational
Director
Construct()
builder
forall objects in structure {
builder->BuildPart();
}
Builder
BuildPart()
ConcreteBuilder1
BuildPart()
GetResult()
Product1
builders
ConcreteBuilder2
BuildPart()
GetResult()
Product2
ConcreteBuilder3
BuildPart()
GetResult()
Product3
153
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 305
Director (RTFReader) : xy dng i tng dng interface Builder.
Builder (TextConverter) : cung cp interface xy dng cc phn ca
i tng Product.
ConcreteBuilder (ASCIIConverter, TeXConverter) :
xy dng v lp ghp cc phn ca Product bng cch hin thc
interface ca class Builder.
nh ngha v ghi gi i tng m n to ra.
cung cp interface nhn i tng.
Product (ASCIIText, TeXText) :
miu t i tng phc tp cn xy dng.
bao gm cc class nh ngha cc thnh phn bao gm interface
phc v vic lp ghp cc thnh phn thnh kt qu cui cng.
Cc phn t tham gia
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 306
Mu Builder thng c s dng khi :
gii thut to i tng phc tp nn c lp vi cc phn cu thnh
i tng v cch lp ghp chng.
qui trnh xy dng phi cho php xy dng nhiu bin th khc nhau
ca i tng
Cc ng cnh nn dng mu Builder
Chng 11 : Cc mu Creational
154
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 307
Ta xy dng interface ca builder bng class MazeBuilder sau :
class MazeBuilder {
protected:
MazeBuilder();
public:
// methods:
virtual void BuildMaze() { };
virtual void BuildRoom (int n) { };
virtual void BuildDoor (int roomFrom, int RoomTo) { } ;
virtual Maze* GetMaze() { return 0; };
};
V d p dng
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 308
Ta hiu chnh hm CreateMaze() ca class MazeGame thnh :
Maze* Mazegame::CreateMaze (MazeBuilder& builder) {
builder.BuildMaze();
builder.BuildRoom(1);
builder.BuildRoom(2);
builder.BuildDoor(1,2);
return builder.GetMaze();
}
Ta c th nh ngha cc subclass ca class MazeBuilder to ra cc
Maze khc nhau v to i tng ca subclass ny ri truyn n nh l
tham s ca hm CreateMaze() to cc Maze khc nhau.
V d p dng
Chng 11 : Cc mu Creational
155
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 309
Singleton
Chng 11 : Cc mu Creational
Mc tiu : m bo mi class ch c 1 instance v cung cp 1 im truy
xut ton cc n i tng.
Nhu cu p dng :
ch 1 "printer spooler" qun l cc my in.
ch 1 trnh qun l cho cc file ca h thng file.
ch 1 trnh qun l windows cho cc ca s trn mn desktop...
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 310
S cu trc ca mu Singleton
Chng 11 : Cc mu Creational
return uniqueInstance ;
Singleton
static Instance()
SingletonOperation()
GetSingletonData()
static uniqueInstance
singletonData
156
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 311
Singleton :
nh ngha tc v Instance gip client truy xut instance duy nht ca class.
Instance() l tc v chung ca class (hm static trong C++).
chu trch nhim v vic to instance duy nht cho class.
Cng tc gia cc i tng : cc clients truy xut instance ca class
Singleton thng qua vic gi tc v Instance() ca class.
Cc phn t tham gia
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 312
Trng i Hc Bch Khoa Tp. HCM
Khoa Cng ngh Thng tin
Chng 12
CC MU BEHAVIORAL
Mu Chain of Responsibility
Mu Template Method
Mu Strategy
Mu Command
Mu State
Mu Observer
Chng 11 : Cc mu Creational
157
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 313
Tp trung vo gii thut v s phn b cng vic gia cc object
Class patterns s dng tha k chuyn giao thao tc gia cc class.
Object patterns s dng tnh a hnh v bao gp truyn thao tc t
i tng ny sang i tng khc.
Cc slide sau s gii thiu cc pattern Chain of Responsibility, Template
Method (class pattern), Strategy (object pattern) v Command (object
Pattern),..
Behavioral Patterns
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 314
Mu Chain of Responsibility
Chng 11 : Cc mu Creational
Mc tiu : Trnh vic gn kt cng gia phn t gi request vi phn t
nhn v x l request bng cch cho php hn 1 i tng c c hi x
l request. Lin kt cc i tng nhn request thnh dy chuyn ri
"pass" request xuyn qua tng i tng x l n khi gp i tng x
l c th.
Nhu cu p dng : Trong ng dng c tr gip theo ng cnh th user c
th thu c thng tin tr gip ca 1 phn t giao din no bng cch
ch cn click vo n. Ta nn t chc thng tin tr gip theo tnh tng
qut t phn t c bit nht (nh nht) n tng qut nht (ln nht),
mi thng tin tr gip c x l bi i tng giao din tng ng ph
thuc vo ng cnh.
158
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 315
aPrintButton
handler
anOKButton
handler
aSavingDialog
handler
aPrintDialog
handler
anApplication
handler
Th d v mu Chain of Responsibility
Chng 11 : Cc mu Creational
Th d khi n phi chut vo button OK th trnh tr gip ca OKButton
s chy, n s hoc hin th Help hoc chuyn iu khin cho trnh tr
gip ca Dialog, trnh tr gip ca Dialog c th chuyn iu khin n
Application...
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 316
Th d v mu Chain of Responsibility
Chng 11 : Cc mu Creational
HelpHandler
HandleHelp()
handler
handler->HandleHelp();
Button
HandleHelp()
ShowHelp()
Application Widget
Dialog
if (can handle)
ShowHelp();
else
Handler::HandleHelp();
159
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 317
Lc cu trc ca mu Chain of Responsibility
Chng 11 : Cc mu Creational
Handler
HandleRequest()
successor
ConcreteHandler1
HandleRequest()
Client
ConcreteHandler2
HandleRequest()
aClient
aHandler
aConcreteHandler
successor
aConcreteHandler
successor
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 318
Handler (HelpHandler) :
nh ngha interface ca tc v x l request.
(optional) hin thc mi lin kt n i tng i sau (successor).
ConcreteHandler (PrintButton, PrintDialog) :
x l request m n c trch nhim x l.
c th truy xut i tng i sau.
nu c th x l c request, n s x l, nu khng forward request cho
i tng i sau gii quyt.
Client :
khi ng request v gi ti 1 ConcreteHandler u tin trong dy chuyn.
Cc phn t tham gia
Chng 11 : Cc mu Creational
160
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 319
Thng p dng mu Chain of Responsibility trong cc trng hp sau:
hn 1 i tng c th x l request nhng i tng no s x l th cha
bit trc. i tng x l s c xc nh ng.
bn mun gi request n 1 i tng x l no nhng khng xc nh
r rng.
mun xc nh tp cc i tng x l 1 request no 1 cch ng.
Cc ng cnh nn dng mu Chain of Responsibility
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 320
Template Method
Chng 11 : Cc mu Creational
Mc tiu : nh ngha b khung gii thut trong mt tc v nhng cho
php cc class con hin thc mt s phn ca tc v .
Nhu cu p dng : trong trng hp Windows cho php ngi lp trnh
Hook vo h thng, Windows sn nhng entry m ngi lp trnh
c th chn thm phn x l ca mnh. Ngi lp trnh khng th thay
th trnh t qu trnh x l ca Windows. Phng php lp trnh hng
i tng c th cung cp hng gii quyt nhng vn ny nh sau:
Mt lp nh ngha qu trnh x l bao gm nhiu tc v nh hn, cc tc v
nh hn c th cho lp con override chnh l cc im hook.
Cc lp con tha k hook vo qu trnh x l ca lp cha bng cch
override cc im hook.
Hng tip cn nh trn l ca mu Template Method.
161
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 321
Document
Save()
Open()
Close()
DoRead()
document
Application
AddDocument()
OpenDocument()
DoCreateDocument()
CanOpenDocument()
AboutToOpenDocument()
MyDocument
DoRead()
MyApplication
DoCreateDocument()
CanOpenDocument()
AboutToOpenDocument()
return new MyDocument;
docs
V d v mu Template Method
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 322
AbstractClass
TemplateMethod()
PrimitiveOperation1()
PrimitiveOperation2()
...
PrimitiveOperation1();
...
PrimitiveOperation2();
...
ConcreteClass
PrimitiveOperation1()
PrimitiveOperation2()
S cu trc mu Template Method
Chng 11 : Cc mu Creational
162
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 323
AbstractClass (Application) :
nh ngha cc primitive operation cho lp con override hin thc mt
phn ca hot ng. Cc phng thc ny l im m lp con c th hook
vo code ca lp cha.
hin thc template method, l method nh ngha b khung ca hot ng.
Template method kt hp cc primitive operation thc hin trn vn hot
ng.
ConcreteClass (MyApplication) : hin thc cc primitive operation
can thip mt phn vo qu trnh thc hin hot ng lp cha.
Cc phn t tham gia
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 324
Thng s dng Template method khi cn:
hin thc mt phn c nh ca hot ng v cho php lp con hin thc
phn c th thay i.
tp trung cc hnh vi ging nhau cc lp trnh trng lp.
kim sot qu trnh override ca lp con: ch cho php override nhng im
hook qui nh sn.
Cc ng cnh nn dng mu Template Method
Chng 11 : Cc mu Creational
163
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 325
Mu Strategy
Chng 11 : Cc mu Creational
Mc tiu : Cung cp mt h gii thut v cho php Client chn la linh
ng mt gii thut c th khi s dng.
Nhu cu p dng : Mt s chng trnh c nhiu gii thut khc nhau
cho cng mt vn . Nhu cu pht sinh: qun l cc gii thut mt
cch n gin v cho php client chn mt trong nhng gii thut
s dng mt cch linh ng.
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 326
V d v nhu cu ng dng Strategy
Chng 11 : Cc mu Creational
Chng trnh chi game c th c nhiu gii thut ty vo mc kh
ca cuc chi. Khi ngi chi chn mc kh d chnh l thao tc
chn gii thut. Do i tng gii thut phi tch bit vi code
chng trnh. Mt hng gii quyt c ngh nh sau:
nh ngha 1 interface chung cho cc lp th hin cc gii thut.
nh ngha cc lp concrete hin thc interface trn, mi lp concrete th
hin mt gii thut.
Chng trnh s dng i tng kiu interface v cho php client thay th
bng i tng th hin gii thut c th khi chy.
hng gii quyt vn ca mu Strategy.
164
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 327
Composition
Traverse()
Repair()
compositor->Compose();
compositor
V d v mu Strategy
Chng 11 : Cc mu Creational
Compositor
Compose()
ArrayCompositor
Compose()
TeXCompositor
Compose()
SimpleCompositor
Compose()
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 328
Context
ContextInterface()
strategy
Lc cu trc ca mu Strategy
Chng 11 : Cc mu Creational
Strategy
AlgorithmInterface()
ConcreteStrategyA
AlgorithmInterface()
ConcreteStrategyB
AlgorithmInterface()
ConcreteStrategyC
AlgorithmInterface()
165
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 329
Strategy (Compositor) : nh ngha interface cho tt c cc lp th hin
gii thut. C th nhn pointer n i tng Context trong qu trnh
khi to i tng truy xut d liu trong Context.
ConcreteStrategy (SimpleCompositor, TeXCompositor..) : hin thc
interface Strategy, th hin mt gii thut c th.
Context (Composition) :
ti thi im dch: ch s dng i tng kiu Strategy khi xc nh gii thut
cho vn cn x l.
ti thi im run-time: c cung cp mt i tng gii thut c th thay
th cho i tng Strategy.
c th cung cp entry cho php i tung kiu Strategy truy xut d liu.
Cc phn t tham gia
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 330
Thng p dng mu Strategy trong cc trng hp sau:
Mt lp c nhiu hnh vi loi loi tr ln nhau v qu trnh chuyn t hnh
vi ny sang hnh vi khc cn c thc hin d dng. Khi mi hnh vi s
c th hin trong 1 lp Concrete Strategy v lp c nhiu hnh vi l lp
Strategy.
Gii thut cn c che du c v d liu v cu trc i vi chng trnh
Client.
Mt s chng trnh c th p dng Strategy :
Compiler, OS: qu trnh ti u ha
Game: Qu trnh chn gii thut
Cc giao din tng qut (common dialog trong VB)
Cc ng cnh nn dng mu Strategy
Chng 11 : Cc mu Creational
166
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 331
Mu Command
Chng 11 : Cc mu Creational
Mc tiu : ng gi request vo trong mt Object, nh c th thng
s ha chng trnh nhn request v thc hin cc thao tc trn
request: sp xp, log, undo
Nhu cu p dng : i khi chng ta cn gi request n i tng nhng
khng bit c hnh ng s c thc thi cng nh nhng i tng
b tc ng bi request . V d user interface toolkit cn xy dng
trc vic truyn request n menu v button nhng ch c ng dng c
th mi xc nh c hnh ng khi click vo chng. Vn ny c th
c gii quyt nh sau:
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 332
V d v nhu cu ng dng mu Command
Chng 11 : Cc mu Creational
Xy dng lp tru tng Command, trong c phng thc tru tng
Execute().
Menu hay button gi lin kt n i tng kiu Command
Request c ng gi trong cc i tng tha k Command. Cc i
tng ny override phng thc Execute() xc nh hnh ng khi thc
thi request.
Khi ng dng cn gi request n cho menu hay button ch cn gi i
tng c ng gi request i. Menu hay button s gi phng thc
Execute() trn i tng .
167
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 333
V d v mu Command
Chng 11 : Cc mu Creational
Menu
Add(MenuItem)
Command
Execute()
command
command->Execute();
Document
Open()
Close()
Cut()
Copy()
Paste()
Application
Add(Document)
MenuItem
Clicked()
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 334
V d v mu Command
Chng 11 : Cc mu Creational
Command
Execute()
PasteCommand
Execute()
Document
Open()
Close()
Cut()
Copy()
Paste()
document
document->Paste();
Th d i tng PasteCommand h tr hot ng dn text t clipboard
vo 1 ti liu. Phn t nhn ca PasteCommand l i tng Document
m PasteCommand c cung cp trong lc "instantiation". tc v
Execute gi chc nng Paste trn Document nhn c.
168
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 335
V d v mu Command
Chng 11 : Cc mu Creational
Tc v Execute ca OpenCommand th khc : n hin th ca s yu
cu user nhp tn document ri to i tng Document tng ng,
"add" document vo ng dng nhn ri m document.
Command
Execute()
OpenCommand
Execute()
AskUser()
Application
Add(Document)
application
name = AskUser();
doc = new Document(name);
application-.Add(doc);
doc->Open();
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 336
V d v mu Command
Chng 11 : Cc mu Creational
i khi 1 option Menu cn thc thi 1 chui cc lnh, chng ta c th
nh ngha class MacroCommand cho php thi hnh 1 s lnh cha
bit trc.
Command
Execute()
MacroCommand
Execute()
commands
forall c in commands
c->Execute();
169
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 337
Lc class ca mu Command
Chng 11 : Cc mu Creational
Command
Execute()
receiver
receiver->Action();
Invoker Client
Receiver
Action() ConcreteCommand
Execute()
state
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 338
Command : Khai bo cc phng thc o (Execute()) gi thc thi
hay qun l request.
ConcreteCommand (PasteCommand, OpenCommand):
Xc nh i tng nhn tng tc (i tng lp Receiver).
Override phng thc Execute trong lp Command p ng request.
Client (Application) : khi to i tng ConcreteCommand v truyn
i tng nhn tng tc cho n.
Invoker (MenuItem): gi request n i tng Command.
Receiver (Document, Application) :
i tng nhn tng tc trong ConcreteCommand.
Bit cch thc hin nhng hnh ng p ng request.
Cc phn t tham gia
Chng 11 : Cc mu Creational
170
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 339
Qu trnh cng tc gia cc phn t
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 340
Thng s ha i tng bng hnh vi m i tng thc thi. Ngha l
mt entry ca i tng c th thc thi nhiu hnh vi khc nhau ty
thuc vo thng s (l i tng khc) truyn cho n.
Qun l, lu tr v thc thi request ti nhng thi im khc nhau. V
trong mu Command, request c lu tr trong cc i tng nn vic
lu tr v qun l request ch l vic lu tr v qun l cc i tng.
H tr undo, redo cc thao tc. Phng thc Execute() c th lu trng
thi c ca i tng Receiver phc hi li khi c yu cu.
H tr vic log li cc thay i trn i tng Receiver c th thc
hin tr li trong trng hp ng dng cha lu i tng Receiver
thay i m h thng li b hng. (V d MS Word c chc nng
recovery).
Cc h thng h tr transaction. Trng hp ny c th kt hp mu
Template Method.
Cc ng cnh nn dng mu Command
Chng 11 : Cc mu Creational
171
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 341
Mu State
Chng 11 : Cc mu Creational
Mc tiu : cho php 1 i tng thay i hnh vi khi trng thi bn trong
ca n thay i. Ta c cm gic nh class ca i tng b thay i.
Nhu cu p dng : trong class TCPConnection miu t 1 mi ni mng,
i tng TCPConnection c th 1 trong nhiu trng thi : Established,
Listening, Closed. Khi i tng TCPConnection nhn request, n s
p ng khc nhau ty vo trng thi hin hnh.
hng gii quyt vn ca mu State.
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 342
state->Open();
state
V d v mu State
Chng 11 : Cc mu Creational
TCPState
Open()
Close()
Acknowledge()
TCPConnection
Open()
Close()
Acknowledge()
TCPEstablished
Open()
Close()
Acknowledge()
TCPListen
Open()
Close()
Acknowledge()
TCPClosed
Open()
Close()
Acknowledge()
172
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 343
Lc cu trc ca mu State
Chng 11 : Cc mu Creational
state->Handle();
state
State
Handle()
...
Context
Request()
...
ConcreteStateA
Handle()
...
ConcreteStateB
Handle()
...
ConcreteStateC
Handle()
...
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 344
Context (TCPConnection) :
nh ngha interface cn dng cho client.
duy tr 1 tham kho n i tng ca 1 class con ConcreteState m nh
ngha trng thi hin hnh.
State (TCPState) :
nh ngha interface nhm bao ng hnh vi kt hp vi trng thi c th.
duy tr 1 tham kho n i tng ca 1 class con ConcreteState m nh
ngha trng thi hin hnh.
ConcreteState (TCPEstablished, TCPListen, TCPClose) :
nh ngha hnh vi c th kt hp vi trng thi ca mnh.
Cc phn t tham gia
Chng 11 : Cc mu Creational
173
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 345
Thng p dng mu State trong cc trng hp sau:
hnh vi ca i tng ph thuc vo trng thi ca n v phi thay i run-
time khi trng thi thay i.
cc tc v c nhng lnh iu kin s hc ln ph thuc vo trng thi i
tng.
Cc ng cnh nn dng mu State
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 346
Mu Observer
Chng 11 : Cc mu Creational
Mc tiu : nh ngha s ph thuc 1-n gia cc i tng sao cho khi 1
i tng thay i trng thi th cc i tng ph thuc c cnh bo
hu hiu chnh t ng ( m bo tnh nht qun).
Nhu cu p dng : trong ng dng qun l bng tnh, mi bng tnh l 1
database nhng n c trnh by di nhiu dng khc nhau nh
spreadsheet, barchart, piechart,... Mi khi ni dung database thay i ta
mun cp nht ng thi nhiu dng biu din n.
hng gii quyt vn ca mu Observer.
174
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 347
V d v mu Observer
Chng 11 : Cc mu Creational
Spreadsheet BarChart PieChart
Database
request, modification
thay i, notification
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 348
Lc cu trc ca mu Observer
Chng 11 : Cc mu Creational
forall o in observers
o->Update();
observers
Observer
Update()
Subject
Attach(Observer)
Detach(Observer)
Notify()
ConcreteObserver
Update()
observerState
observerState =
subject->GetState();
return subjectState();
ConcreteSubject
GetState()
SetState()
subjectState
175
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 349
Subject :
bit observer ca n. C th c nhiu observer quan st 1 subject.
cung cp interface Attach va Detach cc observer vo mnh.
Observer :
nh ngha interface hiu chnh cho cc i tng m s c cnh bo
hiu chnh subject ca mnh.
ConcreteSubject :
lu trng thi lu ti cc i tng ConcreteObserver.
gi cnh bo ti cc observer khi trng thi ca n thay i.
Concretebserver :
duy tr tham kho ti i tng ConcreteSubject.
lu trng thi m cn phi lun nht qun vi subject ca mnh.
hin thc interface hiu chnh gi trng thi lun nht qun vi subject
ca mnh.
Cc phn t tham gia
Chng 11 : Cc mu Creational
B mn Cng ngh phn mm
Khoa CNTT
H Bach Khoa Tp.HCM
Mn Phn tch & Thit k hng i tng dng UML
Slide 350
Thng p dng mu State trong cc trng hp sau:
khi 1 s tru tng c 2 kha cnh ph thuc ln nhau. Bao ng cc kha
cnh ny trong nhng i tng c lp gip ta thay i v dng li chng
c lp.
khi vic thay i i tng ny i hi phi thay i cc i tng khc
nhng bn khng bit trc c bao nhiu i tng cn thay i.
khi i tng cn c kh nng cnh bo cc i tng khc nhng khng
mun chng ghp ni cht vi nhau.
Cc ng cnh nn dng mu Observer
Chng 11 : Cc mu Creational

You might also like