SỐNG VỚI HỘI CHỨNG DOWN
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 1
Nöi dung mön hoc
1.
2.
3.
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).
n lai qui tr nh phat tri ̉n ph ̀n m ̀m hơp nh ́t.
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.
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
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
Mön 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
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
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 4
2
Nưi dung
1.1 Tư lêp trịnh co cếu truc ₫ḯn OOP
1.2 Đứi tương, thc 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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 5
Tư lêp trònh co cếu truc ₫ḯn OOP
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).
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 6
3
Tư lêp trònh co cếu truc ₫ḯn OOP
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 7
Tư lêp trònh co cếu truc ₫ḯn OOP
Chương tr nh = c ́u truc dư li u + giai thu t
module
(package)
entry 'start'
global data
local data
of module
local data
of function
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 8
4
Tư lêp trònh co cếu truc ₫ḯn OOP
Chương tr nh = t p cac ₫ ́i tương tương tac nhau
₫ ́i tương
(object)
entry
local data
of object
local data
of operation
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
Chương 1: Cac khai ni m cơ ban cua m h nh 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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 10
5
Đö́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.
Implementation
(class)
Interface
(abstract type)
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
Chương 1: Cac khai ni m cơ ban cua m h nh 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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 12
6
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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh 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
}
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 14
7
Tñnh bao ₫ong (encapsulation)
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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh 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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 16
8
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
}
}
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
Chương 1: Cac khai ni m cơ ban cua m h nh 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.
Goc nh n ngư nghĩa
Goc nh n hi n
thưc
O2
O2
O1
O1
O3
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
O3
Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 18
9
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:
// pointer container
Geometry **ppGeo;
int
geoCount;
};
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
Chương 1: Cac khai ni m cơ ban cua m h nh 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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 20
10
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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh 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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 22
11
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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh 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).
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 24
12
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.
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
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
Slide 25
Trương Đai hoc Bach Khoa Tp. Hừ Chđ Minh
Khoa Cưng Nghï Thưng Tin
Chương 2
THĐ DU VÏ NGƯN NGƯ OOP
Visual C++
Java
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 26
13
2.1 Ngön ngư Visual C++
1.
2.
3.
4.
5.
6.
7.
8.
Chỉ hö̃ trơ khai niïm class.
Cho phep Đa thưa kḯ.
Dung 'abstract class' ₫ï̉ ₫ịnh nghĩa interface.
Tềm vưc truy xuết cac thanh phền.
Đa hònh co chon loc nhơ 'virtual function'
Chỉ hö̃ trơ cac ₫ö́i tương tam.
Override method khi thưa kḯ.
Co thï̉ ₫ịnh nghĩa function overloaded.
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
Chương 2: Th du v ̀ cac ng n ngư OOP
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.
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 28
14
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;
};
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
Chương 2: Th du v ̀ cac ng n ngư OOP
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 ́.
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 30
15
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
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
Chương 2: Th du v ̀ cac ng n ngư OOP
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.
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 32
16
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 {....};
....
Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 33
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Cếu truc 1 chương trịnh Dialog based ₫ơn gian
InitInstance()
DoModal()
CProgramDlg
CProgramApp
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 34
17
Cếu truc 1 chương trịnh SDI ₫ơn gian
InitInstance()
CMainFrame
CProgramView
CProgramDoc
CSingleDocTemplate
CProgramApp
Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 35
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐH Bach Khoa Tp.HCM
Cếu truc 1 chương trịnh MDI ₫ơn gian
InitInstance()
CChildFrame
CProgramView
CProgramDoc
CMultiDocTemplate
CProgramApp
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 36
18
2.2 Ngön ngư Java
1.
2.
3.
4.
5.
6.
7.
8.
9.
Hö̃ trơ 'interface' (1 dang cua type) va class.
Hö̃ trơ Đơn thưa kḯ.
Dung 'abstract class' ₫ï̉ ₫ịnh nghĩa interface.
Tềm vưc truy xuết cac thanh phền.
Hö̃ trơ package
Đa hịnh ₫ềy ₫u.
Chỉ hữ trơ ₫ứi tương tam trong session JVM
Override function khi thưa kḯ.
Co thï̉ ₫ịnh nghĩa function overloaded.
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 37
Hö̃ trơ Class va Interface
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.
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 38
19
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'.
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
Chương 2: Th du v ̀ cac ng n ngư OOP
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.
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 40
20
Hö̃ trơ package
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).
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
Chương 2: Th du v ̀ cac ng n ngư OOP
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
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 42
21
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.
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
Chương 2: Th du v ̀ cac ng n ngư OOP
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 <HostName>");
return;
}
InetAddress host = InetAddress.getByName(args[0]);
String hostName = host.getHostName();
System.out.println ("Host name : "+hostName);
System.out.println ("IP address:"+host.getHostAddress());
}
catch (UnknownHostException e) {...}
}
}
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 44
22
Thđ du vï̀ chương trịnh Java
GUIClock
12.34.25
<<chưa>>
AlarmClock
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
Chương 2: Th du v ̀ cac ng n ngư OOP
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;
}
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 46
23
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;
}
}
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
Chương 2: Th du v ̀ cac ng n ngư OOP
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;
}
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
Chương 2: Th du v ̀ cac ng n ngư OOP
Slide 48
24