1
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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
ĐHBach 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 ś khai nim cơ ban cua hương ₫́i tương, cac ngn ngư
hương ₫́i tương thương dung, cơ ch́ dịch cac type/class sang ngn
ngư c̉ ₫ỉn (ngn ngư may).
2. n lai qui trnh phat trỉn ph̀n m̀m hơp nh́t.
3. n lai ngn ngư UML ₫ươc dung ₫̉ miu ta
cac artifacts cua qui
trnh phat trỉn ph̀n m̀m hơp nh́t.
4. Giơi thiu cac m̃u thít ḱ hương ₫́i tương ₫ươc dung ph̉ bín
trong cac ưng dung hin hanh va cac ưng dung tương lai.
Nöi dung mön hoc
2
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
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ưakḯ 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 nim cơ ban cua m hnh hương ₫́i tương
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 6
1. May tnh ś la thít bị co th̉ thưc hin 1 ś hưu han cac chưc năng
cơ ban (tp lnh), cơ ch́ thưc hin cac lnh la tư ₫ng tư lnh ₫̀u
cho ₫́n lnh cúi cung. Danh sach cac lnh ₫ươc thưc hin nay
₫ươc goi la
chương trnh.
2. b́t ky cng vic ngoai ₫ơi nao cung co th̉ ₫ươc chia thanh trnh tư
nhìu cng vic nho hơn. Trnh tư cac cng vic nho nay ₫ươc goi
la giai thut giai quýt cng vic ngoai ₫ơi. M̃i cng vic nho hơn
cung co th̉
₫ươc chia nho nưa, ⇒ cng vic ngoai ₫ơi la 1 trnh
tư cac lnh may (chương trnh).
3. v́n ₫̀ ḿu ch́t cua vic dung may tnh giai quýt v́n ₫̀ ngoai
Chương trnh = ću truc dư liu + giai thut
entry 'start'
global data
module
(package)
local data
of module
local data
of function
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Tư lêp trònh co cếu truc ₫ḯn OOP
5
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 9
Chương trnh = tp 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 nim cơ ban cua m hnh 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
ĐHBach Khoa Tp.HCM
Implementation
(class)
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 tp cac entry ma bn ngoai co th̉ giao típ vơi ₫́i
tương.
~ Dung signature ₫̉ ₫ịnh nghĩa m̃i entry, Signature g̀m :
tn method (operation)
danh sach ₫́i ś hnh thưc, m̃i ₫́i ś ₫ươc ₫ăc ta bơi 3
thuc tnh : tn, type va chì
u chuỷn ₫ng (IN, OUT,
INOUT).
₫ăc ta chưc năng cua method (thương la chu thch).
~ Dung abstract type (chư khng phai class) ₫̉ ₫ăc ta kỉu cho
bín, thuc tnh, tham ś hnh thưc.
~ User khng c̀n quan tm ₫́n class (hin thưc cu th̉) cua ₫́i
tương.
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
7
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 13
}
public int getAlignment( ) {
return alignment;
}
public abstract String toHTML( ); // abstract operation
}
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
8
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 tít hin thưc cua ₫́i tương,
khng cho bn ngoai th́y va truy xút ⇒ tnh ₫c lp cao
giưa cac ₫́i tương (hay tnh ḱt dnh - cohesion giưa cac
₫́i tương ŕt th́p).
che d́u cac thuc tnh dư liu : ńu c̀n cho phep truy
xút 1 thuc tnh dư liu, ta tao 2 method get/set tương
ưng ₫̉ giam sat vic truy xút va che d́u chi tít hin
thưc bn trong.
che d́u chi tít hin thưc cac method.
che d́u cac internal function va sư hin thưc cua chung.
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 16
// cac lnh ve ₫oan thăng
}
}
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 nhìu ₫́i tương khac tao nn ḿi
quan h bao gp 1 cach ₫ qui giưa cac ₫́i tương.
Co 2 goc nhn v̀ tnh bao gp : ngư nghĩa va hin thưc.
O
1
O
2
O
3
Goc nhn ngư nghĩa
Goc nhn hin
thưc
O
1
O
2
O
3
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
10
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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)
~ Thng ₫ip la 1 phep goi tac vu ₫́n 1 ₫́i tương tư 1
tham khao.
~ Thng ₫ip bao g̀m 3 ph̀n :
tham khao ₫́n ₫́i tương ₫ch.
tn tac vu mún goi.
danh sach tham ś thưc c̀n truỳn theo (hay nhn v̀ tư)
tac vu.
v du : aCircle.SetRadius (3); aCircle.Draw (pWnd);
~ Thng ₫ip la phương tin giao típ (hay tương tac)
duy nh́t giưa cac ₫́i tương.
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
11
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 lnh gơi thng ₫ip ₫́n ₫́i tương thng qua cung 1
tham khao nhưng ơ vị tr/thơi ₫ỉm khac nhau co th̉ gy ra
vic thưc thi method khac nhau cua cac ₫́i tương khac
nhau.
T1 p1; // C1 va C2 la 2 class hin thưc T1
12
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 tnh t̉ng quat hoa :
class t̉ng quat hoa cho phep san sinh tư ₫ng cac
class bnh thương, cac class bnh thương tư no chỉ co
th̉ tao ra ₫́i tương. Thương dung ngư nghĩa nay trong
giai ₫oan lp trnh.
ngươc vơi tnh thưa ḱ : supertype/superclass la
type/class t̉ng quat hoa cua cac con cua no. Thương
dung ngư nghĩa nay trong giai ₫oan phn tch/thít ḱ
ph̀n m̀m.
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 śng cua 1 ₫́i tương ₫c lp vơi ₫ơi ś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 khng con tham khao nao ₫́n
no, v tai thơi ₫ỉm nay ₫́i tương la rac. Vic xac ₫ịnh
chnh xac 1 ₫́i tương co phai la rac hay khng la 1 vic
ĐHBach 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 ngn 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
ĐHBach 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 ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 xút thng tin trong ₫́i tương :
private : thng tin bị che d́u hoan toan.
protected : chỉ che d́u bn ngoai nhưng cho phep cac ₫́i
tương con, chau, chăt truy xút.
public : cho phep t́t ca moi nơi truy xút.
Friend class
: la class ma m̃i function cua no ₫̀u co th̉ truy
xút tư do m̃i thanh ph̀n cua class hin tai.
Friend function : la function co th̉ truy xút tư do m̃i thanh
ph̀n cua class hin tai.
Co th̉ han ch́ t̀m vưc cua thanh vin cua class cha khi thưa
ḱ.
Chương 2: Th du v̀ cac ngn ngư OOP
16
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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' ńu mún ap dung tnh ₫a hnh
trong vic gơi thng bao yu c̀u function nay thưc thi.
T́t ca cac 'virtual function' ₫ươc quan ly trong 1 danh sach
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 ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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()
19
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 38
1. Chu ýu dung class ₫̉ ₫ịnh nghĩa kỉu cho cac bín, thuc
tnh.
Co th̉ dung interface ₫̉ ₫ịnh nghĩa kỉu cho cac bín, thuc
tnh. Đ́itươ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 khng
₫ươc xoa ₫́i tương.
class C1 extends RootClass { }
C1 o1; // o1 chưa tham khao ₫́n ₫́i tương C1
Khoa CNTT
ĐHBach 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 xút cac thanh ph̀n trong ₫́i tương :
private : thanh ph̀n bị che d́u hoan toan.
protected : che d́u bn ngoai nhưng cho phep cac ₫́i tương
con, chau, chăt truy xút.
public : cho phep t́t ca moi nơi truy xút.
friendly : cho phep moi ph̀n tư trong package truy xút. Đy
la t̀m vưc default va khng co tư khoa t̀m vưc tương minh.
Chương 2: Th du v̀ cac ngn ngư OOP
21
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 41
7. Package la ₫ơn vị quan ly t̀m vưc cua java, co th̉ chưa nhì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
thuc 1 package : tn ₫ươc qui ₫ịnh bơi phat bỉu package hay
la package default.
Nhìu file source co th̉ thuc cung 1package (dung cung tn
trong phat bỉu package).
'signature' khac nhau.
Chương 2: Th du v̀ cac ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 44
Thñ du vï̀ chương trònh Java
import java.net.*;
public class getnet {
public static void main(String args[]) {
try {
if(args.length!=1) {
System.out.println("Usage: java AddrLookupApp <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) { }
}
}
Chương 2: Th du v̀ cac ngn ngư OOP
23
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 47
Thñ du vï̀ cac class Java
public synchronized boolean letMeSleepFor(Sleeper s, long time)
{
int index = findNextSlot();
if (index == NOROOM) {
return false;
} else {
sleepers[index] = s;
sleepFor[index] = time;
new AlarmThread(index).start();
return true;
}
}
Chương 2: Th du v̀ cac ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 48
Thñ du vï̀ cac class Java
private synchronized int findNextSlot() {
for (int i = 0; i < MAX_CAPACITY; i++) {
if (sleepFor[i] == UNUSED)
return i;
}
return NOROOM;
}
private synchronized void wakeUpSleeper(int sleeperIndex) {
sleepers[sleeperIndex].wakeUp();
Slide 50
Thñ du vï̀ cac class Java
public interface Sleeper {
public void wakeUp();
public long ONE_SECOND = 1000;// in milliseconds
public long ONE_MINUTE = 60000; // in milliseconds
}
import java.applet.Applet;
import java.awt.Graphics;
import java.util.*;
import java.text.DateFormat;
public class GUIClock extends Applet implements Sleeper {
private AlarmClock clock;
public void init() {
clock = new AlarmClock();
}
Chương 2: Th du v̀ cac ngn ngư OOP