PHÂN TÍCH & THIẾT KẾ HƯỚNG ĐỐI TƯỢNG DÙNG UML - Pdf 17

1
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 1
Trương Đai hoc Bach Khoa Tp. Hö̀ Chñ Minh
Khoa Cöng Nghï Thöng Tin
Mön hoc
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
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 2
1. n lai 1 s́ khai nim cơ ban cua hương ₫́i tương, cac ngn ngư
hương ₫́i tương thương dung, cơ ch́ dịch cac type/class sang ngn
ngư c̉ ₫i̉n (ngn ngư may).
2. n lai qui trnh phat tri̉n ph̀n m̀m hơp nh́t.
3. n lai ngn ngư UML ₫ươc dung ₫̉ miu ta
 cac artifacts cua qui
trnh phat tri̉n ph̀n m̀m hơp nh́t.
4. Giơi thiu cac m̃u thi́t k́ hương ₫́i tương ₫ươc dung ph̉ bi́n
trong cac ưng dung hin hanh va cac ưng dung tương lai.
Nöi dung mön hoc
2
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 truc ₫ḯn OOP
1.2 Đö́i tương, thuöc tñnh, tac vu.
1.3 Abstract type va class.
1.4 Tñnh bao ₫ong.
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 quat hoa.
1.9 Tñnh vưng bï̀n.
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 6
1. May tnh s́ la thi́t bị co th̉ thưc hin 1 s́ hưu han cac chưc năng
cơ ban (tp lnh), cơ ch́ thưc hin cac lnh la tư ₫ng tư lnh ₫̀u
cho ₫́n lnh cu́i cung. Danh sach cac lnh ₫ươc thưc hin nay
₫ươc goi la
chương trnh.
2. b́t ky cng vic ngoai ₫ơi nao cung co th̉ ₫ươc chia thanh trnh tư
nhi̀u cng vic nho hơn. Trnh tư cac cng vic nho nay ₫ươc goi
la giai thut giai quy́t cng vic ngoai ₫ơi. M̃i cng vic nho hơn
cung co th̉
₫ươc chia nho nưa, ⇒ cng vic ngoai ₫ơi la 1 trnh
tư cac lnh may (chương trnh).
3. v́n ₫̀ m́u ch́t cua vic dung may tnh giai quy́t v́n ₫̀ ngoai

Chương trnh = c́u truc dư liu + giai thut
entry 'start'
global data
module
(package)
local data
of module
local data
of function
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Tư lêp trònh co cếu truc ₫ḯn OOP
5
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 cac ₫́i tương tương tac nhau
entry
₫́i tương
(object)
local data
of object
local data
of operation
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Tư lêp trònh co cếu truc ₫ḯn OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM

Implementation
(class)
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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ư dung ₫́i tương.
~ Interface la tp cac entry ma bn ngoai co th̉ giao ti́p vơi ₫́i
tương.
~ Dung signature ₫̉ ₫ịnh nghĩa m̃i entry, Signature g̀m :
 tn method (operation)
 danh sach ₫́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 cua method (thương la chu thch).
~ Dung abstract type (chư khng phai 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̉) cua ₫́i
tương.
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
7
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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: Cac khai nim cơ ban cua m hnh hương ₫́i tương
8
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 ₫ong (encapsulation)
z Bao ₫ong : che d́u moi chi ti́t hin thưc cua ₫́i tương,
khng cho bn ngoai th́y va truy xu́t ⇒ tnh ₫c lp cao
giưa cac ₫́i tương (hay tnh k́t dnh - cohesion giưa cac
₫́i tương r́t th́p).
 che d́u cac thuc tnh dư liu : n́u c̀n cho phep truy
xu́t 1 thuc tnh dư liu, ta tao 2 method get/set tương
ưng ₫̉ giam sat 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 cac method.
 che d́u cac internal function va sư hin thưc cua chung.
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 16

// cac lnh ve ₫oan thăng
}
}
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 khac tao nn m́i
quan h bao gp 1 cach ₫ qui giưa cac ₫́i tương.
 Co 2 goc nhn v̀ tnh bao gp : ngư nghĩa va hin thưc.
O
1
O
2
O
3
Goc nhn ngư nghĩa
Goc nhn hin
thưc
O
1
O
2
O
3
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
10

Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 phep goi tac vu ₫́n 1 ₫́i tương tư 1
tham khao.
~ Thng ₫ip bao g̀m 3 ph̀n :
 tham khao ₫́n ₫́i tương ₫ch.
 tn tac vu mu́n goi.
 danh sach tham s́ thưc c̀n truy̀n theo (hay nhn v̀ tư)
tac vu.
 v du : aCircle.SetRadius (3); aCircle.Draw (pWnd);
~ Thng ₫ip la phương tin giao ti́p (hay tương tac)
duy nh́t giưa cac ₫́i tương.
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
11
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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)
~ Cung 1 lnh gơi thng ₫ip ₫́n ₫́i tương thng qua cung 1
tham khao nhưng ơ vị tr/thơi ₫i̉m khac nhau co th̉ gy ra
vic thưc thi method khac nhau cua cac ₫́i tương khac
nhau.
T1 p1; // C1 va C2 la 2 class hin thưc T1


12
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 quat hoa (Generalization)
~ Co 2 ngư nghĩa khac nhau cua tnh t̉ng quat hoa :
 class t̉ng quat hoa cho phep san sinh tư ₫ng cac
