Bài giảng Phân tích & Thiết kế hướng đối tượng
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
Mön TK. Hương ₫ö́i tương
Slide 1
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
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,
[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 TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Slide 2
1
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
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 3
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 4
2
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).
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
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
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 :
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
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
Chương trònh = cếu truc dư liïu + giai thuêt
module
(package)
global data
local data
of module
entry 'start'
local data
of function
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
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 = têp cac ₫ö́i tương tương tac nhau
₫ö́i tương
(object)
local data
of object
entry
local data
of operation
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 8
4
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 9
Đö́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)
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 10
5
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 11
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 12
6
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
}
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 13
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 14
7
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 15
Vñ du vï̀ thưa kḯ va override - Java
class Geometry {
public Draw(Graphics g);
protected int
protected double
protected COLORREF color;
};
xPos, yPos;
xScale, yScale;
class Line extends Geometry {
int xPos2, yPos2;
// other attributes...
public Draw(Graphics g) {
// cac lꢀnh ve ₫oan thăng
}
}
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 16
8
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
O1
O2
O1
O3
O3
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 17
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;
COLORREFcolor;
};
class Group : public Geometry {
public:
Group( );
~Group( );
virtual void Draw( Window *pWnd ); // override
private:
Geometry**ppGeo;
int geoCount;
// pointer container
};
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 18
9
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 19
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 20
10
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 21
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 22
11
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).
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 23
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 1: Cac khai niïm cơ ban cua mö hònh hương ₫ö́i tương
Slide 24
12
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
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 25
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 26
13
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 27
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;
};
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 28
14
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ḯ.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 29
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
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 30
15
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 31
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;
xScale, yScale;
double
...
};
class Point : Geometry {};
class Line : Geometry { .... };
class Polygon : Geometry {....};
class Rectangle : Geometry {....};
....
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 32
16
Cếu truc 1 chương trònh Dialog based ₫ơn gian
InitInstance()
DoModal()
CProgramDlg
CProgramApp
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 33
Cếu truc 1 chương trònh SDI ₫ơn gian
InitInstance()
CMainFrame
CProgramView
CProgramDoc
CSingleDocTemplate
CProgramApp
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 34
17
Cếu truc 1 chương trònh MDI ₫ơn gian
InitInstance()
CChildFrame
CProgramView
CProgramDoc
CMultiDocTemplate
CProgramApp
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 35
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 36
18
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 37
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
xPos, yPos;
xScale, yScale;
protected int
protected double
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'.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 38
19
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.
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 39
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).
Mön TK. Hương ₫ö́i tương
Bộ môn Công nghệ phần mềm
Khoa CNTT
ĐH Bách Khoa Tp.HCM
Chương 2: Thñ du vï̀ cac ngön ngư OOP
Slide 40
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phân tích & Thiết kế hướng đối tượng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_phan_tich_thiet_ke_huong_doi_tuong.pdf

