Tài liệu Bài giảng Phân tích và thiết kế hướng đối tượng dùng UML
175 trang |
Chia sẻ: hunglv | Lượt xem: 1086 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng Phân tích và thiết kế hướng đối tượng dùng UML, để 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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
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 DÙNG UML
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 2
1. ûn lai 1 sú́ khai niøm cơ ban cua hương ₫ú́i tương, cac ngún ngư
hương ₫ú́i tương thương dung, cơ chǿ dịch cac type/class sang ngún
ngư cú̉ ₫iø̉n (ngún ngư may).
2. ûn lai qui trěnh phat triø̉n phö̀n mø̀m hơp nhö́t.
3. ûn lai ngún ngư UML ₫ươc dung ₫ø̉ miøu ta cac artifacts cua qui
trěnh phat triø̉n phö̀n mø̀m hơp nhö́t.
4. Giơi thiøu cac mö̃u thiǿt kǿ hương ₫ú́i tương ₫ươc dung phú̉ biǿn
trong cac ưng dung hiøn hanh va cac ưng dung tương lai.
Nöi dung mön hoc
2Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 3
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 4
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
3Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 5
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 6
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
4Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 7
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 :
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 8
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
5Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 9
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 10
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
6Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 11
Đö́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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 12
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
7Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 13
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
}
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 15
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 16
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
9Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 17
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 18
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
10
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 19
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 20
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
11
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 21
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 22
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
12
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 23
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 24
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
13
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 25
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 26
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
14
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 27
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 28
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
15
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 29
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 30
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
16
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 31
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 32
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
17
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 33
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 34
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
18
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 35
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 36
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
19
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 37
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 38
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
20
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 39
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 40
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
21
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 41
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 42
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
22
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 43
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 44
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
23
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 45
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()
>
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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;
}
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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;
}
}
Chương 2: ThĚ du vø̀ cac ngún ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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;
}
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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);
}
}
}
Chương 2: ThĚ du vø̀ cac ngún ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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();
}
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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);
}
}
Chương 2: ThĚ du vø̀ cac ngún ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 52
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
27
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 53
• 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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 54
• 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
28
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 55
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 56
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;
29
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 57
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 58
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
30
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
Chương 3: Nguyøn tăc dịch OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 60
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
31
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 61
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 62
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.
32
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 63
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.
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 64
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.
33
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 65
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".
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 66
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
34
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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.
Chương 4: UML & Qui trěnh hơp nhö́t
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 68
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?
35
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 69
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 71
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 73
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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.
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
Chương 4: UML & Qui trěnh hơp nhö́t
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
Chương 4: UML & Qui trěnh hơp nhö́t
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 79
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 80
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
41
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 81
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
Chương 4: UML & Qui trěnh hơp nhö́t
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 85
Relationships
• Dependency
• Association
• Generalization
• Realization
Chương 4: UML & Qui trěnh hơp nhö́t
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 86
Extensibility Mechanisms
• Stereotype
• Tagged value
• Constraint
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 87
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 89
Use Case Diagram
• Captures system functionality as seen by 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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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 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
46
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 91
Class Diagram
• Captures the
vocabulary of a
system
Chương 4: UML & Qui trěnh hơp nhö́t
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 93
Object Diagram
• Captures instances and links
Chương 4: UML & Qui trěnh hơp nhö́t
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 95
Component Diagram
• Captures the physical structure of the
implementation
Chương 4: UML & Qui trěnh hơp nhö́t
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 97
Deployment Diagram
• Captures the
topology of a
system’s
hardware
Chương 4: UML & Qui trěnh hơp nhö́t
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 98
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
50
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 99
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 100
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
51
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 101
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 102
Activity Diagram
• Captures dynamic
behavior (activity-
oriented)
• Purpose
— Model business
workflows
— Model operations
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
Chương 4: UML & Qui trěnh hơp nhö́t
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
Chương 4: UML & Qui trěnh hơp nhö́t
53
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 105
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 106
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.
M u c ₫ È c h c u a h o a t ₫é n g 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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 107
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)
C a c artifa ct s c Ý ̀ n ta o r a tr o n g 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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 108
Use-Case Model
Actor
Use-Case System
Use - Case
*
1
*
C a c artifa ct s c Ý ̀ n ta o r a tr o n g 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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 109
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
C a c w o r k er s tr o n g 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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 110
Architect
Use-Case
Specifier
Find Actors &
Use-Cases
Q u i 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
56
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 111
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 A ct o r s & U s e c a s e s
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 112
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 A ct o r s
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 113
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 U s e-C a s e s
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 114
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
M iãu ta văn tăt tưng U s e- C a s e s
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 Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 115
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 116
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
59
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 117
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.
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 118
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
60
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 119
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 120
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
61
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 121
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 122
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
62
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 123
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 124
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
63
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 125
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 126
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
64
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 127
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 128
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
65
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 129
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 130
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
66
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 131
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 132
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
67
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 133
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 134
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
68
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 135
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 136
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
69
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 137
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 138
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
70
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 139
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 140
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
71
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 141
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 142
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
72
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 143
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 144
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
73
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 145
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 146
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
74
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 147
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 148
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
75
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 149
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ã́
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 150
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ã́
76
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 151
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 152
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
77
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 153
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 154
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
78
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 155
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 156
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
79
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 157
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 158
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
80
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 159
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 160
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
81
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 161
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 162
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.
82
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 163
: 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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 164
: 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
83
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng 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
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 166
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
84
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 167
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 168
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
85
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 169
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 170
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
86
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 171
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
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bac
Các file đính kèm theo tài liệu này:
- PHANTICHTHIETKEHUONGDOITUONGDUNGUML.pdf