Tài liệu Phân tích và thiết kế hướng đối tượng: 1Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 1
Trương Đai hoc Bach Khoa Tp. Hử̀ Chủ Minh
Khoa Cửng Nghù Thửng Tin
Mửn hoc
PHấN TẹCH & THIẽT Kẽ
HƯƠNG ĐệI TƯƠNG
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 2
Tai liùu tham khao chủnh
[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 Applicat...
175 trang |
Chia sẻ: Khủng Long | Lượt xem: 846 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Phân tích và thiết kế hướng đối tượng, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
1Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 1
Trương Đai hoc Bach Khoa Tp. Hử̀ Chủ Minh
Khoa Cửng Nghù Thửng Tin
Mửn hoc
PHấN TẹCH & THIẽT Kẽ
HƯƠNG ĐệI TƯƠNG
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 2
Tai liùu tham khao chủnh
[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
2Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 3
Trương Đai hoc Bach Khoa Tp. Hử̀ Chủ Minh
Khoa Cửng Nghù Thửng Tin
Chương 1
CAC KHAI NIẽM CƠ BAN CUA
Mệ HềNH HƯƠNG ĐệI TƯƠNG
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 4
Nửi dung
1.1 Tư lờp trũnh co cờ́u truc ₫ù́n OOP
1.2 Đử́i tương, thuửc tủnh, tac vu.
1.3 Abstract type va class.
1.4 Tủnh bao ₫ong.
1.5 Tủnh thưa kù́ va cơ chù́ 'override'.
1.6 Tủnh bao gửp.
1.7 Thửng ₫iùp, tủnh ₫a hũnh va kiù̉m tra kiù̉u.
1.8 Tủnh tử̉ng quat hoa.
1.9 Tủnh vưng bù̀n.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
3Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 5
1. May tủnh sử́ la thiù́t bị co thù̉ thưc hiùn 1 sử́ hưu han cac chưc năng
cơ ban (tờp lùnh), cơ chù́ thưc hiùn cac lùnh la tư ₫ửng tư lùnh ₫ờ̀u
cho ₫ù́n lùnh cuử́i cung. Danh sach cac lùnh ₫ươc thưc hiùn nay
₫ươc goi la chương trũnh.
2. bờ́t ky cửng viùc ngoai ₫ơi nao cung co thù̉ ₫ươc chia thanh trũnh tư
nhiù̀u cửng viùc nho hơn. Trũnh tư cac cửng viùc nho nay ₫ươc goi
la giai thuờt giai quyù́t cửng viùc ngoai ₫ơi. Mử̃i cửng viùc nho hơn
cung co thù̉ ₫ươc chia nho nưa,... ⇒ cửng viùc ngoai ₫ơi la 1 trũnh
tư cac lùnh may (chương trũnh).
3. vờ́n ₫ù̀ mờ́u chử́t cua viùc dung may tủnh giai quyù́t vờ́n ₫ù̀ ngoai
₫ơi la lờp trũnh. Cho ₫ù́n nay, lờp trũnh la cửng viùc cua con ngươi
(vơi sư trơ giup ngay cang nhiù̀u cua may tủnh).
4. cac lùnh cua chương trũnh (code) phai tham khao hoăc xư ly (truy
xuờ́t) thửng tin (dư liùu).
Tư lờp trũnh co cờ́u truc ₫ù́n OOP
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 6
Tư lờp trũnh co cờ́u truc ₫ù́n OOP
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
5. Dư liùu cua 1 chương trũnh co thù̉ rờ́t nhiù̀u va ₫a dang. Đù̉ truy
xuờ́t ₫ung 1 dư liùu ta cờ̀n :
- tùn nhờn dang.
- kiù̉u dư liùu miùu ta cờ́u truc dư liùu.
- tờ̀m vưc truy xuờ́t miùu ta giơi han khach hang truy xuờ́t dư
liùu.
6. Chương trũnh cử̉ ₫iù̉n = giai thuờt + dư liùu.
7. Chương trũnh con (function, subroutine,...) cho phep cờ́u truc
chương trũnh, sư dung lai code...
8. Chương trũnh cử̉ ₫iù̉n co cờ́u truc phờn cờ́p như sau :
4Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 7
Chương trũnh = cờ́u truc dư liùu + giai thuờt
entry 'start'
global datamodule
(package)
local data
of module
local data
of function
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Tư lờp trũnh co cờ́u truc ₫ù́n OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 8
Chương trũnh = tờp cac ₫ử́i tương tương tac nhau
entry
₫ử́i tương
(object)
local data
of object
local data
of operation
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Tư lờp trũnh co cờ́u truc ₫ù́n OOP
5Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 9
Tử̉ng quat vù̀ hương ₫ử́i tương
Mử hũnh hương ₫ử́i tương giơi thiùu 1 quan ₫iù̉m lờp trũnh
(va phờn tủch/thiù́t kù́) khac hăn so vơi trương phai cử̉ ₫iù̉n
(co cờ́u truc).
Băt ₫ờ̀u nhen nhom vao nhưng năm cuử́i 60s va ₫ù́n ₫ờ̀u
90s thũ trơ nùn rờ́t phử̉ biù́n trong cửng nghiùp phờ̀n mù̀m.
Nhưng ngửn ngư hương ₫ử́i tương ₫ờ̀u tiùn : Smalltalk,
Eiffel. Sau ₫o xuờ́t hiùn thùm : Object Pascal, C++, Java,
C#,
Hũnh thanh cac phương phap phờn tủch/thiù́t kù́ hương ₫ử́i
tương.
Va hiùn nay ta co 1 qui trũnh phat triù̉n phờ̀n mù̀m hơp nhờ́t
dưa trùn ngửn ngư UML.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 10
Đử́i tương (Object)
~ Mử hũnh ₫ử́i tương quan niùm chương trũnh bao gử̀m cac ₫ử́i
tương sinh sử́ng va tương tac vơi nhau.
~ Đử́i tương bao gử̀m :
thuửc tủnh (dư liùu) : mang 1 gia trị nhờ́t ₫ịnh tai tưng thơi ₫iù̉m.
tac vu (operation) : thưc hiùn 1 cửng viùc nao ₫o.
Interface
(abstract type)
Implementation
(class)
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
6Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 11
Kiù̉u trưu tương (Abstract type)
~ Abstract type (type) ₫ịnh nghĩa interface sư dung ₫ử́i tương.
~ Interface la tờp cac entry ma bùn ngoai co thù̉ giao tiù́p vơi ₫ử́i
tương.
~ Dung signature ₫ù̉ ₫ịnh nghĩa mử̃i entry, Signature gử̀m :
tùn method (operation)
danh sach ₫ử́i sử́ hũnh thưc, mử̃i ₫ử́i sử́ ₫ươc ₫ăc ta bơi 3
thuửc tủnh : tùn, type va chiù̀u chuyù̉n ₫ửng (IN, OUT,
INOUT).
₫ăc ta chưc năng cua method (thương la chu thủch).
~ Dung abstract type (chư khửng phai class) ₫ù̉ ₫ăc ta kiù̉u cho
biù́n, thuửc tủnh, tham sử́ hũnh thưc.
~ User khửng cờ̀n quan tờm ₫ù́n class (hiùn thưc cu thù̉) cua ₫ử́i
tương.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 12
Class (Implementation)
~ Class ₫ịnh nghĩa chi tiù́t hiùn thưc ₫ử́i tương :
₫ịnh nghĩa cac thuửc tủnh dư liùu : gia trị cua tờ́t ca thuửc
tủnh xac ₫ịnh trang thai cua ₫ử́i tương.
kiù̉u cua thuửc tủnh co thù̉ la type cử̉ ₫iù̉n hay abstract type,
trong trương hơp sau thuửc tủnh chưa tham khao ₫ù́n ₫ử́i
tương khac.
coding cac method va cac internal function.
~ Định nghĩa cac method tao va xoa ₫ử́i tương.
~ Định nghĩa cac method constructor va destructor.
~ User khửng cờ̀n quan tờn ₫ù́n class cua ₫ử́i tương.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
7Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 13
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
}
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 14
Tủnh bao ₫ong (encapsulation)
z Bao ₫ong : che dờ́u moi chi tiù́t hiùn thưc cua ₫ử́i tương,
khửng cho bùn ngoai thờ́y va truy xuờ́t ⇒ tủnh ₫ửc lờp cao
giưa cac ₫ử́i tương (hay tủnh kù́t dủnh - cohesion giưa cac
₫ử́i tương rờ́t thờ́p).
che dờ́u cac thuửc tủnh dư liùu : nù́u cờ̀n cho phep truy
xuờ́t 1 thuửc tủnh dư liùu, ta tao 2 method get/set tương
ưng ₫ù̉ giam sat viùc truy xuờ́t va che dờ́u chi tiù́t hiùn
thưc bùn trong.
che dờ́u chi tiù́t hiùn thưc cac method.
che dờ́u cac internal function va sư hiùn thưc cua chung.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
8Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 15
Tủnh thưa kù́ (inheritance)
~ Tủnh thưa kù́ cho phep giam nhe cửng sưc ₫ịnh nghĩa
type/class : ta co thù̉ ₫ịnh nghĩa cac type/class khửng phai
tư ₫ờ̀u ma băng cach kù́ thưa type/class co săn, ta chỉ ₫ịnh
nghĩa thùm cac chi tiù́t mơi ma thửi (thương kha ủt).
Đa thưa kù́ hay ₫ơn thưa kù́.
Mử́i quan hù supertype/subtype va superclass/subclass.
co thù̉ override cac method cua class cha, kù́t qua
override chỉ co nghĩa trong ₫ử́i tương class con.
Đử́i tương cua class con co thù̉ ₫ong vai tro cua ₫ử́i
tương cha nhưng ngươc lai thương khửng ₫ung.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 16
Vủ du vù̀ thưa 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 lứnh ve ₫oan thăng
}
}
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
9Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 17
Tủnh bao gửp (aggregation)
1 ₫ử́i tương co thù̉ chưa nhiù̀u ₫ử́i tương khac tao nùn mử́i
quan hù bao gửp 1 cach ₫ù qui giưa cac ₫ử́i tương.
Co 2 goc nhũn vù̀ tủnh bao gửp : ngư nghĩa va hiùn thưc.
O1
O2
O3
Goc nhũn ngư nghĩa Goc nhũn hiùn
thưc
O1
O2
O3
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 18
Vủ du vù̀ bao gửp - 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;
};
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
10
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 19
Thửng ₫iùp (Message)
~ Thửng ₫iùp la 1 phep goi tac vu ₫ù́n 1 ₫ử́i tương tư 1
tham khao.
~ Thửng ₫iùp bao gử̀m 3 phờ̀n :
tham khao ₫ù́n ₫ử́i tương ₫ủch.
tùn tac vu muử́n goi.
danh sach tham sử́ thưc cờ̀n truyù̀n theo (hay nhờn vù̀ tư)
tac vu.
vủ du : aCircle.SetRadius (3); aCircle.Draw (pWnd);
~ Thửng ₫iùp la phương tiùn giao tiù́p (hay tương tac)
duy nhờ́t giưa cac ₫ử́i tương.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 20
Tủnh ₫a xa (Polymorphism)
~ Cung 1 lùnh gơi thửng ₫iùp ₫ù́n ₫ử́i tương thửng qua cung 1
tham khao nhưng ơ vị trủ/thơi ₫iù̉m khac nhau co thù̉ gờy ra
viùc thưc thi method khac nhau cua cac ₫ử́i tương khac
nhau.
T1 p1; // C1 va C2 la 2 class hiùn thưc T1
...
p1 = New C1; // tao ₫ử́i tương C1, gan tham khao vao p1
p1.meth1(...);
...
p1 = New C2; // tao ₫ử́i tương C2, gan tham khao vao p1
p1.meth1(...);
Lùnh p1.meth1(...); ơ 2 vị trủ khac nhau kủch hoat 2 method
khac nhau cua 2 class khac nhau.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
11
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 21
Kiù̉m tra kiù̉u (type check)
~ Chăt va dung mử́i quan hù 'conformity' (tương thủch tử̉ng
quat). Type A tương thủch vơi type B ⇔ A chưa moi method
cua B va ưng vơi tưng method cua B :
tử̀n tai 1 method cung tùn trong A.
danh sach ₫ử́i sử́ cua 2 method tương ưng phai băng
nhau.
kiù̉u ₫ử́i sử́ OUT hay gia trị return cua method trong A
phai tương thủch vơi kiù̉u cua ₫ử́i sử́ tương ưng trong B.
kiù̉u ₫ử́i sử́ IN cua method trong B phai tương thủch vơi
kiù̉u cua ₫ử́i sử́ tương ưng trong A.
kiù̉u ₫ử́i sử́ INOUT cua method trong A phai trung vơi
kiù̉u cua ₫ử́i sử́ tương ưng trong B.
ệ quan hù so trung hay quan hù con/cha (sub/super) la trương
hơp ₫ăc biùt cua quan hù tương thủch tử̉ng quat.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 22
Tủnh tử̉ng quat hoa (Generalization)
~ Co 2 ngư nghĩa khac nhau cua tủnh tử̉ng quat hoa :
class tử̉ng quat hoa cho phep san sinh tư ₫ửng cac
class bũnh thương, cac class bũnh thương tư no chỉ co
thù̉ tao ra ₫ử́i tương. Thương dung ngư nghĩa nay trong
giai ₫oan lờp trũnh.
ngươc vơi tủnh thưa kù́ : supertype/superclass la
type/class tử̉ng quat hoa cua cac con cua no. Thương
dung ngư nghĩa nay trong giai ₫oan phờn tủch/thiù́t kù́
phờ̀n mù̀m.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
12
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 23
Tủnh thương tru (persistence)
~ ₫ơi sử́ng cua 1 ₫ử́i tương ₫ửc lờp vơi ₫ơi sử́ng cua phờ̀n tư
tao ra no.
₫ử́i tương phai tử̀n tai khi con ủt nhờ́t 1 tham khao ₫ù́n no
trong hù thử́ng.
₫ử́i tương phai bị xoa khi khửng con tham khao nao ₫ù́n
no, vũ tai thơi ₫iù̉m nay ₫ử́i tương la rac. Viùc xac ₫ịnh
chủnh xac 1 ₫ử́i tương co phai la rac hay khửng la 1 viùc
phưc tap code ưng dung khửng ₫ươc phep lam, ₫ờy la
cửng viùc cua hù thử́ng thửng qua module 'garbage
collection'.
vưng bù̀n khửng phai la vĩnh hăng, mưc ₫ử co thù̉ la 1
session cua may ao (JVM) hay lùu dai (thửng qua ₫ĩa
cưng, CDROM).
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 24
Tử̉ng kù́t
~ Mử hũnh hương ₫ử́i tương quan niùm thù́ giơi (hay chương trũnh)
bao gử̀m cac ₫ử́i tương sử́ng chung va tương tac vơi nhau.
~ Cac ₫ăc ₫iù̉m chủnh cua hương ₫ử́i tương :
Bao ₫ong : mử̃i ₫ử́i tương bao gử̀m dư liùu va tac vu. Cac tac vu thiù́t
lờp nùn hanh vi cua ₫ử́i tương. Cac ₫ử́i tương ₫ươc phờn loai băng
class.
Cac ₫ử́i tương tương tac vơi nhau băng cach gơi thửng ₫iùp.
giưa cac class/₫ử́i tương co thù̉ tử̀n tai quan hù bao gửp, thưa kù́, tử̉ng
quat hoa.
Tủnh ₫a hũnh : kù́t qua cua sư kiù̉m tra kiù̉u dưa vao mử́i quan hù
'conformity'.
Tủnh vưng bù̀n : ₫ử́i tương tử̀n tai khi con ủt nhờ́t 1 tham khao ₫ù́n no.
Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương
13
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 25
Chương 2
THẹ DU Vẽ NGệN NGƯ OOP
) Visual C++
) Java
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Trương Đai hoc Bach Khoa Tp. Hử̀ Chủ Minh
Khoa Cửng Nghù Thửng Tin
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 26
2.1 Ngửn ngư Visual C++
1. Chỉ hử̃ trơ khai niùm class.
2. Cho phep Đa thưa kù́.
3. Dung 'abstract class' ₫ù̉ ₫ịnh nghĩa interface.
4. Tờ̀m vưc truy xuờ́t cac thanh phờ̀n.
5. Đa hũnh co chon loc nhơ 'virtual function'
6. Chỉ hử̃ trơ cac ₫ử́i tương tam.
7. Override method khi thưa kù́.
8. Co thù̉ ₫ịnh nghĩa function overloaded.
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
14
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 27
Chỉ hử̃ trơ khai niùm class
1. Dung class ₫ù̉ ₫ịnh nghĩa kiù̉u cho cac biù́n, thuửc tủnh
⇒ ₫ử́i tương co thù̉ chưa vờt ly ₫ử́i tương khac hay chưa tham
khao ₫ù́n ₫ử́i tương khac.
2. Đa thưa kù́ trong ₫ịnh nghĩa class ⇒ 1 class co thù̉ chưa nhiù̀u
class con trung nhau ⇒ dung "virtual base class" ₫ù̉ tử́i ưu hoa
bử nhơ ₫ử́i tương.
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 28
Class trưu tương (Abstract class)
3. Hử̃ trơ khai niùm "abstract class" ₫ù̉ ₫ịnh nghĩa class chỉ chưa
thửng tin interface nhưng khửng cho phep dung class nay ₫ù̉
₫ịnh nghĩa kiù̉u cho biù́n hay thuửc tủnh. 1 abstract class la 1
class chưa ủt nhờ́t 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;
};
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
15
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 29
Tờ̀m vưc truy xuờ́t thanh viùn
4. Tờ̀m vưc truy xuờ́t thửng tin trong ₫ử́i tương :
private : thửng tin bị che dờ́u hoan toan.
protected : chỉ che dờ́u bùn ngoai nhưng cho phep cac ₫ử́i
tương con, chau, chăt... truy xuờ́t.
public : cho phep tờ́t ca moi nơi truy xuờ́t.
Friend class : la class ma mử̃i function cua no ₫ù̀u co thù̉ truy
xuờ́t tư do mử̃i thanh phờ̀n cua class hiùn tai.
Friend function : la function co thù̉ truy xuờ́t tư do mử̃i thanh
phờ̀n cua class hiùn tai.
Co thù̉ han chù́ tờ̀m vưc cua thanh viùn cua class cha khi thưa
kù́.
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 30
Hử̃ trơ tủnh ₫a hũnh co chon loc
5. Định nghĩa 'virtual function' nù́u muử́n ap dung tủnh ₫a hũnh
trong viùc gơi thửng bao yùu cờ̀u function nay thưc thi.
Tờ́t 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
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
16
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 31
Cac ₫ử́i tương ₫ù̀u tam thơi
6. Cac ₫ử́i tương chỉ tử̀n tai tam thơi trong khửng gian process.
Tham khao ₫ù́n ₫ử́i tương thưc chờ́t la pointer cuc bử.
chương trũnh phai tư viù́t code cho hoat ₫ửng save/restore ₫ử́i
tương nù́u muử́n lưu giư/dung lai ₫ử́i tương.
VC++ hử̃ trơ hoat ₫ửng save/restore ₫ử́i tương nhơ kha năng
'Serialization'.
7. Co quyù̀n 'override' bờ́t ky toan tư hay function nao cua class
cha.
8. Cho phep ₫ịnh nghĩa cac ham 'overloaded' : cung tùn nhưng
'signature' khac nhau.
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 32
Skeleton ₫ịnh nghĩa 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 {....};
....
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
17
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 33
Cờ́u truc 1 chương trũnh Dialog based ₫ơn gian
InitInstance()
DoModal()
CProgramApp
CProgramDlg
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 34
Cờ́u truc 1 chương trũnh SDI ₫ơn gian
InitInstance()
CProgramApp
CSingleDocTemplate
CMainFrame
CProgramView CProgramDoc
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
18
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 35
Cờ́u truc 1 chương trũnh MDI ₫ơn gian
InitInstance()
CProgramApp
CMultiDocTemplate
CChildFrame
CProgramView CProgramDoc
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 36
2.2 Ngửn ngư Java
1. Hử̃ trơ 'interface' (1 dang cua type) va class.
2. Hử̃ trơ Đơn thưa kù́.
3. Dung 'abstract class' ₫ù̉ ₫ịnh nghĩa interface.
4. Tờ̀m vưc truy xuờ́t cac thanh phờ̀n.
5. Hử̃ trơ package
6. Đa hũnh ₫ờ̀y ₫u.
7. Chỉ hử̃ trơ ₫ử́i tương tam trong session JVM
8. Override function khi thưa kù́.
9. Co thù̉ ₫ịnh nghĩa function overloaded.
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
19
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 37
1. Chu yù́u dung class ₫ù̉ ₫ịnh nghĩa kiù̉u cho cac biù́n, thuửc
tủnh.
Co thù̉ dung interface ₫ù̉ ₫ịnh nghĩa kiù̉u cho cac biù́n, thuửc
tủnh. Đử́i tương chỉ co thù̉ chưa tham khao ₫ù́n ₫ử́i tương khac.
2. Phai goi ham tao ₫ử́i tương 1 cach tương minh, nhưng khửng
₫ươc xoa ₫ử́i tương.
class C1 extends RootClass {...}
C1 o1; // o1 chưa tham khao ₫ù́n ₫ử́i tương C1
o1 = New C1;
3. Interface chỉ ₫ươc dung trong trương hơp ₫ăc biùt va khửng
tương ₫ương vơi abstract type.
4. Đơn thưa kù́ trong ₫ịnh nghĩa class ⇒ mử́i quan hù thưa kù́
giưa cac class kha ₫ơn gian.
Hử̃ trơ Class va Interface
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 38
Hử̃ trơ abstract class
5. Hử̃ trơ khai niùm "abstract class" ₫ù̉ ₫ịnh nghĩa class chưa
thửng tin interface va khửng cho phep 'instanciate' ₫ử́i tương.
Ban chỉ co thù̉ dung class 'abstract class' ₫ù̉ ₫ăc ta kiù̉u cho
cac biù́n hoăc ₫ịnh nghĩa 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ù̉ chưa ₫ờ̀y ₫u cac hiùn thưc bùn trong,
nhưng thương chỉ co chưa cac 'abstract function'.
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
20
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 39
Tờ̀m vưc truy xuờ́t cac thanh phờ̀n
6. Tờ̀m vưc truy xuờ́t cac thanh phờ̀n trong ₫ử́i tương :
private : thanh phờ̀n bị che dờ́u hoan toan.
protected : che dờ́u bùn ngoai nhưng cho phep cac ₫ử́i tương
con, chau, chăt... truy xuờ́t.
public : cho phep tờ́t ca moi nơi truy xuờ́t.
friendly : cho phep moi phờ̀n tư trong package truy xuờ́t. Đờy
la tờ̀m vưc default va khửng co tư khoa tờ̀m vưc tương minh.
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 40
7. Package la ₫ơn vị quan ly tờ̀m vưc cua java, co thù̉ chưa nhiù̀u
class.
package graphics;
public class Circle extends Graphic implements Draggable {
. . .
}
Tờ́t ca moi phờ̀n tư ₫ươc ₫ịnh nghĩa trong 1 file source ₫ù̀u
thuửc 1 package : tùn ₫ươc qui ₫ịnh bơi phat biù̉u package hay
la package default.
Nhiù̀u file source co thù̉ thuửc cung 1package (dung cung tùn
trong phat biù̉u package).
Hử̃ trơ package
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
21
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 41
Hử̃ trơ ₫ờ̀y ₫u tủnh ₫a hũnh
8. Tờ́t 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
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 42
Cac ₫ử́i tương ₫ù̀u 'tam thơi'
9. Cac ₫ử́i tương chỉ tử̀n tai tam thơi trong 1session chay JVM.
Ban co thù̉ tao ra cac ₫ử́i tương mơi ma khửng cờ̀n xoa no.
Đử́i tương se tử̀n tai mửt khi con tham khao ₫ù́n no. Module
Garbage Collection trong JVM se chịu trach nhiùm phat hiùn
₫ử́i tương 'rac' va xoa no ra khoi bử nhơ JVM.
10.Co quyù̀n 'override' bờ́t ky function nao cua class cha.
11.Cho phep ₫ịnh nghĩa cac ham 'overloaded' : cung tùn nhưng
'signature' khac nhau.
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
22
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 43
Thủ du vù̀ chương trũnh Java
import java.net.*;
public class getnet {
public static void main(String args[]) {
try {
if(args.length!=1) {
System.out.println("Usage: java AddrLookupApp ");
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) {...}
}
}
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 44
Thủ du vù̀ chương trũnh Java
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
12.34.25
AlarmClock
GUIClock
wakeup()
>
23
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 45
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;
}
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 46
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;
}
}
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
24
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 47
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;
}
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 48
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);
}
}
}
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
25
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 49
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();
}
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 50
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);
}
}
Chương 2: Thủ du vù̀ cac ngửn ngư OOP
26
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 51
Trương Đai Hoc Bach Khoa Tp. HCM
Khoa Cửng nghù Thửng tin
Chương 3
NGUYẽN TẶC DỊCH OOP
) Dịch abstract type
) Dịch class
Chương 3: Nguyùn tăc dịch OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 52
• Chương trũnh la 1 tờp cac ₫ử́i tương sử́ng va tương
tac lờ̃n nhau.
• Cac ₫ử́i tương thuửc 1 sử́ loai nhờ́t ₫ịnh (n)
• Mử̃i loai ₫ử́i tương ₫ươc miùu ta bơi 1 type + 1 class
• Chương trũnh la tờp n ₫ịnh nghĩa type + class
• Dịch chương trũnh OOP la vong lăp dịch n type + n
class.
• Ta se miùu ta qui trũnh dịch 1 type va 1 class
Tử̉ng quat vù̀ vờ́n ₫ù̀ dịch OOP
Chương 3: Nguyùn tăc dịch OOP
27
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 53
• Abstract type chỉ chưa thửng tin trưu tương
(interface), khửng miùu ta sư hiùn thưc→ Kù́t qua
viùc dịch 1 type chỉ dưng lai cờy ngư nghĩa cua type
tương ưng ₫ù̉ phuc vu viùc kiù̉m tra kiù̉u, chư khửng
tao code ma may.
• Chỉ cờ̀n 3 bươc : duyùt tư vưng, phờn tủch cu phap,
phờn tủch ngư canh.
• Nùn dung cửng cu hử̃ trơ như LEX, YACC.
Dịch 1 abstract type
Chương 3: Nguyùn tăc dịch OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 54
Chương 3: Nguyùn tăc dịch OOP
• Dịch class la cửng viùc chủnh cua chương trũnh dịch
OOP.
• Gử̀m 2 cửng viùc chủnh : dịch thuửc tủnh dư liùu va
dịch cac method (hay cac internal function).
• Cờ̀n ₫ờ̀y ₫u cac bươc : duyùt tư vưng, phờn tủch cu
phap, phờn tủch ngư canh, tao ma.
• Nùn dung cửng cu hử̃ trơ như LEX, YACC.
Dịch 1 class
28
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 55
Chương 3: Nguyùn tăc dịch OOP
• class → cờ́u truc record
class C1 : C0 {
double d;
int i ;
...
public :
int proc4(int i);
void proc5 (double d);
...
};
Dịch thuửc tủnh dư liùu
typedef struct {
// import cac field tư cờ́u truc
// ₫ươc sinh ra tư C0
// cac field tương ưng vơi C1
int C1_d;
int C1_i;
...
// cac field dư liùu ₫iù̀u khiù̉n
// tư tao bơi chương trũnh dịch
void (*pvfaddr)() ;
} C1;
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 56
Dịch thuửc tủnh dư liùu (tt)
• mử̃i class → 1 record cử̉ ₫iù̉n.
• tùn class → tùn record.
• copy cac field dư liùu cua cờ́u truc sinh ra tư class cha.
• chuyù̉n tưng thuửc tủnh cua class thanh tưng field cua record,
'tuyùt ₫ử́i hoa' tùn cua thuửc tủnh ₫ù̉ tranh nhăp nhăng.
• thùm cac field dư liùu ₫iù̀u khiù̉n phuc vu cho run-time : thủ du
bang ₫ịa chỉ cac method cua ₫ử́i tương (pvftbl).
Chương 3: Nguyùn tăc dịch OOP
29
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 57
Dịch thuửc tủnh dư liùu (tt)
• cờ́u truc record ₫ươc dịch ra ma may thanh 1 vung nhơ liùn tuc
co ₫ử dai băng ₫ử dai cua record.
- field C1 o1; C1_o1 db dup (sizeof(C1))
• truy xuờ́t 1 thuửc tủnh dư liùu trơ thanh viùc truy xuờ́t ử nhơ
dung cach ₫ịnh ₫ịa chỉ chỉ sử́ :
- o1.i = 5; mov bx, C1_o1
mov [bx+4], 5
Chương 3: Nguyùn tăc dịch OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 58
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
Chương 3: Nguyùn tăc dịch OOP
30
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 59
Tao bang ₫ịa chỉ cac method (tt)
• tao bang ₫ịa chỉ gử̀m C1METHCNT phờ̀n tư (C1METHCNT la
sử́ method cua class hiùn hanh, kù̉ ca cac method thưa kù́.
• mử̃i phờ̀n tư ₫ươc nhờn dang qua chỉ sử́ va gử̀m 2 thửng tin
chủnh : tùn gơi nhơ cua method va ₫ịa chỉ cua method.
• copy bang ₫ịa chỉ cua class cha ₫a co.
• hiùu chỉnh lai cac ₫ịa chỉ cua cac method bị override.
• thùm vao cac method mơi ₫ịnh nghĩa trong class hiùn hanh.
Chương 3: Nguyùn tăc dịch OOP
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 60
Chương 3: Nguyùn tăc dịch 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);
....
};
Dịch 1 method
int C1_proc1(C1* p, int i, double d) {
C2 o2; C2 *p2;
// truy xuờ́t thuửc tủnh
p->C1_i = i; p->C1_d = d;
// goi ham
C1_proc5(p,d);
C2_proc2(&o2, i,d);
// gơi thửng bao : kiù̉m 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
31
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 61
Chương 3: Nguyùn tăc dịch OOP
Dịch 1 method (tt)
• tùn method ₫ươc chuyù̉n tư dang 'tương ₫ử́i' sang 'tuyùt ₫ử́i'
(nử́i kù́t tùn class vao).
• thùm tham sử́ ₫ờ̀u tiùn cho ham sinh ra : miùu ta tham khao
₫ù́n ₫ử́i tương ma ham se truy xuờ́t cac thuửc tủnh dư liùu.
• tùn thuửc tủnh ₫ươc chuyù̉n tư dang 'tương ₫ử́i' sang 'tuyùt ₫ử́i'
(nử́i kù́t tùn class vao).
• goi ham internal → goi ham nhưng thùm tham sử́ ₫ờ̀u tiùn.
• gơi thửng bao 3 bươc :
— kiù̉m tra, tũm, load va anh xa bang ₫ịa chỉ cac method cua
₫ử́i tương.
— tũm chỉ sử́ cua method cờ̀n goi trong bang (i).
— goi gian tiù́p method thửng qua ₫ịa chỉ phờ̀n tư thư i trong
bang.
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 62
Chương 3: Nguyùn tăc dịch OOP
Tử́i ưu hoa code tao ra
• co 2 vờ́n ₫ù̀ lơn trong qua trũnh dịch 1 class sang ngửn ngư cử̉
₫iù̉n.
— bang ₫ịa chỉ method chiù́m nhiù̀u chử̃.
— tử́n thơi gian ₫ù̉ phuc vu lùnh gơi thửng bao : kiù̉m tra, load
va anh xa bang ₫ịa chỉ, tũm chỉ sử́ method cờ̀n goi va goi
gian tiù́p qua ₫ịa chỉ trong bang.
• 1 sử́ chương trũnh dịch tũm cach tử́i ưu hoa cac vờ́n ₫ù̀ nay.
• slide sau la cac tử́i ưu hoa cua chương trũnh dịch C++ va cai gia
phai tra.
32
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 63
Chương 3: Nguyùn tăc dịch OOP
Tử́i ưu hoa code tao ra (tt)
• trong C++, tờ́t ca ₫ử́i tương ₫ù̀u tam thơi va găn chăt vao ưng
dung→ bang ₫ịa chỉ cac method cua cac ₫ử́i tương luửn năm
săn trong khửng gian cua ưng dung.
• mử̃i lờ̀n tao ₫ử́i tương, biù́n pvftbl trong ₫ử́i tương ₫ươc gan
ngay ₫ịa chỉ ₫ờ̀u bang method → khửng cờ̀n lam bươc 1 cho
mử̃i lờ̀n gơi thửng bao.
• C++ chỉ dung mử́i quan hù con/cha trong kiù̉m tra kiù̉u→ cửng
viùc 2 ₫ươc lam tai thơi ₫iù̉m dịch thay vũ tai thơi ₫iù̉m gơi thửng
bao trong luc chay.
• cửt tùn gơi nhơ method khửng cờ̀n phai lưu trư trong bang ₫ịa
chỉ cac method.
• chỉ co cac virtual function mơi ₫ươc giai quyù́t theo cơ chù́ ₫a
hũnh, con cac function khac ₫ươc dịch ra lơi goi trưc tiù́p.
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 64
Chương 3: Nguyùn tăc dịch OOP
Tử́i ưu hoa code tao ra (tt)
• cai gia phai tra cua viùc tử́i ưu hoa trong C++ :
— ngươi lờp trũnh phai tư quyù́t ₫ịnh method nao cờ̀n xư ly
theo cơ chù́ ₫a hũnh, ham nao khửng ? Nù́u sư quyù́t ₫ịnh
nay sai thũ se gờy lử̃i khi chay, ma la ngươi thũ kho long
quyù́t ₫ịnh chủnh xac.
— tủnh ₫a hũnh chỉ ₫ung giưa cac ₫ử́i tương co mử́i quan hù
con/cha, ơ ₫o thư tư cac ₫ịa chỉ method cua moi class con
trong bang ₫ịa chỉ luửn giử́ng thư tư cac method tương ưng
cua class cha, tuy nhiùn giưa 2 class bờ́t ky thũ khửng thù̉
₫am bao→ kiù̉m tra kiù̉u trong C++ khửng thù̉ nờng cờ́p lùn
băng cach dung mử́i quan hù "conformity".
33
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 65
Trương Đai Hoc Bach Khoa Tp. HCM
Khoa Cửng nghù Thửng tin
Chương 4
QUI TRềNH HƠP NHấT & UML
) Qui trũnh phat triù̉n phờ̀n mù̀m hơp nhờ́t
) Tử̉ng quat vù̀ ngửn ngư mử hũnh UML
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 66
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.
Chương 4: UML & Qui trũnh hơp nhờ́t
34
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 67
Key concepts
• Cycle
• Phase, Iterations
• Process Workflows
— Activity, steps
• Artifacts
— models
— reports, documents
• Worker: Architect
What does
happen?
What is
produced?
Who does
it?
When does
architecture happen?
Chương 4: UML & Qui trũnh hơp nhờ́t
When does
product happen?
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 68
Key concepts
Chương 4: UML & Qui trũnh hơp nhờ́t
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
35
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 69
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
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 70
Major Milestones
time
Vision Baseline
Architecture
Initial
Capability
Product
Release
Inception Elaboration Construction Transition
Chương 4: UML & Qui trũnh hơp nhờ́t
36
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 71
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
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 72
Iterations and Workflow
P re lim in a ry
Ite ra tio n (s )
ite r.
# 1
ite r.
# 2
ite r.
# n
ite r.
#n + 1
ite r.
# n +2
ite r.
# m
ite r.
#m +1
Inception Elaboration Construction Transition
Ite ra t io n s
Phases
Core Workflows
An iteration in the
elaboration phase
Requirements
Design
Implementation
Test
Analysis
Chương 4: UML & Qui trũnh hơp nhờ́t
37
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 73
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.
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 74
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
Chương 4: UML & Qui trũnh hơp nhờ́t
38
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 75
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
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 76
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
Chương 4: UML & Qui trũnh hơp nhờ́t
39
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 77
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
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 78
Overview of the Unified Process
• The Unified Process is
— Iterative and incremental
— Use case driven
— Architecture-centric
— Risk confronting
Chương 4: UML & Qui trũnh hơp nhờ́t
40
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 79
Use Case Driven
Req.ts Impl. Test
Use Cases bind these workflows together
Analysis Design
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 80
Use Cases Drive Iterations
• Drive a number of development activities
— Creation and validation of the system’s
architecture
— Definition of test cases and procedures
— Planning of iterations
— Creation of user documentation
— Deployment of system
• Synchronize the content of different models
Chương 4: UML & Qui trũnh hơp nhờ́t
41
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 81
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
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 82
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
Chương 4: UML & Qui trũnh hơp nhờ́t
42
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 83
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
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 84
Relationships
• Dependency
• Association
• Generalization
• Realization
Chương 4: UML & Qui trũnh hơp nhờ́t
43
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 85
Extensibility Mechanisms
• Stereotype
• Tagged value
• Constraint
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 86
Models, Views, and Diagrams
Use Case
DiagramsUse CaseDiagramsUse CaseDiagrams
Scenario
DiagramsScenarioDiagramsCollaborationDiagrams
State
DiagramsStateDiagramsComponentDiagrams
Component
DiagramsComponent
DiagramsDeployment
Diagrams
State
DiagramsStateDiagramsObjectDiagrams
Scenario
DiagramsScenarioDiagramsStatechartDiagrams
Use Case
DiagramsUse CaseDiagramsSequenceDiagrams
State
DiagramsStateDiagramsClassDiagrams
Activity
Diagrams
A model is a complete
description of a system
from a particular
perspective
Models
Chương 4: UML & Qui trũnh hơp nhờ́t
44
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 87
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
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 88
Use Case Diagram
• Captures system functionality as seen by users
Chương 4: UML & Qui trũnh hơp nhờ́t
45
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 89
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 system’s architecture
— Drive implementation and generate test cases
• Developed by analysts and domain experts
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 90
Class Diagram
• Captures the
vocabulary of a
system
Chương 4: UML & Qui trũnh hơp nhờ́t
46
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 91
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
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 92
Object Diagram
• Captures instances and links
Chương 4: UML & Qui trũnh hơp nhờ́t
47
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 93
Object Diagram
• Shows instances and links
• Built during analysis and design
• Purpose
— Illustrate data/object structures
— Specify snapshots
• Developed by analysts, designers, and
implementers
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 94
Component Diagram
• Captures the physical structure of the
implementation
Chương 4: UML & Qui trũnh hơp nhờ́t
48
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 95
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
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 96
Deployment Diagram
• Captures the
topology of a
system’s
hardware
Chương 4: UML & Qui trũnh hơp nhờ́t
49
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 97
Deployment Diagram
• Captures the topology of a system’s
hardware
• Built as part of architectural specification
• Purpose
— Specify the distribution of components
— Identify performance bottlenecks
• Developed by architects, networking
engineers, and system engineers
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 98
Sequence Diagram
• Captures
dynamic
behavior (time-
oriented)
• Purpose
— Model flow of
control
— Illustrate typical
scenarios
Chương 4: UML & Qui trũnh hơp nhờ́t
50
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 99
Collaboration Diagram
• Captures dynamic behavior
(message-oriented)
• Purpose
– Model flow of control
– Illustrate coordination of
object structure and control
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 100
Statechart Diagram
• Captures dynamic behavior (event-oriented)
• Purpose
— Model object lifecycle
— Model reactive objects (user interfaces, devices,
etc.)
Chương 4: UML & Qui trũnh hơp nhờ́t
51
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 101
Activity Diagram
• Captures dynamic
behavior (activity-
oriented)
• Purpose
— Model business
workflows
— Model operations
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 102
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
Chương 4: UML & Qui trũnh hơp nhờ́t
52
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 103
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
Chương 4: UML & Qui trũnh hơp nhờ́t
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 104
Trương Đai Hoc Bach Khoa Tp. HCM
Khoa Cửng nghù Thửng tin
Chương 5
NẶM BẶT YẽU CấU HĐT
Cac artifacts cờ̀n tao ra
Cac workers tham gia
Qui trũnh phờn tủch
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
53
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 105
Muc ₫ủch cua hoat ₫ửng năm băt yùu cờ̀u la xờy dưng mử hũnh hù
thử́ng ma se ₫ươc xờy dưng băng cach dung cac use-case. Cac ₫iù̉m
băt ₫ờ̀u cho hoat ₫ửng nay kha ₫a dang :
tư mử hũnh nghiùp vu (business model) cho cac ưng dung nghiùp
vu.
tư mử hũnh lĩnh vưc (domain model) cho cac ưng dung nhung
(embeded).
tư ₫ăc ta yùu cờ̀u cua hù thử́ng nhưng ₫ươc tao bơi nhom khac
va/hoăc dung cac phương phap ₫ăc ta khac (thủ du như hương
cờ́u truc).
tư 1 ₫iù̉m nao ₫o năm giưa cac ₫iù̉m xuờ́t phat trùn.
Muc ₫ẩch cua hoat ₫ộng năm băt yóu cí̀u
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 106
Mử hũnh use-case :
actor : ngươi/hù thử́ng ngoai/thiù́t bị ngoai tương tac vơi hù thử́ng
use-case : cac chưc năng co nghĩa cua hù thử́ng cung cờ́p cho
actor.
— flow of events
— cac yùu cờ̀u ₫ăc biùt cua use-case
₫ăc ta kiù́n truc (view of use-case model)
bang thuờt ngư
cac prototype giao diùn vơi user (user-interface prototype)
Cac artifacts cí̀n tao ra trong năm băt yóu cí̀u
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
54
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 107
Use-Case Model
Actor
Use-Case System
Use - Case
*
1
*
Cac artifacts cí̀n tao ra trong năm băt yóu cí̀u
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 108
Use-Case
Model
System
Analyst
chịu trach nhiùm vù̀
Use-case
Specifier
User-Interface
Designer
Architect
chịu trach nhiùm vù̀ chịu trach nhiùm vù̀
chịu trach nhiùm vù̀
Architecture
Description
User Interface
Prototype
Use-CaseGlossaryActor
Cac workers trong năm băt yóu cí̀u
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
55
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 109
Architect
Use-Case
Specifier
Find Actors &
Use-Cases
Qui trẫnh năm băt yóu cí̀u
User-Interface
Designer
System Analyst
Structure the
Use-Case Model
Prioritize
Use-Cases
Detail a
Use-Case
Prototype
User-Interface
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 110
Muc ₫ủch nhờn dang actor va use-case la ₫ù̉ :
Giơi han hù thử́ng vơi mửi trương bao quanh no.
Phat hoa ai va cac gũ se tương tac vơi hù thử́ng va hù thử́ng cung
cờ́p cac chưc năng gũ.
Năm băt va ₫ịnh nghĩa danh sach cac thuờt ngư chung thiù́t yù́u
cho viùc tao cac ₫ăc ta vù̀ cac chưc năng cua hù thử́ng.
Hoat ₫ửng nay gử̀m 4 bươc :
Tũm cac actor cua hù thử́ng.
Tũm cac use cases cua hù thử́ng.
Miùu ta văn tăt vù̀ tưng use-case.
Miùu ta toan thù̉ mử hũnh use-case.
Tẫm Actors & Use cases
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
56
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 111
Viùc tũm cac actor phu thuửc vao ₫iù̉m xuờ́t phat : nù́u xuờ́t phat tư mử
hũnh nghiùp vu hay mử hũnh lĩnh vưc thũ viùc tũm actor rờ́t ₫ơn gian. Con
nù́u xuờ́t phat tư cac y niùm mơ hử̀ thũ hay tra lơi cac cờu hoi sau :
Ai la ngươi sư dung chưc năng chủnh cua hù thử́ng ?
Ai cờ̀n sư hử̃ trơ tư hù thử́ng ₫ù̉ thưc hiùn cửng viùc thương nhờt
cua ho ?
Ai phai thưc hiùn cửng viùc bao dương, quan trị va giư cho hù
thử́ng hoat ₫ửng ?
Hù thử́ng se kiù̉m soat thiù́t bị phờ̀n cưng nao ?
Hù thử́ng ₫ang xờy dưng cờ̀n tương tac vơi nhưng hù thử́ng khac
khửng ? Hù thử́ng nao ?
Ai hoăc vờt thù̉ nao quan tờm ₫ù́n hay chịu anh hương bơi kù́t
qua ma hù thử́ng phờ̀n mù̀m tao ra ?
Tẫm Actors
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 112
Viùc tũm cac use-case phu thuửc vao ₫iù̉m xuờ́t phat : nù́u xuờ́t phat tư
mử hũnh nghiùp vu hay mử hũnh lĩnh vưc thũ viùc tũm use-case rờ́t ₫ơn
gian. Con nù́u xuờ́t phat tư cac y niùm mơ hử̀ thũ hay tra lơi cac cờu hoi
sau :
Actor yùu cờ̀u chưc năng gũ cua hù thử́ng ?
Actor cờ̀n phai ₫oc, tao, xoa, sưa ₫ử̉i hoăc lưu trư thửng tin nao
cua hù thử́ng ?
Actor cờ̀n thiù́t phai ₫ươc canh bao vù̀ nhưng sư kiùn trong hù
thử́ng, hay actor cờ̀n phai bao hiùu cho hù thử́ng vù̀ vờ́n ₫ù̀ nao
₫o khửng ?
Hù thử́ng co thù̉ hử̃ trơ mửt sử́ cửng viùc thương nhờt cua actor
nao ₫o khửng ?
Tẫm Use-Cases
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
57
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 113
Mử̃i use-case sau khi tũm ₫ươc, nùn ₫ươc ₫ăt tùn, ₫ươc miùu ta băng vai
cờu tử̉ng kù́t cac hoat ₫ửng rử̀i sau ₫o ₫ăc ta tưng bươc hù thử̀ng cờ̀n gũ
₫ù̉ tương tac vơi actor.
Dung lươc ₫ử̀ va cac flow of events ₫ù̉ miùu ta mử hũnh use-case tử̉ng
thù̉, ₫ăc biùt la cac mử́i quan hù giưa cac use-case va vơi actor.
Quan hù giưa cac actors : tử̉ng quat hoa (generalization).
Quan hù giưa actor va use-case : liùn kù́t (association).
Quan hù giưa cac use-cases :
tử̉ng quat hoa.
include
extend
Mióu ta văn tăt tưng Use-Cases
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 114
Cac nộ́i quan hó giưa 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
>
>
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
58
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 115
Store Manager
Add New User
Remove User
Edit User Information
POS LoginUser Maintenance
<<exten...
>
>
>
Cac nộ́i quan hó giưa cac use-cases va use-cases
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 116
C ustom er
R etail S tore
Cu stom er
Telephone
C ustom er
Online
Custom er
Cus tomers
Cac nộ́i quan hó giưa cac actor va actor
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Quan hù giưa cac actors : tử̉ng
quat hoa (generalization).
Thủ du Customer la actor tử̉ng
quat hoa cua cac actor Online
Customer, Telephone Customer,
Retail Store Customer.
Lưu y actor tử̉ng quat hoa
thương khửng co thờt, no la
phờ̀n tư trưu tương.
59
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 117
Lươc ₫ộ̀ use-case Sales:From Order to Delivery
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Perform Transaction
Buyer
Order Goods & Services
Confirm Order
Invoice Buyer
Send Reminders
Seller
Accounting System
Pay Overdraft Fee
Pay Invoice >
Ini tiator
Initiator
Initiator
Initiator
Initiator
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 118
Lươc ₫ộ̀ trang thai cua use-case Pay Invoice
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Browsing
Invoice
Scheduled
Invoice Paid Invoice
Cancelled
rejectschedule
pay on due date
60
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 119
Xờy dưng cac lươc ₫ử̀ use-case va cac ₫ăc ta giai thủch mử hũnh use-
case, nhờ́t la cach thưc ma cac use-case quan hù vơi nhau hay vơi cac
actor :
lươc ₫ử̀ miùu ta cac use-case phuc vu cho 1 actor hay 1
use-case nghiùp vu.
₫ù̉ ₫am bao tủnh nhờ́t quan khi miùu ta nhiù̀u use-case ₫ử̀ng
thơi, nùn xờy dưng 1 bang thuờ ngư chung (glossary).
mử hũnh use-case co thù̉ ₫ươc tử̉ chưc dang cờy thư bờc
nhơ cac package use-case.
xờy dưng ₫ăc ta "survey" cho mử hũnh use-case tử̉ng thù̉ va
nhơ khach hang va ngươi dung kiù̉m tra, ₫anh gia lai.
Mióu ta tộ̉ng thó̉ mộ hẫnh Use-Cases
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 120
cac use-case tũm ₫ươc khửng phai thiù́t yù́u như nhau, do ₫o
kiù́n truc sư cờ̀n săp xù́p thư tư ưu tiùn chung ₫ù̉ xac ₫ịnh
use-case nao nùn ₫ươc phat triù̉n trươc, use-case nao ₫ươc
phat triù̉n sau.
kù́t qua cua hoat ₫ửng nay la xờy dưng ₫ươc goc nhũn kiù́n
truc cua mử hũnh use-case, no ₫ươc dung ₫ù̉ hoach ₫ịnh
cac bươc lăp cung vơi cac yù́u tử́ khac như nghiùp vu, kinh
tù́...
Săp thư tư ưu tión cac use-case
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
61
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 121
Muc ₫ủch la ₫ăc ta "flow of events" cho tưng use-case :
cờ́u truc ₫ăc ta use-case.
₫ăc ta use-case bao gử̀m nhưng gũ.
hũnh thưc hoa ₫ăc ta use-case.
Cờ́u truc ₫ăc ta use-case :
gử̀m 1 luử̀ng cửng viùc cơ ban va cac luử̀ng phu.
Cac luử̀ng phu co thù̉ xay ra vũ cac ly do :
Actor co thù̉ chon thưc hiùn 1 trong nhiù̀u nhanh.
Nù́u hơn 1 actor dung use-case, cac hoat ₫ửng cua ho co
thù̉ anh hương lờ̃n nhau.
Hù thử́ng co thù̉ phat hiùn lử̃i nhờp tư actor.
1 sử́ tai nguyùn khửng hoat ₫ửng tử́t lam cho use-case
khửng hoan tờ́t cửng viùc ₫ung cua no.
Chi tió́t hoa Use-Case
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 122
nùn ₫ịnh nghĩa trang thai băt ₫ờ̀u.
khi nao va cach nao use-case băt ₫ờ̀u.
thư tư cac hoat ₫ửng ₫ươc thưc hiùn.
khi nao va cach nao use-case kù́t thuc.
nùn ₫ịnh nghĩa trang thai kù́t thuc.
khửng cho phep nhiù̀u 'path' thưc thi.
Co thù̉ miùu ta luử̀ng thi hanh phu trong ₫ăc ta luử̀ng cơ
ban.
Đăc ta luử̀ng phu ₫ươc rut trủch tư luử̀ng cơ ban.
Tương tac giưa hù thử́ng va actor va chung trao ₫ử̉i nhưng
gũ.
Viùc dung cac ₫ử́i tương, gia trị, tai nguyùn trong hù thử́ng.
Phai miùu ta ro rang hù thử́ng lam gũ va actor lam gũ.
Đăc ta use-case gộ̀m nhưng gẫ ?
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
62
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 123
Khi sư tương tac giưa actor va use-case gử̀m nhiù̀u trang thai
phưc tap ta nùn dung ky thuờt mử hũnh trưc quan ₫ù̉ diù̃n ta use-
case vũ no giup nha phờn tủch hiù̉u ro hơn vù̀ use-case :
lươc ₫ử̀ trang thai UML co thù̉ ₫ươc dung ₫ù̉ miùu ta trang
thai cua use-case va sư chuyù̉n giưa cac trang thai.
lươc ₫ử̀ hoat ₫ửng co thù̉ ₫ươc dung ₫ù̉ miùu ta sư chuyù̉n
trang thai chi tiù́t hơn dươi dang cac hoat ₫ửng.
lươc ₫ử̀ tương tac co thù̉ ₫ươc dung ₫ù̉ miùu ta cac tương
tac giưa ₫ử́i tương use-case va ₫ử́i tương actor.
Khửng nùn lam dung cac lươc ₫ử̀ vũ ₫ờy la ngửn ngư cua nha phat
triù̉n, cac khach hang va ngươi dung kho long hiù̉u nử̉i.
Hẫnh thưc hoa use-case (Formalizing)
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 124
Mử hũnh use-case ₫ươc cờ́u truc lai ₫ù̉ :
rut trủch cac use-case tử̀ng quat va dung chung bơi cac use-
case ₫ăc biùt hơn.
rut trủch cac use-case nhiùm y va phu thùm ₫ù̉ nơi rửng use-
case khac.
Trươc khi hoat ₫ửng nay xay ra :
nha phờn tủch ₫a nhờn diùn tương ₫ử́i ₫ờ̀y ₫u cac actor va
use-case, miùu ta chung trong cac lươc ₫ử̀ ₫ù̉ cờ́u thanh mử
hũnh use-case tử̉ng thù̉.
ngươi ₫ăc ta use-case ₫a phat triù̉n ₫ăc ta chi tiù́t cho mử̃i
use-case.
Cí́u truc lai mộ hẫnh Use-Case
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
63
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 125
Cac cửng viùc cu thù̉ :
Nhờn dang cac use-case tử̉ng quat ₫ươc dung chung.
Nhờn dang cac use-case co quan hù "extend".
Nhờn dang cac use-case co quan hù "include".
Mửt sử́ ₫iù̀u lưu y :
Cờ́u truc cac use-case va mử́i quan hù giưa chung nùn phan
anh cac chưc năng thưc tù́.
Mử̃i use-case cờ̀n ₫ươc xư ly như 1 artifact riùng biùt, do ₫o
khửng nùn chon use-case qua lơn hay qua nho.
Tranh chia nho use-case.
Cí́u truc lai mộ hẫnh Use-Case
Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 126
Trương Đai Hoc Bach Khoa Tp. HCM
Khoa Cửng nghù Thửng tin
Chương 6
PHấN TẹCH HƯƠNG ĐệI TƯƠNG
Cac artifacts cờ̀n tao ra
Cac workers tham gia
Qui trũnh phờn tủch
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
64
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 127
Muc ₫ủch cua hoat ₫ửng phờn tủch yùu cờ̀u la xờy dưng mử hũnh phờn
tủch vơi cac ₫ăc ₫iù̉m sau :
dung ngửn ngư cua nha phat triù̉n ₫ù̉ miùu ta mử hũnh.
thù̉ hiùn goc nhũn tư bùn trong cua hù thử́ng.
₫ươc cờ́u truc tư cac class phờn tủch va cac package phờn tủch.
₫ươc dung chu yù́u bơi nha phat triù̉n ₫ù̉ hiù̉u cach thưc tao hũnh
dang hù thử́ng.
loai trư moi chi tiù́t dư thưa, khửng nhờ́t quan.
phat hoa cac hiùn thưc cho cac chưc năng bùn trong hù thử́ng.
₫ịnh nghĩa cac dờ̃n xuờ́t use-case, mử̃i dờ̃n xuờ́t use-case cờ́p
phờn tủch miùu ta sư phờn tủch 1 use-case.
Muc ₫ẩch cua phín tẩch yóu cí̀u
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 128
Mử hũnh phờn tủch = hù thử́ng phờn tủch :
cac class phờn tủch
— boundary class
— entity class.
— control class
cac dờ̃n xuờ́t use-case cờ́p phờn tủch :
— cac lươc ₫ử̀ class phờn tủch
— cac lươc ₫ử̀ tương tac (cửng tac,...).
— 'flow of events' ơ cờ́p phờn tủch
— cac yùu cờ̀u ₫ăc biùt cua use-case
cac package phờn tủch
₫ăc ta kiù́n truc (view of analysis model)
Cac artifacts cí̀n tao ra trong phín tẩch yóu cí̀u
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
65
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 129
Analysis
Model
Analysis
System
Use-Case Realization -
Analysis
Analysis Class
Analysis Package
Cac artifacts cí̀n tao ra trong phín tẩch yóu cí̀u
* *
**
*
*1
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 130
Analysis
Model
Use-Case
Engineer
Component
EngineerArchitect
Architecture
Description
Use-Case
Realization -
Analysis
Analysis
class
Analysis
package
chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Cac workers trong phín tẩch yóu cí̀u
66
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 131
Architect
Use-Case
Engineer
Architectural
Analysis
Analyze a
Use-Case
Analyze a
Class
Analyze a
Package
Qui trẫnh phín tẩch yóu cí̀u
Component
Engineer
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 132
Muc ₫ủch cua phờn tủch kiù́n truc la phat hoa mử hũnh phờn tủch va kiù́n
truc hù thử́ng băng cach nhờn dang cac package phờn tủch, cac class
phờn tủch dù̃ thờ́y va cac yùu cờ̀u ₫ăc biùt chung cho hù thử́ng.
Cac package phờn tủch giup tử̉ chưc hù thử́ng thanh nhưng ₫ơn vị nho
dù̃ quan ly. Mử̃i package chưa 1 sử́ use-case vơi tủnh chờ́t sau :
cac use-case hử̃ trơ cho cung 1 qui trũnh nghiùp vu.
cac use-case hử̃ trơ cho cung 1 actor.
cac use-case co quan hù lờ̃n nhau : tử̉ng quat hoa, include va
extend.
Theo thơi gian, khi viùc phờn tủch tiù́n triù̉n, sư tinh chù́ cờ́u truc cac
package se tiù́n triù̉n theo.
Phín tẩch kió́n truc : nhín dang cac package phín tẩch
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
67
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 133
Co 3 loai (stereotype) class phờn tủch :
class biùn (boundary class) mử hũnh sư tương tac giưa actor va hù
thử́ng
class thưc thù̉ (entity class) mử hũnh thửng tin cờ̀n cho hù thử́ng,
loai thửng tin co tủnh bù̀n vưng, tử̀n tai lờu dai.
class ₫iù̀u khiù̉n (control class) mử hũnh viùc xư ly, cửng tac, giao
tac trong use-case.
3 loai class phín tẩch
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Boundary class Entity class Control class
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 134
Tư cac class lĩnh vưc hay cac class nghiùp vu trong bươc năm băt yùu
cờ̀u, ₫ù̀ nghị 1 sử́ class thưc thù̉ quan trong nhờ́t (tư 10-20).
Cac class phờn tủch con lai se ₫ươc nhờn dang trong hoat ₫ửng phờn
tủch use-case.
Cac yùu cờ̀u ₫ăc biùt cung ₫ươc nhờn dang ₫ù̉ ₫ươc xư ly trong cac
bươc sau, chung gử̀m :
tủnh bù̀n vưng.
sư phờn tan & ₫ử̀ng thơi.
cac tủnh chờ́t an toan dư liùu.
₫ù̀ khang vơi lử̃i.
quan ly giao tac.
Tủnh chờ́t cua mử̃i yùu cờ̀u ₫ăc biùt se ₫ươc cờn nhăc sau trong tưng
class va tưng dờ̃n xuờ́t use-case.
Phín tẩch kió́n truc : nhín dang cac class thưc thó̉ dó̃ thí́y
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
68
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 135
Phờn tủch use-case la ₫ù̉ :
nhờn dang cac class phờn tủch co ₫ử́i tương cua chung tham
gia vao viùc thưc hiùn 'flow of events' cua use-case.
phờn phử́i hanh vi cua use-case băng cach cho cac ₫ử́i
tương phờn tủch tương tac nhau.
năm băt 1 sử́ yùu cờ̀u ₫ăc biùt cho dờ̃n xuờ́t use-case.
Phín tẩch use-case
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 136
Trong bươc nay ta nhờn dang cac class ₫iù̀u khiù̉n, biùn, thưc thù̉ cờ̀n
thiù́t ₫ù̉ hiùn thưc use-case va phat hoa tùn, trach nhiùm, thuửc tủnh va
cac mử́i quan hù giưa chung. Dung cac hương dờ̃n sau :
nhờn dang cac class thưc thù̉ băng cach chu y cac thửng tin trong
₫ăc ta use-case va trong mử hũnh lĩnh vưc.
nhờn dang class biùn cơ sơ cho mử̃i class thưc thù̉ vưa tũm ₫ươc.
nhờn dang class biùn trung tờm cho mử ̃i actor la con ngươi.
nhờn dang class biùn trung tờm cho mử ̃i actor la hù thử́ng ngoai
hay thiù́t bị I/O.
nhờn dang class ₫iù̀u khiù̉n co trach nhiùm xư ly trong dờ̃n xuờ́t
use-case.
Tờp hơp cac class phờn tủch tham gia vao dờ̃n xuờ́t use-case thanh 1
(hay nhiù̀u) lươc ₫ử̀ class.
Phín tẩch use-case : nhín dang cac class phín tẩch
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
69
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 137
Payment Request UI
Order Configmation
Order Handler
Payment Request
Payment Scheduler
Invoice
Buyer
(f rom Use-Case Model)
Thẩ du vó̀ lươc ₫ộ̀ class phín tẩch cho use-case Pay Invoice
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 138
Cờ̀n chu y cac ₫iù̉m sau trong lươc ₫ử̀ cửng tac :
p. tư actor gơi 1 thửng bao ₫ù́n class biùn ₫ù̉ kủch hoat use-case.
mử̃i class phờn tủch nùn co ủt nhờ́t 1 ₫ử́i tương tham gia vao lươc
₫ử̀ cửng tac.
chưa vửi kù́t hơp tac vu cu thù̉ cho thửng bao.
cac mử́i nử́i trong lươc ₫ử̀ cửng tac thương la 'instance' cua mử́i
quan hù kù́t hơp giưa cac class tương ưng.
chưa tờp trung vao thư tư thơi gian cac thửng bao.
Lươc ₫ử̀ cửng tac nùn xư ly tờ́t ca mử́i quan hù cua use-case
₫ươc hiùn thưc.
cờ̀n bử̉ sung ₫ăc ta dang văn ban vao lươc ₫ử̀ cửng tac, ₫ăc ta
nay nùn ₫ươc ₫ù̉ vao 'flow of events cờ́p phờn tủch".
Phín tẩch use-case : mióu ta sư tương tac giưa cac ₫ộ́i tương phín tẩch
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
70
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 139
Cờ̀n chu y cac ₫iù̉m sau trong lươc ₫ử̀ cửng tac :
cac thửng ₫iùp ₫ươc ₫anh sử́ theo kiù̉u phờn cờ́p.
— 3.4.2 xay ra sau 3.4.1 va ca 2 ₫ươc lử̀ng trong 3.4
— 3.4.3a va 3.4.3b xay ra ₫ử̀ng thơi va ₫ươc lử̀ng trong 3.4
cu phap tử̉ng quat cua 1 thửng ₫iùp :
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)
Lươc ₫ộ̀ cộng tac
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 140
Lươc ₫ộ̀ cộng tac
Cac thanh phờ̀n cua lươc ₫ử̀ cửng tac :
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
: 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
71
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 141
Muc ₫ủch cua viùc phờn tủch class la :
nhờn dang va duy trũ cac nghĩa vu, trach nhiùm cua class phờn
tủch dưa vao vai tro cua no trong dờ̃n xuờ́t use-case.
nhờn dang va duy trũ cac thuửc tủnh va cac mử́i quan hù cua class
phờn tủch.
năm băt cac yùu cờ̀u ₫ăc biùt liùn quan ₫ù́n viùc hiùn thưc class
phờn tủch.
Phín tẩch class
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 142
tử̉ hơp cac vai tro ma class ₫ong trong cac dờ̃n xuờ́t use-case
khac nhau se cho ta 1 sử́ nghĩa vu cua class.
nghiùn cưu cac lươc ₫ử̀ class va lươc ₫ử̀ tương tac trong cac dờ̃n
xuờ́t use-case co class tham gia.
₫ửi khi cờ̀n nghiùn cưu 'flow of events cờ́p phờn tủch' cua dờ̃n xuờ́t
use-case ₫ù̉ tũm thùm cac nghĩa vu cac class.
Phín tẩch class : nhín dang cac nghĩa vu
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
72
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 143
Mử̃i nghĩa vu thương cờ̀n 1 sử́ thuửc tủnh. Dung cac hương dờ̃n sau :
tùn thuửc tủnh nùn la danh tư.
kiù̉u thuửc tủnh ơ cờ́p phờn tủch nùn ơ cờ́p y niùm, chưa cờ̀n kiù̉u
cu thù̉, nùn dung lai kiù̉u ₫a co khi ₫ăc ta kiù̉u cho thuửc tủnh mơi.
nù́u class phờn tủch qua phưc tap, nùn tach 1 sử́ thuửc tủnh phưc
tap ra thanh class riùng.
thuửc tủnh cua class thưc thù̉ thương dù̃ thờ́y.
thuửc tủnh cua class biùn giao tiù́p vơi ngươi thương miùu ta thửng
tin ₫ươc xư ly bơi user như cac field text,...
thuửc tủnh cua class biùn giao tiù́p vơi hù thử́ng ngoai thương
miùu ta cac tủnh chờ́t cua giao tiù́p.
thuửc tủnh cua class ₫iù̀u khiù̉n ủt khi co.
₫ửi khi khửng cờ̀n cac thuửc tủnh hũnh thưc.
Phín tẩch class : nhín dang cac thuộc tẩnh
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 144
Cac ₫ử́i tương tương tac nhau thửng qua cac lươc ₫ử̀ cửng tac. Cac mử́i
liùn kù́t nay thương la 'instance' cua mử́i quan hù kù́t hơp giưa cac
class. Cac mử́i liùn kù́t nay cung co thù̉ am chỉ nhu cờ̀u vù̀ sư gửp
nhiù̀u ₫ử́i tương. Mử́i quan hù gửp nùn ₫ươc dung khi cac ₫ử́i tương
miùu ta :
cac khai niùm chưa vờt ly khai niùm khac (xe chưa tai xù́ va
khach)
cac khai niùm ₫ươc xờy dưng tư cac khai niùm khac (xe gử̀m cac
banh xe va ₫ửng cơ).
cac khai niùm tao thanh tờp hơp y niùm nhiù̀u ₫ử́i tương (gia ₫ũnh
gử̀m cha, me va con).
Đù̉ rut trủch cac hanh vi chung cua nhiù̀u class phờn tủch, ta co thù̉ dung
class tử̉ng quat hoa, nhưng chỉ nùn ơ cờ́p y niùm.
Phín tẩch class : nhín dang mộ́i quan hó giưa cac class
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
73
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 145
Muc ₫ủch cua phờn tủch package la :
₫am bao tưng package phờn tủch ₫ửc lờp vơi cac package khac
nhiù̀u như co thù̉ co.
₫am bao package phờn tủch hoan thanh muc ₫ủch cua no la hiùn
thưc 1 sử́ class lĩnh vưc hoăc 1 sử́ use-case.
miùu ta cac phu thuửc sao cho co thù̉ ươc lương anh hương cua
cac thay ₫ử̉i trong tương lai.
Dung cac hương dờ̃n sau :
₫am bao package chưa cac class ₫ung, cử́ găng cho tủnh kù́t dủnh
cao băng cach gửp cac class co mử́i quan hù chưc năng.
han chù́ tử́i ₫a sư phu thuửc giưa cac package, phờn phử́i lai cac
class qua phu thuửc vao package khac.
Phín tẩch package
Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 146
Trương Đai Hoc Bach Khoa Tp. HCM
Khoa Cửng nghù Thửng tin
Chương 7
THIẽT Kẽ HƯƠNG ĐệI TƯƠNG
Cac artifacts cờ̀n tao ra
Cac workers tham gia
Qui trũnh thiù́t kù́
Chương 7: Thiù́t kù́ hương ₫ử́i tương
74
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 147
Muc ₫ủch cua cửng viùc thiù́t kù́ la :
₫at tơi sư hiù̉u biù́t sờu săc cac vờ̀n ₫ù̀ vù̀ cac rang buửc va cac
yùu cờ̀u khửng chưc năng co liùn quan ₫ù́n ngửn ngư lờp trũnh, sư
dung lai linh kiùn, HĐH, cửng nghù phờn tan, ₫ử̀ng thơi, database,
giao diùn, quan ly giao tac.
tao ra ₫ờ̀u vao cho hoat ₫ửng hiùn thưc băng cach năm băt cac
hù thử́ng con, cac interface va cac class.
chia cửng viùc hiùn thưc ra nhiù̀u phờ̀n dù̃ quan ly va xư ly bơi
cac ₫ửi khac nhau (co thù̉ ₫ử̀ng thơi).
năm băt cac interface chủnh giưa cac hù thử́ng con.
co thù̉ hiù̉n thị trưc quan va xem xet bang thiù́t kù́ dung cac ky
hiùu chung.
tao ra mưc trưu tương cua sư hiùn thưc hù thử́ng.
Muc ₫ẩch cua thió́t kó́
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 148
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Mử hũnh thiù́t kù́ = hù thử́ng thiù́t kù́ :
cac hù thử́ng con
cac class thiù́t kù́.
cac interface cua hù thử́ng con va class.
cac dờ̃n xuờ́t use-case cờ́p thiù́t kù́ :
— cac lươc ₫ử̀ class
— cac lươc ₫ử̀ tương tac (trũnh tư, trang thai,...).
— 'flow of events' ơ cờ́p thiù́t kù́.
— cac yùu cờ̀u cờ́p hiùn thưc.
₫ăc ta kiù́n truc (view of design model)
Mử hũnh bử́ trủ :
₫ăc ta kiù́n truc (view of deployment model)
Cac artifacts cí̀n tao ra trong thió́t kó́
75
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 149
Desgin Class
Design
Model
Desgin
System
Use-Case Realization -
Design
Interface
Design
Subsystem
*
* * * * *
*
*1
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Cac artifacts cí̀n tao ra trong thió́t kó́
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 150
Class thiù́t kù́ la sư trưu tương trưc tiù́p cua class hiùn thưc :
dung ngửn ngư lờp trũnh ₫ù̉ miùu ta class thiù́t kù́.
thương xac ₫ịnh tờ̀m vưc cua cac thanh phờ̀n.
cac mử́i quan hù co y nghĩa trưc tiù́p tơi hiùn thưc : tử̉ng quat hoa
→ thưa kù́, quan hù gửp, kù́t hơp thanh thuửc tủnh tương ưng.
method trong thiù́t kù́→ method trong hiùn thưc.
co thù̉ delay viùc xư ly 1 sử́ yùu cờ̀u tơi luc hiùn thưc.
class thiù́t kù́ thương co stereotype tương ưng vơi ngửn ngư lờp
trũnh : >, >, >...
class thiù́t kù́ hiùn thưc (hay cung cờ́p) 1 interface.
co thù̀ co 1 sử́ class active, nhưng nùn tử̀n tai trong mử hũnh
process thay vũ trong mử hũnh thiù́t kù́.
Đăc ₫ió̉m cua class thió́t kó́
Chương 7: Thiù́t kù́ hương ₫ử́i tương
76
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 151
Use-Case
Engineer
Component
Engineer
chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀
Desgin
Model
Deployment
Model
Architecture
Description
Use-Case
Realization -
Desgin
Design
class
Design
Subsystem
Interface
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Cac wokers trong hoat ₫ộng thió́t kó́
Architect
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 152
Architect
Use-Case
Engineer
Architectural
Design
Design a
Use-Case
Design a
Class
Design a
Subsystem
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Qui trẫnh thió́t kó́
Component
Engineer
77
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 153
Muc ₫ủch cua thiù́t kù́ kiù́n truc la phat hoa mử hũnh thiù́t
kù́ va mử hũnh bử́ trủ cung kiù́n truc cua chung băng
cach nhờn dang cac vờ́n ₫ù̀ sau :
Cac nut tủnh toan va cac cờ́u hũnh mang cua chung.
Cac hù thử́ng con va interface cua chung.
Cac class thiù́t kù́ co y nghĩa kiù́n truc như cac class
chu ₫ửng.
Cac cơ chù́ thiù́t kù́ tử̉ng quat xư ly cac yùu cờ̀u chung
như tủnh bù̀n vưng, hiùu qua,... (₫ươc năm băt trong cac
class phờn tủch va cac dờ̃n xuờ́t use-case ơ cờ́p phờn
tủch.
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Thió́t kó́ kió́n truc : muc ₫ẩch
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 154
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Cờ́u hũnh mang vờt ly se anh hương ₫ù́n kiù́n truc phờ̀n mù̀m, gử̀m cac
khủa canh :
cac nut nao liùn quan, kha năng vù̀ bử nhơ va cửng suờ́t tủnh cua
nut.
kiù̉u nử́i kù́t va kiù̉u giao thưc nao giưa cac nut.
cac tủnh chờ́t vù̀ sư nử́i kù́t va giao thưc như băng thửng, ₫ử săn
sang, chờ́t lương...
cờ̀n kha năng tủnh dư thưa, chù́ ₫ử ₫ù̀ khang lử̃i, di cư process,
sao lưu dư liùu,...
Thió́t kó́ kió́n truc : nhín dang nut va cí́u hẫnh mang
78
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 155
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Chia cửng viùc thiù́t kù́ tư ₫ờ̀u hay khi mử hũnh thiù́t kù́ phat triù̉n thanh
phưc tap cờ̀n ₫ươc chia nho. Mửt sử́ hù thử́ng con ₫ươc dung lai tư cac
project khac :
nhờn dang cac hù thử́ng con cờ́p ưng dung
nhờn dang cac hù thử́ng con cờ́p giưa va cờ́p hù thử́ng
₫ịnh nghĩa sư phu thuửc giưa cac hù thử́ng con.
nhờn dang giao tiù́p cua cac hù thử́ng con.
Thió́t kó́ kió́n truc : nhín dang hó thộ́ng con va interface cua chung
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 156
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Cờ̀n nhờn dang cac class thiù́t kù́ quan trong vù̀ măt kiù́n truc ₫ù̉ lam
tiù̀n ₫ù̀ cho hoat ₫ửng thiù́t kù́, cac class khac se ₫ươc nhờn dang trong
viùc thiù́t kù́ use-case.
nhờn dang cac class thiù́t kù́ tư cac class phờn tủch tương ưng
nhờn dang cac class chu ₫ửng khi chu y yùu cờ̀u ₫ử̀ng thơi trùn hù
thử́ng :
— cac yùu cờ̀u vù̀ hiùu qua, ₫ử săn sang, throughput cua hù
thử́ng
— sư phờn tan cua hù thử́ng trùn cac nut.
— cac yùu cờ̀u khac như khơi ₫ửng, kù́t thuc, tranh deadlock,
tranh bao hoa, cờ́u hũnh lai cac nut, kha năng nử́i kù́t.
Thió́t kó́ kió́n truc : nhín dang cac class thió́t kó́ quan trong vó̀ kió́n truc
79
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 157
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Tư cac yùu cờ̀u chung va ₫ăc biùt ₫a ₫ươc nhờn dang trong phờ̀n phờn
tủch (trong cac class phờn tủch va cac dờ̃n xuờ́t use-case cờ́p phờn tủch),
quyù́t ₫ịnh cach xư ly chung dưa trùn cửng nghù hiùn thưc va thiù́t kù́
săn co. Kù́t qua la 1 tờp cac cơ chù́ thiù́t kù́ tử̉ng quat. Cac yùu cờ̀u cờ̀n
xư ly thương liùn quan ₫ù́n :
tủnh bù̀n vưng.
sư phờn tan & ₫ử̀ng thơi.
cac tủnh chờ́t an toan dư liùu.
₫ù̀ khang vơi lử̃i.
quan ly giao tac.
Thió́t kó́ kió́n truc : nhín dang cac cơ chó́ thió́t kó́ tộ̉ng quat
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 158
Muc ₫ủch cua thiù́t kù́ use-case la :
Nhờn dang cac class thiù́t kù́ va cac hù thử́ng con co
object cờ̀n cho viùc thưc hiùn 'flow of events-design'
cua use-case.
phờn tan hanh vi cua use-case băng cach cho cac
object thiù́t kù́ va hù thử́ng con tương tac nhau.
₫ịnh nghĩa yùu cờ̀u trùn cac tac vu cua class thiù́t kù́,
hù thử́ng con va interface cua chung.
năm băt cac yùu cờ̀u cờ́p hiùn thưc cho use-case.
Thió́t kó́ Use-Case
Chương 7: Thiù́t kù́ hương ₫ử́i tương
80
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 159
Nhờn dang cac class thiù́t kù́ như sau :
nghiùn cưu cac class phờn tủch tham gia trong dờ̃n xuờ́t use-
case cờ́p phờn tủch tương ưng, nhờn dang cac class thiù́t kù́
nử́i vơi cac class phờn tủch nay.
nghiùn cưu cac yùu cờ̀u ₫ăc biùt trong dờ̃n xuờ́t use-case
cờ́p phờn tủch tương ưng, nhờn dang cac class thiù́t kù́ hiùn
thưc cac yùu cờ̀u ₫ăc biùt nay.
gan nghĩa vu cho cac class thiù́t kù́ tũm ₫ươc.
nù́u con thiù́u 1 vai class cờ̀n cho viùc thiù́t kù́ use-case ₫ăc
biùt, ky sư use-case nùn liùn hù vơi kiù́n truc sư va ky sư linh
kiùn ₫ù̉ ban bac.
xờy dưng lươc ₫ử̀ class chưa cac class thiù́t kù́ tũm ₫ươc.
Thió́t kó́ Use-Case : nhín dang cac class thió́t kó́
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 160
Dung lươc ₫ử̀ trũnh tư :
lươc ₫ử̀ trũnh tư chưa cac phờ̀n tư actor, ₫ử́i tương thiù́t kù́ va
cac t.bao giưa chung.
nù́u use-case co nhiù̀u luử̀ng ₫iù̀u khiù̉n khac nhau, nùn tao
lươc ₫ử̀ trũnh tư cho tưng luử̀ng.
nùn chuyù̉n lươc ₫ử̀ cửng tac ơ cờ́p phờn tủch thanh lươc ₫ử̀
trũnh tư ban ₫ờ̀u, tư ₫o phat triù̉n thùm chi tiù́t.
dung 'flow of events', duyùt qua cac bươc trong no ₫ù̉ quyù́t
₫ịnh cac tương tac nao cờ̀n thiù́t giưa cac ₫ử́i tương thiù́t kù́
va phờ̀n tư actor.
Thió́t kó́ Use-Case : mióu ta cac tương tac giưa cac object thió́t kó́
Chương 7: Thiù́t kù́ hương ₫ử́i tương
81
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 161
Thió́t kó́ Use-Case : mióu ta cac tương tac giưa cac object thió́t kó́
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Nùn chu y cac ghi nhờn sau trong viùc xờy dưng lươc ₫ử̀ trũnh tư :
nùn tờp trung vao trũnh tư trong lươc ₫ử̀.
actor gơi thửng bao ₫ù́n 1 ₫ử́i tương thiù́t kù́ ₫ù̉ yùu cờ̀u thưc
hiùn use-case.
mử̃i class thiù́t kù́ nùn co ủt nhờ́t 1 ₫ử́i tương tham gia vao
lươc ₫ử̀ trũnh tư.
cac message ₫ươc gơi giưa cac ₫ương ₫ơi sử́ng ₫ử́i tương,
co thù̉ co tùn tam va se trơ thanh tùn tac vu tương ưng.
dung label va flow of events cờ́p thiù́t kù́ ₫ù̉ bử̉ sung lươc ₫ử̀
trũnh tư.
lươc ₫ử̀ trũnh tư nùn xư ly tờ́t ca mử́i quan hù cua use-case
cờ̀n hiùn thưc.
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 162
: People
: LoginForm
: Database
1: login(uname,pswd)
1.2 [succ = true]: welcome
1.1: succ := Verify(uname,pswd)
Lươc ₫ộ̀ cộng tac
Cac thanh phờ̀n cua lươc ₫ử̀ cửng tac : (thủ du lươc ₫ử̀ cửng
tac cho use-case Login cua hù thử́ng ₫ăng ky mửn hoc hù tủn
chỉ thửng qua Web.
Chương 7: Thiù́t kù́ hương ₫ử́i tương
82
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 163
: Database: People : LoginForm
1: submit(uname, psswd) 1.1: verify(uname, psswd)
1.2: welcome
Lươc ₫ộ̀ trẫnh tư
Cac thanh phờ̀n cua lươc ₫ử̀ trũnh tư : (thủ du lươc ₫ử̀ trũnh tư
cho use-case Login cua hù thử́ng ₫ăng ky mửn hoc hù tủn chỉ
thửng qua Web.
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 164
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
Lươc ₫ộ̀ trang thai
Cac thanh phờ̀n cua lươc ₫ử̀ trang thai : (thủ du lươc ₫ử̀ trang
thai cho use-case Send/Read e-mail).
Chương 7: Thiù́t kù́ hương ₫ử́i tương
83
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 165
Show input for username
and password
Reject
[ psswd invalid ]
Welcome
[ psswd valid ]
Verify
DatabaseLoginForm
Lươc ₫ộ̀ hoat ₫ộng
Cac thanh phờ̀n cua
lươc ₫ử̀ hoat ₫ửng :
(thủ du lươc ₫ử̀ hoat
₫ửng cho use-case
Login cua hù thử́ng
₫ăng ky mửn hoc hù
tủn chỉ thửng qua
Web.
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 166
Muc ₫ủch cua viùc thiù́t kù́ class la tao ra class thiù́t kù́ hoan
thanh vai tro cua no trong dờ̃n xuờ́t use-case va cac yùu cờ̀u phu.
Bao gử̀m viùc duy trũ class thiù́t kù́ va cac khủa canh sau cua no :
cac tac vu cua class.
cac thuửc tủnh cua class.
cac mử́i quan hù ma class tham gia.
cac method cua class (hiùn thưc tac vu tương ưng).
cac trang thai cua ₫ử́i tương.
cac phu thuửc tơi bờ́t ky cơ chù́ thiù́t kù́ tử̉ng quat nao.
cac yùu cờ̀u co liùn quan ₫ù́n hiùn thưc cua class.
sư hiùn thưc ₫ung cua bờ́t ky interface ma class phai cung
cờ́p.
Thió́t kó́ class
Chương 7: Thiù́t kù́ hương ₫ử́i tương
84
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 167
Bươc ₫ờ̀u ta phat hoa cac class thiù́t kù́ tư cac interface va class phờn
tủch : 1 interface co 1 class thiù́t kù́, con class phờn tủch thũ :
thiù́t kù́ class biùn phu thuửc vao cửng nghù tao interface : form,
activeX control... Đù̉ y dung cac prototype giao diùn vơi user trong
bươc trươc.
thiù́t kù́ class thưc thù̉ thương phu thuửc vao cửng nghù database.
Viùc anh xa tư mử hũnh hương ₫ử́i tương sang mử hũnh dư liùu
quan hù co thù̉ cờ̀n worker, mử hũnh va cửng viùc riùng.
cờ̀n tờp trung thiù́t kù́ class ₫iù̀u khiù̉n, chu y cac nhu cờ̀u sau :
— vờ̀n ₫ù̀ phờn tan : cờ̀n nhiù̀u class thiù́t kù́ trùn cac nut khac nhau
₫ù̉ hiùn thưc 1 class ₫iù̀u khiù̉n.
— vờ́n ₫ù̀ hiùu qua : nùn dung 1 class thiù́t kù́ cho 1 class ₫iù̀u khiù̉n
— vờ́n ₫ù̀ giao tac: class thiù́t kù́ cờ̀n tủch hơp cửng nghù quan ly
giao tac.
Thió́t kó́ class : Phat hoa class thió́t kó́
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 168
Nhờn dang cac tac vu ma class thiù́t kù́ cờ̀n cung cờ́p va tờ̀m vưc
cua chung (dung cu phap ngửn ngư lờp trũnh). Cac ₫ờ̀u vao cua
bươc nay la :
cac trach nhiùm cua bờ́t ky class phờn tủch ma dờ̃n tơi class
thiù́t kù́.1 trach nhiùm tương ưng 1 hay nhiù̀u tac vu, nhưng
ơ ₫ờy mơi phat hoa thửng sử́ hũnh thưc cac tham sử́.
cac yùu cờ̀u ₫ăc biùt cua bờ́t ky class phờn tủch ma dờ̃n tơi
class thiù́t kù́.
cac interface ma class thiù́t kù́ phai cung cờ́p.
dờ̃n xuờ́t use-case cờ́p thiù́t kù́ ma class tham gia.
Thió́t kó́ class : Nhín dang cac tac vu
Chương 7: Thiù́t kù́ hương ₫ử́i tương
85
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 169
Tac vu thương ₫oi hoi thuửc tủnh, cờ̀n dưa vao cac hương dờ̃n sau
:
chu y thuửc tủnh cua bờ́t ky class phờn tủch ma dờ̃n tơi class
thiù́t kù́.1 thuửc tủnh nay am chỉ 1 hay nhiù̀u thuửc tủnh cua
class thiù́t kù́.
han chù́ dung kiù̉u cua ngửn ngư lờp trũnh cho thuửc tủnh.
cử́ găng dung kiù̉u ₫a co.
nù́u class thiù́t kù́ qua phưc tap, 1 vai thuửc tủnh cua no co
thù̉ tach ra thanh cac class riùng.
nù́u co qua nhiù̀u thuửc tủnh hay thuửc tủnh qua phưc tap,
nùn dung lươc ₫ử̀ class riùng ₫ù̉ miùu ta thuửc tủnh.
Thió́t kó́ class : Nhín dang cac thuộc tẩnh
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 170
Cờ̀n theo cac hương dờ̃n sau :
chu y cac mử́i quan hù kù́t hơp & gửp cua bờ́t ky class phờn
tủch ma dờ̃n tơi class thiù́t kù́.
tinh chù́ sử́ phờ̀n tư tham gia, tùn vai tro, tủnh chờ́t cua vai
tro, class kù́t hơp, kù́t hơp n-ary.
tinh chù́ hương cua mử́i quan hù kù́t hơp tư lươc ₫ử̀ tương
tac.
Nhờn dang mử́i quan hù tử̉ng quat hoa dung cu phap ngửn ngư
lờp trũnh, nù́u ngửn ngư lờp trũnh khửng hử̃ trơ, dung mử́i quan hù
kù́t hơp, gửp ₫ù̉ thay thù́.
Thió́t kó́ class : Nhín dang cac mộ́i quan hó kó́t hơp & gộp
Chương 7: Thiù́t kù́ hương ₫ử́i tương
86
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 171
Method ₫ăc ta cach tac vu ₫ươc hiùn thưc. Miùu ta cac method
dung ngửn ngư tư nhiùn hay ngửn ngư pseudocode. Nù́u cung ky
sư linh kiùn thưc hiùn 2 khờu thiù́t kù́ va hiùn thưc, ửng ta thương
ủt khi ₫ăc ta method trong giai ₫oan thiù́t kù́.
Mửt vai ₫ử́i tương thiù́t kù́ ₫ươc ₫iù̀u khiù̉n bơi trang thai : trang
thai xac ₫ịnh hanh vi cua no khi nhờn 1 thửng bao tư ngoai→
miùu ta trang thai dung lươc ₫ử̀ trang thai.
Xư ly cac yùu cờ̀u ₫ăc biùt chưa ₫ươc chu y ơ cac bươc trươc.
Thió́t kó́ class : Nhín dang cac mộ́i quan hó kó́t hơp & gộp
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 172
Muc ₫ủch cua viùc thiù́t kù́ hù thử́ng con la :
₫am bao hù thử́ng con la ₫ửc lờp vơi nhau nhiù̀u như co thù̉
co.
₫am bao hù thử́ng con la ₫ửc lờp vơi interface cua no nhiù̀u
như co thù̉ co.
₫am bao hù thử́ng con cung cờ́p ₫ươc interfcae ₫ung.
₫am bao hù thử́ng con hoan thanh muc ₫ủch, tao hiùn thưc
₫ung cho cac tac vu.
Thió́t kó́ hó thộ́ng con (Subsystem)
Chương 7: Thiù́t kù́ hương ₫ử́i tương
87
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 173
Gử̀m cac cửng viùc sau :
duy trũ sư phu thuửc giưa cac hù thử́ng con (nùn thửng qua
interface), tử́i thiù̉u hoa sư phu thuửc băng cach bử́ trủ lai
cac class qua phu thuửc vao hù thử́ng con khac.
duy trũ interface cua cac hù thử́ng con.
duy trũ nửi dung cua cac hù thử́ng con.
Thió́t kó́ hó thộ́ng con (Subsystem)
Chương 7: Thiù́t kù́ hương ₫ử́i tương
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 174
Trương Đai Hoc Bach Khoa Tp. HCM
Khoa Cửng nghù Thửng tin
Chương 8
HIẽN THƯC HƯƠNG ĐệI TƯƠNG
Cac artifacts cờ̀n tao ra
Cac workers tham gia
Qui trũnh hiùn thưc
Chương 8: Hiùn thưc hương ₫ử́i tương
88
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 175
Chương 8: Hiùn thưc hương ₫ử́i tương
Muc ₫ủch cua hiùn thưc la :
kù́ hoach cac bươc tủch hơp hù thử́ng cờ̀n thiù́t cho mử̃i bươc
lăp theo cơ chù́ tăng dờ̀n (hù thử́ng ₫ươc hiùn thưc như
chuử̃i cac bươc nho va dù̃ quan ly).
phờn tan hù thử́ng băng cach anh xa cac thanh phờ̀n kha thi
trùn cac nut trong mử hũnh bử́ trủ (dưa chu yù́u vao cac class
chu ₫ửng).
hiùn thưc cac class va hù thử́ng con thiù́t kù́.
kiù̉m tra ₫ơn vị trùn cac thanh phờ̀n, tủch hơp chung vao 1
hay nhiù̀u file kha thi trươc khi gơi ₫i kiù̉m tra tủch hơp va
kiù̉m tra hù thử́ng.
Muc ₫ẩch cua giai ₫oan hión thưc
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 176
Mử hũnh hiùn thưc = hù thử́ng hiùn thưc :
cac hù thử́ng con hiùn thưc
cac component (executable, file, library, table, document,...)
cac interface cua hù thử́ng con va component.
kù́ hoach tủch hơp cac "build"
₫ăc ta kiù́n truc (view of Implementation model)
Cac artifacts cí̀n tao ra trong hión thưc
Chương 8: Hiùn thưc hương ₫ử́i tương
89
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 177
Chương 8: Hiùn thưc hương ₫ử́i tương
Stub la 1 thanh phờ̀n ma phờ̀n hiùn thưc chỉ ơ mưc ₫ử "template"
₫ù̉ phat triù̉n hoăc kiù̉m tra thanh phờ̀n khac phu thuửc va stub.
Stub co thù̉ tử́i thiù̉u sử́ thanh phờ̀n mơi cờ̀n hiùn thưc cho mử̃i
version cua hù thử́ng. co phờ̀n hiùn thưc, nhơ ₫o lam ₫ơn gian
viùc tủch hơp va kiù̉m tra tủch hơp.
Hù thử́ng con do cơ chù́ packaging trong mửi trương hiùn thưc tao
ra :
package trong java.
project trong VB.
thư muc cac file trong C++,...
Stub, hó thộ́ng con
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 178
Chương 8: Hiùn thưc hương ₫ử́i tương
Phờ̀n mù̀m ₫ươc hiùn thưc theo tưng bươc nho dù̃ quan ly, mử̃i
bươc ta xờy dưng 1 build. Build la 1 version kha thi cua hù thử́ng.
Lơi ủch cua cach tiù́p cờn nay la :
version kha thi co thù̉ tao ra kha sơm thay vũ phai chơ ₫ơi
lờu, viùc kiù̉m tra tủch hơp nhơ ₫o ₫ươc băt ₫ờ̀u sơm ₫ù̉ co
thù̉ demo cho cac thanh viùn nửi bử hay cac ngươi liùn
quan.
dù̃ dang phat hiùn ₫iù̉m yù́u va lử̃i vũ mử̃i lờ̀n chỉ co 1 phờ̀n
mơi rờ́t nho ₫ươc thùm vao.
kiù̉m tra tủch hơp thương nhanh hơn la kiù̉m tra toan bử hù
thử́ng.
Build
90
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử́i tương
Slide 179
Chương 8: Hiùn thưc hương ₫ử́i tương
Kù́ hoach xờy dưng build tủch hơp miùu ta trũnh tư cac build cờ̀n
thiù́t cho mử̃i bươc lăp, ưng vơi mử̃i build no miùu ta :
chưc năng ky vong ₫ươc hiùn thưc trong build, ₫ờy la danh
sach cac use-case va/hoăc cac kịch ban cua chung. Danh
sach nay cung chỉ ra cac yùu cờ̀u phu kem theo.
Cac phờ̀n nao cua mử hũnh hiùn thưc bị tac ₫ửng trong build,
₫ờy la danh sach cac hù thử́ng con va cac thanh phờ̀n ₫ươc
₫oi hoi ₫ù̉ hiùn thưc chưc năng ky vong cua build.
Kó́ hoach xíy dưng build tẩch hơp
Bộ mụn Cụng nghệ phần mềm
Khoa CNTT
ĐH Bỏch Khoa Tp.HCM
Mửn TK. Hương ₫ử
Các file đính kèm theo tài liệu này:
- tailieu.pdf