1. Trang chủ
  2. » Công Nghệ Thông Tin

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

175 492 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phân Tích & Thiết Kế Hướng Đối Tượng Dùng UML ppt
Trường học Trường Đại học Bách Khoa TP.HCM
Chuyên ngành Khoa học Máy tính
Thể loại bài giảng
Thành phố TP.HCM
Định dạng
Số trang 175
Dung lượng 1,52 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

1.3 Abstract type va class... Dung 'abstract class' ₫ï̉ ₫ịnh nghĩa interface.. Skeleton ₫ịnh nghĩa classclass Geometry : Object { // == class Geometry : public Object { int xPos, yPos;

Trang 1

PHÂN TÍCH & THIẾT KẾ

HƯỚNG ĐỐI TƯỢNG DÙNG UML

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

Trang 2

Tai liïu tham khao chñnh

Grady Booch, James Rumbaugh, Addison-Wesley, 1999.

[2] Software Engineering - A practitioner's approach , R.S

Pressman, McGraw-Hill, 1997

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

Trương Đai hoc Bach Khoa Tp Hö̀ Chñ Minh Khoa Cöng Nghï Thöng Tin

Chương 1

CAC KHAI NIÏM CƠ BAN CUA

MÖ HÒNH HƯƠNG ĐÖI TƯƠNG

Trang 3

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.

Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương

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

₫ươ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

₫ơi la l p tr nh Cho ₫ ́n nay, l p tr nh la c ng vi c cua con ngươi

(vơi sư trơ giup ngay cang nhi ̀u cua may t nh)

4 cac l nh cua chương tr nh (code) phai tham khao hoăc xư ly (truy

Tư lêp trònh co cếu truc ₫ḯn OOP

Trang 4

Tư lêp trònh co cếu truc ₫ḯn OOP

Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương

5 Dư li u cua 1 chương tr nh co th ̉ r ́t nhi ̀u va ₫a dang Đ ̉ truy

xu ́t ₫ung 1 dư li u ta c ̀n :

- t n nh n dang.

- ki ̉u dư li u mi u ta c ́u truc dư li u.

- t ̀m vưc truy xu ́t mi u ta giơi han khach hang truy xu ́t dư

li u.

6 Chương tr nh c ̉ ₫i ̉n = giai thu t + dư li u.

chương tr nh, sư dung lai code

8 Chương tr nh c ̉ ₫i ̉n co c ́u truc ph n c ́p như sau :

Chương tr nh = c ́u truc dư li u + giai thu t

entry 'start'

global data module

Trang 5

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

Tö̉ng quat 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 ́) khac hăn so vơi trương phai c ̉ ₫i ̉n

(co c ́u truc).

ƒ Băt ₫ ̀u nhen nhom vao 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,

Trang 6

Đö́i tương (Object)

~ M h nh ₫ ́i tương quan ni m chương tr nh bao g ̀m cac ₫ ́i

tương sinh s ́ng va tương tac vơi nhau.

~ Đ ́i tương bao g ̀m :

ƒ thu c t nh (dư li u) : mang 1 gia trị nh ́t ₫ịnh tai tưng thơi ₫i ̉m

ƒ tac vu (operation) : thưc hi n 1 c ng vi c nao ₫o

Interface

(abstract type)

Implementation (class)

Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương

Kiï̉u trưu tương (Abstract type)

~ 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

Trang 7

~ Class ₫ịnh nghĩa chi ti ́t hi n thưc ₫ ́i tương :

ƒ ₫ịnh nghĩa cac thu c t nh dư li u : gia trị cua t ́t ca thu c

t nh xac ₫ịnh trang thai cua ₫ ́i tương.

ƒ ki ̉u cua 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 khao ₫ ́n ₫ ́i

tương khac.

ƒ coding cac method va cac internal function.

~ Định nghĩa cac method tao va xoa ₫ ́i tương.

~ Định nghĩa cac method constructor va destructor.

~ User kh ng c ̀n quan t n ₫ ́n class 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

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;

Trang 8

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

Tñnh thưa kḯ (inheritance)

~ T nh thưa k ́ cho phep giam nhe c ng sưc ₫ịnh nghĩa

type/class : ta co th ̉ ₫ịnh nghĩa cac type/class kh ng phai

tư ₫ ̀u ma băng cach k ́ thưa type/class co săn, ta chỉ ₫ịnh

nghĩa th m cac 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 cac method cua class cha, k ́t qua

override chỉ co nghĩa trong ₫ ́i tương class con.

ƒ Đ ́i tương cua class con co th ̉ ₫ong vai tro cua ₫ ́i

tương cha nhưng ngươc lai thương kh ng ₫ung.

Trang 9

protected int xPos, yPos;

protected double xScale, yScale;

protected COLORREF color;

};

