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 cocếu truc ₫ḯn OOP  
1.2 Đö́i tương, thuöc tñnh, tac vu.  
1.3 Abstract type vaclass.  
1.4 Tñnh bao ₫ong.  
1.5 Tñnh thưa kḯ vacơ chḯ 'override'.  
1.6 Tñnh bao göp.  
1.7 Thöng ₫iïp, tñnh ₫a hònh vakiï̉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 cocếu truc ₫ḯn OOP  
1. May tñnh sö́ lathiḯt bị cothï̉ 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 latư ₫ö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 lachương trònh.  
2. bết kycöng viïc ngoai ₫ơi nao cung cothï̉ ₫ươc chia thanh trònh tư  
nhiï̀u cöng viïc nhohơn. Trònh tư cac cöng viïc nhonay ₫ươc goi  
lagiai thuêt giai quyḯt cöng viïc ngoai ₫ơi. Mö̃i cöng viïc nhohơn  
cung cothï̉ ₫ươc chia nhonưa,... ⇒ cöng viïc ngoai ₫ơi la1 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 lalêp trònh. Cho ₫ḯn nay, lêp trònh lacö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 cocếu truc ₫ḯn OOP  
5. Dư liïu cua 1 chương trònh cothï̉ 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 tacếu truc dư liïu.  
- tềm vưc truy xuết miïu tagiơ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 cocế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 cocế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 cocế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  
(vaphên tñch/thiḯt kḯ) khac hăn so vơi trương phai cö̉ ₫iï̉n  
(cocế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 ₫oxuế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.  
ƒ Vahiïn nay ta co1 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 vatương tac vơi nhau.  
~ Đö́i tương bao gö̀m :  
ƒ thuöc tñnh (dư liïu) : mang 1 giatrị 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 latêp cac entry mabïn ngoai cothï̉ 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 tabơi 3  
thuöc tñnh : tïn, type vachiï̀u chuyï̉n ₫öng (IN, OUT,  
INOUT).  
ƒ ₫ăc tachưc năng cua method (thương lachuthñch).  
~ Dung abstract type (chư khöng phai class) ₫ï̉ ₫ăc takiï̉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 cuthï̉) 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 : giatrị cua tết cathuöc  
tñnh xac ₫ịnh trang thai cua ₫ö́i tương.  
ƒ kiï̉u cua thuöc tñnh cothï̉ latype 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 vacac internal function.  
~ Định nghĩa cac method tao vaxoa ₫ö́i tương.  
~ Định nghĩa cac method constructor vadestructor.  
~ 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ñ duvï̀ 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 vatruy 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 vache 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 vasư 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 nhecöng sưc ₫ịnh nghĩa  
type/class : ta cothï̉ ₫ịnh nghĩa cac type/class khöng phai  
tư ₫ều mabăng cach kḯ thưa type/class cosăn, ta chỉ ₫ịnh  
nghĩa thïm cac chi tiḯt mơi mathöi (thương khañt).  
ƒ Đa thưa kḯ hay ₫ơn thưa kḯ.  
ƒ Mö́i quan hïsupertype/subtype vasuperclass/subclass.  
ƒ cothï̉ override cac method cua class cha, kḯt qua  
override chỉ conghĩa trong ₫ö́i tương class con.  
ƒ Đö́i tương cua class con cothï̉ ₫ong vai trocua ₫ö́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ñ duvï̀ thưa kḯ vaoverride - 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 cothï̉ 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.  
ƒ Co2 goc nhòn vï̀ tñnh bao göp : ngư nghĩa vahiï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ñ duvï̀ 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 la1 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 vumuö́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 laphươ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 cothï̉ gêy ra  
viïc thưc thi method khac nhau cua cac ₫ö́i tương khac  
nhau.  
T1 p1; // C1 vaC2 la2 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 vadung 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 giatrị 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) latrươ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)  
~ Co2 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ư nochỉ 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 larac. Viïc xac ₫ịnh  
chñnh xac 1 ₫ö́i tương cophai larac hay khöng la1 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 lavĩnh hăng, mưc ₫öcothï̉ la1  
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 vatươ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 vatac vu. Cac tac vuthiḯ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 cothï̉ tö̀n tai quan hïbao göp, thưa kḯ, tö̉ng  
quat hoa.  
ƒ Tñnh ₫a hònh : kḯt quacua 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Ñ DUVÏ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ñ duvï̀ 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 cochon loc nhơ 'virtual function'  
6. Chỉ hö̃ trơ cac ₫ö́i tương tam.  
7. Override method khi thưa kḯ.  
8. Cothï̉ ₫ị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ñ duvï̀ 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 cothï̉ 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 cothï̉ 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ñ duvï̀ 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 la1  
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ñ duvï̀ 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 camoi nơi truy xuết.  
Friend class : laclass mamö̃i function cua no ₫ï̀u cothï̉ truy  
xuết tư do mö̃i thanh phền cua class hiïn tai.  
Friend function : lafunction cothï̉ truy xuết tư do mö̃i thanh  
phền cua class hiïn tai.  
Cothï̉ 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ñ duvï̀ cac ngön ngư OOP  
Slide 29  
Hö̃ trơ tñnh ₫a hònh cochon 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 cacac 'virtual function' ₫ươc quan lytrong 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ñ duvï̀ 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 lapointer 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ơ khanăng  
'Serialization'.  
7. Coquyï̀n 'override' bết kytoan 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ñ duvï̀ 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ñ duvï̀ 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ñ duvï̀ 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ñ duvï̀ 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ñ duvï̀ cac ngön ngư OOP  
Slide 35  
2.2 Ngön ngư Java  
1. Hö̃ trơ 'interface' (1 dang cua type) vaclass.  
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. Cothï̉ ₫ị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ñ duvï̀ cac ngön ngư OOP  
Slide 36  
18  
Hö̃ trơ Class vaInterface  
1. Chuyḯu dung class ₫ï̉ ₫ịnh nghĩa kiï̉u cho cac biḯn, thuöc  
tñnh.  
Cothï̉ dung interface ₫ï̉ ₫ịnh nghĩa kiï̉u cho cac biḯn, thuöc  
tñnh. Đö́i tương chỉ cothï̉ 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 vakhö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ñ duvï̀ 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 vakhöng cho phep 'instanciate' ₫ö́i tương.  
Ban chỉ cothï̉ dung class 'abstract class' ₫ï̉ ₫ăc takiï̉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 cothï̉ chưa ₫ềy ₫ucac hiïn thưc bïn trong,  
nhưng thương chỉ cochư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ñ duvï̀ 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 camoi nơi truy xuết.  
friendly : cho phep moi phền tư trong package truy xuết. Đêy  
latềm vưc default vakhöng cotư 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ñ duvï̀ cac ngön ngư OOP  
Slide 39  
Hö̃ trơ package  
7. Package la ₫ơn vị quan lytềm vưc cua java, cothï̉ chưa nhiï̀u  
class.  
package graphics;  
public class Circle extends Graphic implements Draggable {  
. . .  
}
Tết camoi 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  
lapackage default.  
Nhiï̀u file source cothï̉ 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ñ duvï̀ cac ngön ngư OOP  
Slide 40  
20  
Tải về để xem bản đầy đủ
pdf 175 trang myanh 24620 Free
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:

  • pdfbai_giang_phan_tich_thiet_ke_huong_doi_tuong.pdf