class bnh thương, cac class bnh thương tư no chỉ co
th̉ tao ra ₫́i tương. Thương dung ngư nghĩa nay trong
giai ₫oan lp trnh.
 ngươc vơi tnh thưa k́ : supertype/superclass la
type/class t̉ng quat hoa cua cac con cua no. Thương
dung ngư nghĩa nay trong giai ₫oan phn tch/thi́t k́
ph̀n m̀m.
Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 cua 1 ₫́i tương ₫c lp vơi ₫ơi s́ng cua ph̀n tư
tao ra no.
 ₫́i tương phai t̀n tai khi con t nh́t 1 tham khao ₫́n no
trong h th́ng.
 ₫́i tương phai bị xoa khi khng con tham khao nao ₫́n
no, v tai thơi ₫i̉m nay ₫́i tương la rac. Vic xac ₫ịnh
chnh xac 1 ₫́i tương co phai la rac hay khng la 1 vic

ĐHBach 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̀ cac ngn ngư OOP
Trương Đai hoc Bach 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
ĐHBach 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ơ khai niïm class.
2. Cho phep Đa thưa kḯ.
3. Dung 'abstract class' ₫ï̉ ₫ịnh nghĩa interface.
4. Tềm vưc truy xuết cac thanh phền.
5. Đa hònh co chon loc nhơ 'virtual function'
6. Chỉ hö̃ trơ cac ₫ö́i tương tam.
7. Override method khi thưa kḯ.
8. Co thï̉ ₫ịnh nghĩa function overloaded.
Chương 2: Th du v̀ cac ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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̀ cac ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 thanh 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 hoan toan.
protected : chỉ che d́u bn ngoai nhưng cho phep cac ₫́i
tương con, chau, chăt truy xu́t.
public : cho phep t́t ca moi nơi truy xu́t.
Friend class
: la class ma m̃i function cua no ₫̀u co th̉ truy
xu́t tư do m̃i thanh ph̀n cua class hin tai.
Friend function : la function co th̉ truy xu́t tư do m̃i thanh
ph̀n cua class hin tai.
Co th̉ han ch́ t̀m vưc cua thanh vin cua class cha khi thưa
k́.
Chương 2: Th du v̀ cac ngn ngư OOP
16
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 chon loc
5. Định nghĩa 'virtual function' n́u mu́n ap dung tnh ₫a hnh
trong vic gơi thng bao yu c̀u function nay thưc thi.
T́t ca cac 'virtual function' ₫ươc quan ly trong 1 danh sach

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̀ cac ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 34
Cếu truc 1 chương trònh Dialog based ₫ơn gian
InitInstance()
DoModal()

19
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 dang cua type) va class.
2. Hö̃ trơ Đơn thưa kḯ.
3. Dung 'abstract class' ₫ï̉ ₫ịnh nghĩa interface.
4. Tềm vưc truy xuết cac thanh phền.
5. Hö̃ trơ package
6. Đa hònh ₫ềy ₫u.
7. Chỉ hö̃ trơ ₫ö́i tương tam trong session JVM
8. Override function khi thưa kḯ.
9. Co thï̉ ₫ịnh nghĩa function overloaded.
Chương 2: Th du v̀ cac ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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 dung class ₫̉ ₫ịnh nghĩa ki̉u cho cac bi́n, thuc
tnh.
Co th̉ dung interface ₫̉ ₫ịnh nghĩa ki̉u cho cac bi́n, thuc
tnh. Đ́itương chỉ co th̉ chưa tham khao ₫́n ₫́i tương khac.
2. Phai goi ham tao ₫́i tương 1 cach tương minh, nhưng khng
₫ươc xoa ₫́i tương.
class C1 extends RootClass { }
C1 o1; // o1 chưa tham khao ₫́n ₫́i tương C1

Khoa CNTT
ĐHBach 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 cac thanh phền
6. T̀m vưc truy xu́t cac thanh ph̀n trong ₫́i tương :
private : thanh ph̀n bị che d́u hoan toan.
protected : che d́u bn ngoai nhưng cho phep cac ₫́i tương
con, chau, chăt truy xu́t.
public : cho phep t́t ca moi nơi truy xu́t.
friendly : cho phep moi ph̀n tư trong package truy xu́t. Đy
la t̀m vưc default va khng co tư khoa t̀m vưc tương minh.
Chương 2: Th du v̀ cac ngn ngư OOP
21
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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ị quan ly t̀m vưc cua java, co th̉ chưa nhi̀u
class.
package graphics;
public class Circle extends Graphic implements Draggable {
. . .
}
T́t ca moi ph̀n tư ₫ươc ₫ịnh nghĩa trong 1 file source ₫̀u
thuc 1 package : tn ₫ươc qui ₫ịnh bơi phat bi̉u package hay
la package default.
Nhi̀u file source co th̉ thuc cung 1package (dung cung tn
trong phat bi̉u package).

'signature' khac nhau.
Chương 2: Th du v̀ cac ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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̀ cac ngn ngư OOP
23
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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ï̀ cac 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̀ cac ngn ngư OOP
Bö mön Cöng nghï phền mï̀m
Khoa CNTT
ĐHBach 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ï̀ cac 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ï̀ cac 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̀ cac ngn ngư OOP

Trích đoạn Kha năng tai sư dung Người dùng ral ệnh rút tiền từ tài khoản A 500USD → Giới thiệu (tt) Các ngữ cảnh nên dùng mẫu Composite Sơ ₫ồ cấu trúc của mẫu Proxy RealSubject
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status