class Line extends Geometry {

int xPos2, yPos2;

ƒ 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.

Trang 10

int xPos, yPos;

double xScale, yScale;

ƒ t n tac vu mu ́n goi.

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.

Trang 11

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

L nh p1.meth1( ); ơ 2 vị tr khac nhau k ch hoat 2 method

khac nhau cua 2 class khac nhau.

Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương

Kiï̉m tra kiï̉u (type check)

quat) Type A tương th ch vơi type B ⇔ A chưa moi method

cua B va ưng vơi tưng method cua B :

ƒ t ̀n tai 1 method cung t n trong A.

nhau.

phai tương th ch vơi ki ̉u cua ₫ ́i s ́ tương ưng trong B.

ki ̉u cua ₫ ́i s ́ tương ưng trong A.

ki ̉u cua ₫ ́i s ́ tương ưng trong B.

Ö quan h  so trung hay quan h  con/cha (sub/super) la trương

Trang 12

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

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.

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

phưc tap code ưng dung kh ng ₫ươc phep lam, ₫ y la

c ng vi c cua h  th ́ng th ng qua module 'garbage

collection'.

ƒ vưng b ̀n kh ng phai la vĩnh hăng , mưc ₫  co th ̉ la 1

session cua may ao (JVM) hay l u dai (th ng qua ₫ĩa

Trang 13

~ M h nh hương ₫ ́i tương quan ni m th ́ giơi (hay chương tr nh)

bao g ̀m cac ₫ ́i tương s ́ng chung va tương tac vơi nhau.

~ Cac ₫ăc ₫i ̉m ch nh cua hương ₫ ́i tương :

ƒ Bao ₫ong : m ̃i ₫ ́i tương bao g ̀m dư li u va tac vu Cac tac vu thi ́t

l p n n hanh vi cua ₫ ́i tương Cac ₫ ́i tương ₫ươc ph n loai băng

class

ƒ Cac ₫ ́i tương tương tac vơi nhau băng cach gơi th ng ₫i p

ƒ giưa cac class/₫ ́i tương co th ̉ t ̀n tai quan h  bao g p, thưa k ́, t ̉ng

quat hoa

ƒ T nh ₫a h nh : k ́t qua cua sư ki ̉m tra ki ̉u dưa vao m ́i quan h 

'conformity'

ƒ T nh vưng b ̀n : ₫ ́i tương t ̀n tai khi con t nh ́t 1 tham khao ₫ ́n no

Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương

Trang 14

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

Chỉ hö̃ trơ khai niïm class

1 Dung class ₫ ̉ ₫ịnh nghĩa ki ̉u cho cac bi ́n, thu c t nh

⇒ ₫ ́i tương co th ̉ chưa v t ly ₫ ́i tương khac hay chưa tham

khao ₫ ́n ₫ ́i tương khac.

2 Đa thưa k ́ trong ₫ịnh nghĩa class ⇒ 1 class co th ̉ chưa nhi ̀u

class con trung nhau ⇒ dung "virtual base class" ₫ ̉ t ́i ưu hoa

b  nhơ ₫ ́i tương.

Trang 15

Class trưu tương (Abstract class)

3 H ̃ trơ khai ni m "abstract class" ₫ ̉ ₫ịnh nghĩa class chỉ chưa

th ng tin interface nhưng kh ng cho phep dung class nay ₫ ̉

₫ị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

double xScale, yScale;

COLORREF color;

};

Chương 2: Th du v ̀ cac ng n ngư OOP

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 ́.

