1.3 Abstract type va class... Dung 'abstract class' ₫ï̉ ₫ịnh nghĩa interface.. Skeleton ₫ịnh nghĩa classclass Geometry : Object { // == class Geometry : public Object { int xPos, yPos;
Trang 1PHÂN TÍCH & THIẾT KẾ
HƯỚNG ĐỐI TƯỢNG DÙNG UML
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
Trang 2Tai liïu tham khao 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 Đ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
Trang 31.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.
Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương
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
₫ươ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
Tư lêp trònh co cếu truc ₫ḯn OOP
Trang 4Tư 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.
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 :
Chương tr nh = c ́u truc dư li u + giai thu t
entry 'start'
global data module
Trang 5Chươ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
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,
Trang 6Đö́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
Kiï̉u trưu tương (Abstract type)
~ 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
Trang 7~ 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
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 8Tñ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
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.
Trang 9protected 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 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.
Trang 10int xPos, yPos;
double xScale, yScale;
t n tac vu mu ́n goi.
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.
Trang 11Tñ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
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
Kiï̉m tra kiï̉u (type check)
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.
nhau.
phai tương th ch vơi ki ̉u cua ₫ ́i s ́ tương ưng trong B.
ki ̉u cua ₫ ́i s ́ tương ưng trong A.
ki ̉u cua ₫ ́i s ́ tương ưng trong B.
Ö quan h so trung hay quan h con/cha (sub/super) la trương
Trang 12Tñ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
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.
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
Trang 13~ 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
Trang 141 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
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.
Trang 15Class 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
double xScale, yScale;
COLORREF color;
};
Chương 2: Th du v ̀ cac ng n ngư OOP
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 ́.
Trang 16Hö̃ 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".
Chương 2: Th du v ̀ cac ng n ngư OOP
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.
Trang 17Skeleton ₫ị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 ̀ cac ng n ngư OOP
Cếu truc 1 chương trònh Dialog based ₫ơn gian
InitInstance()
DoModal()
CProgramApp
CProgramDlg
Trang 18Chương 2: Th du v ̀ cac ng n ngư OOP
Cếu truc 1 chương trònh MDI ₫ơn gian
Trang 191 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
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
Trang 20Hö̃ 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
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 ca moi nơi truy xu ́t.
friendly : cho phep moi ph ̀n tư trong package truy xu ́t Đ y
la t ̀m vưc default va kh ng co tư khoa t ̀m vưc tương minh.
Trang 21T ́t ca moi 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
la package default.
Nhi ̀u file source co th ̉ thu c cung 1package (dung cung t n
trong phat bi ̉u package).
Hö̃ trơ package
Chương 2: Th du v ̀ cac ng n ngư OOP
Hö̃ trơ ₫ềy ₫u tñnh ₫a hònh
8 T ́t ca cac public function ₫ươc quan ly trong 1 danh sach
"public function table".
Trang 22Cac ₫ö́i tương ₫ï̀u 'tam thơi'
9 Cac ₫ ́i tương chỉ t ̀n tai tam thơi trong 1session chay JVM.
Ban co th ̉ tao ra cac ₫ ́i tương mơi ma kh ng c ̀n xoa no
Đ ́i tương se t ̀n tai m t khi con tham khao ₫ ́n no Module
Garbage Collection trong JVM se chịu trach nhi m phat hi n
₫ ́i tương 'rac' va xoa no ra khoi b nhơ JVM.
10 Co quy ̀n 'override' b ́t ky function nao cua class cha.
11 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
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 23Thñ du vï̀ chương trònh Java
Chương 2: Th du v ̀ cac ng n ngư OOP
GUIClock
wakeup()
<<chưa>>
Thñ du vï̀ cac 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 24Thñ du vï̀ cac class Java
public synchronized boolean letMeSleepFor(Sleeper s, long time)
Chương 2: Th du v ̀ cac ng n ngư OOP
Thñ du vï̀ cac class Java
private synchronized int findNextSlot() {
for (int i = 0; i < MAX_CAPACITY; i++) {
Trang 25Chương 2: Th du v ̀ cac ng n ngư OOP
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
public class GUIClock extends Applet implements Sleeper {
private AlarmClock clock;
public void init() {
clock = new AlarmClock();
Trang 26Thñ du vï̀ cac 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 ̀ cac ng n ngư OOP
Trương Đai Hoc Bach 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• Cac ₫ ́i tương thu c 1 s ́ loai nh ́t ₫ịnh (n)
• M ̃i loai ₫ ́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 vong 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 quat 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 lai c y ngư nghĩa cua type
tương ưng ₫ ̉ phuc vu vi c ki ̉m tra ki ̉u, chư kh ng
tao code ma may.
• Chỉ c ̀n 3 bươc : duy t tư vưng, ph n t ch cu phap,
ph n t ch ngư canh.
• N n dung c ng cu h ̃ trơ như LEX, YACC.
Dịch 1 abstract type
Trang 28Chương 3: Nguy n tăc dịch OOP
• Dịch class la c ng vi c ch nh cua 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 cac method (hay cac internal function).
• C ̀n ₫ ̀y ₫u cac bươc : duy t tư vưng, ph n t ch cu
phap, ph n t ch ngư canh, tao ma.
• N n dung 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 cac field tư c ́u truc // ₫ươc sinh ra tư C0
// cac field tương ưng vơi C1 int C1_d;
int C1_i;
// cac field dư li u ₫i ̀u khi ̉n // tư tao bơi chương tr nh dịch void (*pvfaddr)() ;
} C1;
Trang 29Dịch thuöc tñnh dư liïu (tt)
• m ̃i class → 1 record c ̉ ₫i ̉n.
• t n class → t n record.
• copy cac field dư li u cua c ́u truc sinh ra tư class cha.
• chuy ̉n tưng thu c t nh cua class thanh tưng field cua record,
'tuy t ₫ ́i hoa' t n cua thu c t nh ₫ ̉ tranh nhăp nhăng.
• th m cac field dư li u ₫i ̀u khi ̉n phuc vu cho run-time : th du
bang ₫ịa chỉ cac method cua ₫ ́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 truc record ₫ươc dịch ra ma may thanh 1 vung nhơ li n tuc
co ₫ dai băng ₫ dai cua record.
- field C1 o1; C1_o1 db dup (sizeof(C1))
• truy xu ́t 1 thu c t nh dư li u trơ thanh vi c truy xu ́t nhơ
dung cach ₫ịnh ₫ịa chỉ chỉ s ́ :
- o1.i = 5; mov bx, C1_o1
mov [bx+4], 5
Trang 30int proc4(int i, double k);
void proc5 (double d);
Chương 3: Nguy n tăc dịch OOP
Tao bang ₫ịa chỉ cac method (tt)
• tao bang ₫ịa chỉ g ̀m C1METHCNT ph ̀n tư (C1METHCNT la
s ́ method cua class hi n hanh, k ̉ ca cac method thưa k ́.
• m ̃i ph ̀n tư ₫ươc nh n dang qua chỉ s ́ va g ̀m 2 th ng tin
ch nh : t n gơi nhơ cua method va ₫ịa chỉ cua method.
• copy bang ₫ịa chỉ cua class cha ₫a co.
• hi u chỉnh lai cac ₫ịa chỉ cua cac method bị override.
• th m vao cac method mơi ₫ịnh nghĩa trong class hi n hanh.
Trang 31Chương 3: Nguy n tăc dịch OOP
int C1::proc1(int i,double k) {
// goi ham C1_proc5(p,d);
C2_proc2(&o2, i,d);
// gơi th ng bao : ki ̉m tra, load, // anh xa bang ₫ịa chỉ method for (i = 0; i <C1METHCNT; i ++)
3
Dịch 1 method (tt)
• t n method ₫ươc chuy ̉n tư dang 'tương ₫ ́i' sang 'tuy t ₫ ́i'
(n ́i k ́t t n class vao).
• th m tham s ́ ₫ ̀u ti n cho ham sinh ra : mi u ta tham khao
₫ ́n ₫ ́i tương ma ham se truy xu ́t cac thu c t nh dư li u.
• t n thu c t nh ₫ươc chuy ̉n tư dang 'tương ₫ ́i' sang 'tuy t ₫ ́i'
(n ́i k ́t t n class vao).
• goi ham internal → goi ham nhưng th m tham s ́ ₫ ̀u ti n.
• gơi th ng bao 3 bươc :
— ki ̉m tra, t m, load va anh xa bang ₫ịa chỉ cac method cua
₫ ́i tương.
— t m chỉ s ́ cua method c ̀n goi trong bang (i).
— goi gian ti ́p method th ng qua ₫ịa chỉ ph ̀n tư thư i trong
Trang 32Chương 3: Nguy n tăc dịch OOP
Tö́i ưu hoa code tao ra
• co 2 v ́n ₫ ̀ lơn trong qua tr nh dịch 1 class sang ng n ngư c ̉
₫i ̉n.
— bang ₫ịa chỉ method chi ́m nhi ̀u ch ̃.
— t ́n thơi gian ₫ ̉ phuc vu l nh gơi th ng bao : ki ̉m tra, load
va anh xa bang ₫ịa chỉ, t m chỉ s ́ method c ̀n goi va goi
gian ti ́p qua ₫ịa chỉ trong bang.
• 1 s ́ chương tr nh dịch t m cach t ́i ưu hoa cac v ́n ₫ ̀ nay.
• slide sau la cac t ́i ưu hoa cua chương tr nh dịch C++ va cai gia
phai tra.
Tö́i ưu hoa code tao ra (tt)
• trong C++, t ́t ca ₫ ́i tương ₫ ̀u tam thơi va găn chăt vao ưng
dung → bang ₫ịa chỉ cac method cua cac ₫ ́i tương lu n năm
săn trong kh ng gian cua ưng dung.
• m ̃i l ̀n tao ₫ ́i tương, bi ́n pvftbl trong ₫ ́i tương ₫ươc gan
ngay ₫ịa chỉ ₫ ̀u bang method → kh ng c ̀n lam bươc 1 cho
m ̃i l ̀n gơi th ng bao.
• C++ chỉ dung m ́i quan h con/cha trong ki ̉m tra ki ̉u → c ng
vi c 2 ₫ươc lam tai thơi ₫i ̉m dịch thay v tai thơi ₫i ̉m gơi th ng
bao trong luc chay.
• c t t n gơi nhơ method kh ng c ̀n phai lưu trư trong bang ₫ịa
chỉ cac method.
• chỉ co cac virtual function mơi ₫ươc giai quy ́t theo cơ ch ́ ₫a
Trang 33Chương 3: Nguy n tăc dịch OOP
Tö́i ưu hoa code tao ra (tt)
• cai gia phai tra cua vi c t ́i ưu hoa trong C++ :
— ngươi l p tr nh phai tư quy ́t ₫ịnh method nao c ̀n xư ly
theo cơ ch ́ ₫a h nh, ham nao kh ng ? N ́u sư quy ́t ₫ịnh
nay sai th se g y l ̃i khi chay, ma la ngươi th kho long
quy ́t ₫ịnh ch nh xac.
— t nh ₫a h nh chỉ ₫ung giưa cac ₫ ́i tương co m ́i quan h
con/cha, ơ ₫o thư tư cac ₫ịa chỉ method cua moi class con
trong bang ₫ịa chỉ lu n gi ́ng thư tư cac method tương ưng
cua class cha, tuy nhi n giưa 2 class b ́t ky th kh ng th ̉
₫am bao → ki ̉m tra ki ̉u trong C++ kh ng th ̉ n ng c ́p l n
băng cach dung m ́i quan h "conformity"
Trương Đai Hoc Bach Khoa Tp HCM Khoa Cöng nghï Thöng tin
Chương 4
QUI TRÒNH HƠP NHÊT & UML
) Qui trònh phat triï̉n phền mï̀m hơp nhết
) Tö̉ng quat vï̀ ngön ngư mö hònh UML
Trang 34Software 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 35Chươ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 36Product 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 37ite 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 38Collaboration 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 39Collaboration 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 40Overview 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