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ưakḯ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.
175 trang |
Chia sẻ: luyenbuizn | Lượt xem: 1080 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Phân tích và thiết kế hướng đối tượng dùng UML, để xem tài liệu hoàn chỉnh 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 t
Các file đính kèm theo tài liệu này:
- PHANTICHTHIETKEHUONGDOITUONGDUNGUML.pdf