Trang 16

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

"virtual function table".

Chương 2: Th du v ̀ cac ng n ngư OOP

Cac ₫ö́i tương ₫ï̀u tam thơi

6 Cac ₫ ́i tương chỉ t ̀n tai tam thơi trong kh ng gian process.

Tham khao ₫ ́n ₫ ́i tương thưc ch ́t la pointer cuc b .

chương tr nh phai tư vi ́t code cho hoat ₫ ng save/restore ₫ ́i

tương n ́u mu ́n lưu giư/dung lai ₫ ́i tương.

VC++ h ̃ trơ hoat ₫ ng save/restore ₫ ́i tương nhơ kha năng

'Serialization'.

7 Co quy ̀n 'override' b ́t ky toan tư hay function nao cua class

cha.

8 Cho phep ₫ịnh nghĩa cac ham 'overloaded' : cung t n nhưng

'signature' khac nhau.

Trang 17

Skeleton ₫ịnh nghĩa class

class Geometry : Object { // == class Geometry : public Object {

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

Cếu truc 1 chương trònh Dialog based ₫ơn gian

InitInstance()

DoModal()

CProgramApp

CProgramDlg

Trang 18

Chương 2: Th du v ̀ cac ng n ngư OOP

Cếu truc 1 chương trònh MDI ₫ơn gian

Trang 19

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

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 Đ ́i tươ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

o1 = New C1;

3 Interface chỉ ₫ươc dung 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 cac class kha ₫ơn gian.

Hö̃ trơ Class va Interface

Trang 20

Hö̃ trơ abstract class

5 H ̃ trơ khai ni m "abstract class" ₫ ̉ ₫ịnh nghĩa class chưa

th ng tin interface va kh ng cho phep 'instanciate' ₫ ́i tương

Ban chỉ co th ̉ dung class 'abstract class' ₫ ̉ ₫ăc ta ki ̉u cho

cac bi ́n hoăc ₫ịnh nghĩa cac 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 cac hi n thưc b n trong,

nhưng thương chỉ co chưa cac 'abstract function'.

Chương 2: Th du v ̀ cac ng n ngư OOP

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.

Trang 21

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).

Hö̃ trơ package

Chương 2: Th du v ̀ cac ng n ngư OOP

Hö̃ trơ ₫ềy ₫u tñnh ₫a hònh

8 T ́t ca cac public function ₫ươc quan ly trong 1 danh sach

"public function table".

Trang 22

Cac ₫ö́i tương ₫ï̀u 'tam thơi'

9 Cac ₫ ́i tương chỉ t ̀n tai tam thơi trong 1session chay JVM.

Ban co th ̉ tao ra cac ₫ ́i tương mơi ma kh ng c ̀n xoa no

Đ ́i tương se t ̀n tai m t khi con tham khao ₫ ́n no Module

Garbage Collection trong JVM se chịu trach nhi m phat hi n

₫ ́i tương 'rac' va xoa no ra khoi b  nhơ JVM.

10 Co quy ̀n 'override' b ́t ky function nao cua class cha.

11 Cho phep ₫ịnh nghĩa cac ham 'overloaded' : cung t n nhưng

'signature' khac nhau.

Chương 2: Th du v ̀ cac ng n ngư OOP

Thñ du vï̀ chương trònh Java

import java.net.*;

public class getnet {

public static void main(String args[]) {

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) { }

}

Trang 23

Thñ du vï̀ chương trònh Java

Chương 2: Th du v ̀ cac ng n ngư OOP

GUIClock

wakeup()

<<chưa>>

Thñ du vï̀ cac class Java

public class AlarmClock {

private static final int MAX_CAPACITY = 10;

private static final int UNUSED = -1;

private static final int NOROOM = -1;

private Sleeper[] sleepers = new Sleeper[MAX_CAPACITY];

private long[] sleepFor = new long[MAX_CAPACITY];

public AlarmClock () {

for (int i = 0; i < MAX_CAPACITY; i++)

sleepFor[i] = UNUSED;

}

Trang 24

Thñ du vï̀ cac class Java

public synchronized boolean letMeSleepFor(Sleeper s, long time)

Chương 2: Th du v ̀ cac ng n ngư OOP

Thñ du vï̀ cac class Java

private synchronized int findNextSlot() {

for (int i = 0; i < MAX_CAPACITY; i++) {

Trang 25

Chương 2: Th du v ̀ cac ng n ngư OOP

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

public class GUIClock extends Applet implements Sleeper {

private AlarmClock clock;

public void init() {

clock = new AlarmClock();

Trang 26

Thñ du vï̀ cac class Java

public void start() {

clock.letMeSleepFor(this, 1000);

}

public void paint(Graphics g) {

Calendar cal = Calendar.getInstance();

Date date = cal.getTime();

Chương 2: Th du v ̀ cac ng n ngư OOP

Trương Đai Hoc Bach Khoa Tp HCM Khoa Cöng nghï Thöng tin

Chương 3

NGUYÏN TĂÆC DỊCH OOP

) Dịch abstract type

) Dịch class

Trang 27

• Cac ₫ ́i tương thu c 1 s ́ loai nh ́t ₫ịnh (n)

• M ̃i loai ₫ ́i tương ₫ươc mi u ta bơi 1 type + 1 class

• Chương tr nh la t p n ₫ịnh nghĩa type + class

• Dịch chương tr nh OOP la vong lăp dịch n type + n

class.

• Ta se mi u ta qui tr nh dịch 1 type va 1 class

Tö̉ng quat vï̀ vến ₫ï̀ dịch OOP

Chương 3: Nguy n tăc dịch OOP

• Abstract type chỉ chưa th ng tin trưu tương

(interface), kh ng mi u ta sư hi n thưc → K ́t qua

vi c dịch 1 type chỉ dưng lai c y ngư nghĩa cua type

tương ưng ₫ ̉ phuc vu vi c ki ̉m tra ki ̉u, chư kh ng

tao code ma may.

• Chỉ c ̀n 3 bươc : duy t tư vưng, ph n t ch cu phap,

ph n t ch ngư canh.

• N n dung c ng cu h ̃ trơ như LEX, YACC.

Dịch 1 abstract type

Trang 28

Chương 3: Nguy n tăc dịch OOP

• Dịch class la c ng vi c ch nh cua chương tr nh dịch

OOP.

• G ̀m 2 c ng vi c ch nh : dịch thu c t nh dư li u va

dịch cac method (hay cac internal function).

• C ̀n ₫ ̀y ₫u cac bươc : duy t tư vưng, ph n t ch cu

phap, ph n t ch ngư canh, tao ma.

• N n dung c ng cu h ̃ trơ như LEX, YACC.

int proc4(int i);

void proc5 (double d);

};

Dịch thuöc tñnh dư liïu

typedef struct { // import cac field tư c ́u truc // ₫ươc sinh ra tư C0

// cac field tương ưng vơi C1 int C1_d;

int C1_i;

// cac field dư li u ₫i ̀u khi ̉n // tư tao bơi chương tr nh dịch void (*pvfaddr)() ;

} C1;

Trang 29

Dịch thuöc tñnh dư liïu (tt)

• m ̃i class → 1 record c ̉ ₫i ̉n.

• t n class → t n record.

• copy cac field dư li u cua c ́u truc sinh ra tư class cha.

• chuy ̉n tưng thu c t nh cua class thanh tưng field cua record,

'tuy t ₫ ́i hoa' t n cua thu c t nh ₫ ̉ tranh nhăp nhăng.

• th m cac field dư li u ₫i ̀u khi ̉n phuc vu cho run-time : th du

bang ₫ịa chỉ cac method cua ₫ ́i tương (pvftbl).

Chương 3: Nguy n tăc dịch OOP

Dịch thuöc tñnh dư liïu (tt)

• c ́u truc record ₫ươc dịch ra ma may thanh 1 vung nhơ li n tuc

co ₫  dai băng ₫  dai cua record.

- field C1 o1; C1_o1 db dup (sizeof(C1))

• truy xu ́t 1 thu c t nh dư li u trơ thanh vi c truy xu ́t nhơ

dung cach ₫ịnh ₫ịa chỉ chỉ s ́ :

- o1.i = 5; mov bx, C1_o1

mov [bx+4], 5

Trang 30

int proc4(int i, double k);

void proc5 (double d);

Chương 3: Nguy n tăc dịch OOP

Tao bang ₫ịa chỉ cac method (tt)

• tao bang ₫ịa chỉ g ̀m C1METHCNT ph ̀n tư (C1METHCNT la

s ́ method cua class hi n hanh, k ̉ ca cac method thưa k ́.

• m ̃i ph ̀n tư ₫ươc nh n dang qua chỉ s ́ va g ̀m 2 th ng tin

ch nh : t n gơi nhơ cua method va ₫ịa chỉ cua method.

• copy bang ₫ịa chỉ cua class cha ₫a co.

• hi u chỉnh lai cac ₫ịa chỉ cua cac method bị override.

• th m vao cac method mơi ₫ịnh nghĩa trong class hi n hanh.

Trang 31

Chương 3: Nguy n tăc dịch OOP

int C1::proc1(int i,double k) {

// goi ham C1_proc5(p,d);

C2_proc2(&o2, i,d);

// gơi th ng bao : ki ̉m tra, load, // anh xa bang ₫ịa chỉ method for (i = 0; i <C1METHCNT; i ++)

3

Dịch 1 method (tt)

• t n method ₫ươc chuy ̉n tư dang 'tương ₫ ́i' sang 'tuy t ₫ ́i'

(n ́i k ́t t n class vao).

• th m tham s ́ ₫ ̀u ti n cho ham sinh ra : mi u ta tham khao

₫ ́n ₫ ́i tương ma ham se truy xu ́t cac thu c t nh dư li u.

• t n thu c t nh ₫ươc chuy ̉n tư dang 'tương ₫ ́i' sang 'tuy t ₫ ́i'

(n ́i k ́t t n class vao).

• goi ham internal → goi ham nhưng th m tham s ́ ₫ ̀u ti n.

• gơi th ng bao 3 bươc :

— ki ̉m tra, t m, load va anh xa bang ₫ịa chỉ cac method cua

₫ ́i tương.

— t m chỉ s ́ cua method c ̀n goi trong bang (i).

— goi gian ti ́p method th ng qua ₫ịa chỉ ph ̀n tư thư i trong

Trang 32

Chương 3: Nguy n tăc dịch OOP

Tö́i ưu hoa code tao ra

• co 2 v ́n ₫ ̀ lơn trong qua tr nh dịch 1 class sang ng n ngư c ̉

₫i ̉n.

— bang ₫ịa chỉ method chi ́m nhi ̀u ch ̃.

— t ́n thơi gian ₫ ̉ phuc vu l nh gơi th ng bao : ki ̉m tra, load

va anh xa bang ₫ịa chỉ, t m chỉ s ́ method c ̀n goi va goi

gian ti ́p qua ₫ịa chỉ trong bang.

• 1 s ́ chương tr nh dịch t m cach t ́i ưu hoa cac v ́n ₫ ̀ nay.

• slide sau la cac t ́i ưu hoa cua chương tr nh dịch C++ va cai gia

phai tra.

Tö́i ưu hoa code tao ra (tt)

• trong C++, t ́t ca ₫ ́i tương ₫ ̀u tam thơi va găn chăt vao ưng

dung → bang ₫ịa chỉ cac method cua cac ₫ ́i tương lu n năm

săn trong kh ng gian cua ưng dung.

• m ̃i l ̀n tao ₫ ́i tương, bi ́n pvftbl trong ₫ ́i tương ₫ươc gan

ngay ₫ịa chỉ ₫ ̀u bang method → kh ng c ̀n lam bươc 1 cho

m ̃i l ̀n gơi th ng bao.

• C++ chỉ dung m ́i quan h  con/cha trong ki ̉m tra ki ̉u → c ng

vi c 2 ₫ươc lam tai thơi ₫i ̉m dịch thay v tai thơi ₫i ̉m gơi th ng

bao trong luc chay.

• c t t n gơi nhơ method kh ng c ̀n phai lưu trư trong bang ₫ịa

chỉ cac method.

• chỉ co cac virtual function mơi ₫ươc giai quy ́t theo cơ ch ́ ₫a

Trang 33

Chương 3: Nguy n tăc dịch OOP

Tö́i ưu hoa code tao ra (tt)

• cai gia phai tra cua vi c t ́i ưu hoa trong C++ :

— ngươi l p tr nh phai tư quy ́t ₫ịnh method nao c ̀n xư ly

theo cơ ch ́ ₫a h nh, ham nao kh ng ? N ́u sư quy ́t ₫ịnh

nay sai th se g y l ̃i khi chay, ma la ngươi th kho long

quy ́t ₫ịnh ch nh xac.

— t nh ₫a h nh chỉ ₫ung giưa cac ₫ ́i tương co m ́i quan h 

con/cha, ơ ₫o thư tư cac ₫ịa chỉ method cua moi class con

trong bang ₫ịa chỉ lu n gi ́ng thư tư cac method tương ưng

cua class cha, tuy nhi n giưa 2 class b ́t ky th kh ng th ̉

₫am bao → ki ̉m tra ki ̉u trong C++ kh ng th ̉ n ng c ́p l n

băng cach dung m ́i quan h  "conformity"

Trương Đai Hoc Bach Khoa Tp HCM Khoa Cöng nghï Thöng tin

Chương 4

QUI TRÒNH HƠP NHÊT & UML

) Qui trònh phat triï̉n phền mï̀m hơp nhết

) Tö̉ng quat vï̀ ngön ngư mö hònh UML

Trang 34

Software Engineering Process

What Is a Process?

Chương 4: UML & Qui tr nh hơp nh ́t

What is produced?

Who does it?

When does architecture happen?

When does product happen?

Trang 35

Chương 4: UML & Qui tr nh hơp nh ́t

time

Phase

Arch Iteration

Dev Iteration

Dev Iteration

Trans Iteration

Inception Elaboration Construction Transition

• Inception Define the scope of the project and

develop business case

• Elaboration Plan project, specify features, and

baseline the architecture

• Construction Build the product

• Transition Transition the product to its users

Trang 36

Product Release

Inception Elaboration Construction Transition

Chương 4: UML & Qui tr nh hơp nh ́t

Phases and Iterations

An iteration is a sequence of activities with an established plan and

evaluation criteria, resulting in an executable release

Arch

Iteration

Dev Iteration

Dev Iteration

Trans Iteration

Trang 37

ite r.

# 1 ite r.

# 2 ite r.

# n ite r.

# n + 1 ite r.

# n + 2 ite r.

# m ite r.

# m + 1 Inception Elaboration Construction Transition

I t e r a t io n s

Phases Core Workflows

An iteration in the elaboration phase

Chương 4: UML & Qui tr nh hơp nh ́t

Workflows and Models

Design Model Model Depl.

Impl.

Model

Analysis Model

UML diagrams provide views into each model

Each workflow is associated with one or more models.

Trang 38

Collaboration Diagrams

Component Diagrams Deployment Diagrams

Object Diagrams

Statechart Diagrams

Sequence Diagrams

Class Diagrams

Activity Diagrams

Chương 4: UML & Qui tr nh hơp nh ́t

Analysis & Design Model

Use Case Diagrams

Collaboration Diagrams

Component Diagrams Deployment Diagrams

Object Diagrams

Statechart Diagrams

Sequence Diagrams

Class Diagrams

Activity Diagrams

Trang 39

Collaboration Diagrams

Component Diagrams Deployment Diagrams

Object Diagrams

Statechart Diagrams

Sequence Diagrams

Class Diagrams

Activity Diagrams

Collaboration Diagrams

Component Diagrams Deployment Diagrams

Object Diagrams

Statechart Diagrams

Sequence Diagrams

Class Diagrams

Trang 40

Overview of the Unified Process

• The Unified Process is

— Iterative and incremental

— Use case driven

— Architecture-centric

— Risk confronting

Chương 4: UML & Qui tr nh hơp nh ́t

Use Case Driven

Use Cases bind these workflows together

Analysis Design

Ngày đăng: 10/07/2014, 13:20

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w