Mô tả:
6
giíi thiÖu vÒ ®èi tƯîng
(INTRODUCTION TO OBJECTS)
Néi dung:
Giíi thiÖu vÒ m«-®un
§é g¾n kÕt
Nèi kÕt
Bao gãi d÷ liÖu
KiÓu d÷ liÖu trõu tưîng
Th«ng tin Èn
§èi tưîng
Huúnh Xu©n HiÖp - CNPM
67
Giíi thiÖu vÒ m«-®un
(what is a module ?)
§Þnh nghÜa cña [Stevens, Myers, vµ Constantine, 1974] vÒ m«-®un:
tËp hîp cña mét hay nhiÒu c©u lÖnh kÕ tiÕp nhau ®ưîc ®Æt tªn,
c¸c phÇn kh¸c trong chư¬ng tr×nh cã thÓ kÝch ho¹t víi tªn ®ưîc ®Æt,
cã tËp hîp c¸c tªn biÕn riªng biÖt.
M«-®un lµ mét khèi ®¬n c¸c m· lÖnh cã thÓ kÝch ho¹t gièng như thñ tôc,
hµm hay phư¬ng thøc
Chip 1
Registers
ALU
Shifter
H×nh 6.1 ThiÕt kÕ cña m¸y vi tÝnh
Huúnh Xu©n HiÖp - CNPM
Chip 2
Registers
ALU
Shifter
Chip 3
H×nh 6.2 M¸y vi tÝnh H×nh 6.1 chÕ t¹o víi 3 chip
68
§é g¾n kÕt
(cohesion)
Lµ møc ®é tư¬ng t¸c bªn trong mét m«-®un
Myers ®Þnh nghÜa 7 thÓ lo¹i (møc) g¾n kÕt [Myers, 1978b]
7.
5.
4.
3.
2.
1.
G¾n kÕt chøc n¨ng
G¾n kÕt th«ng tin
G¾n kÕt truyÒn th«ng
G¾n kÕt thñ tôc
G¾n kÕt thêi gian
G¾n kÕt luËn lý
G¾n kÕt trïng khíp
H×nh 6.3 C¸c møc g¾n kÕt
Tèt
XÊu
G¾n kÕt trïng khíp (coincidental cohesion): m«-®un thùc hiÖn nhiÒu hµnh
®éng kh«ng liªn quan ®Õn nhau
VD: m«-®un víi tªn như in dßng tiÕp theo, ®¶o ngưîc chuçi ký tù tham
sè thø hai, thªm 7 cho tham sè thø 5, ®æi tham sè thø tư thµnh sè thùc
Huúnh Xu©n HiÖp - CNPM
69
G¾n kÕt luËn lý (logical cohesion): m«-®un thùc hiÖn chuçi c¸c hµnh ®éng
cã liªn quan víi nhau, mét trong sè ®ã ®ưîc chän bëi m«-®un gäi ®Õn
VD: m«-®un thùc hiÖn viÖc thªm, xãa, cËp nhËt c¸c mÈu tin trªn tËp tin
G¾n kÕt thêi gian (temporal cohesion): m«-®un thùc hiÖn chuçi c¸c hµnh
®éng liªn quan víi nhau theo thêi gian
VD: m«-®un víi tªn như më tËp tin cò, t¹o tËp tin míi, më tËp tin
giao dÞch, in tËp tin giao dÞch, khëi t¹o b¶ng kinh doanh khu vùc,
®äc mÈu tin giao dÞch ®Çu tiªn,®äc mÈu tin ®Çu tiªn trong tËp tin cò
G¾n kÕt thñ tôc (procedural cohesion): m«-®un thùc hiÖn chuçi c¸c hµnh
®éng liªn quan víi nhau theo c¸c bưíc ®óng tr×nh tù ph¸t triÓn s¶n phÈm
VD: m«-®un víi tªn như ®äc sè hiÖu bé phËn tõ tËp tin c¬ së d÷ liÖu
vµ cËp nhËt, söa ch÷a mÈu tin trªn tËp tin b¶o tr×
G¾n kÕt truyÒn th«ng (communcational cohesion): m«-®un thùc hiÖn chuçi
c¸c hµnh ®éng liªn quan víi nhau theo c¸c bưíc ®óng tr×nh tù ph¸t triÓn
s¶n phÈm vµ nÕu như mäi hµnh ®éng ®Òu ®ưîc thùc hiÖn trªn d÷ liÖu
gièng nhau
VD: m«-®un víi tªn như cËp nhËt mÈu tin trong c¬ së d÷ liÖu vµ ghi
vµo sæ hoÆc tÝnh to¸n quü ®¹o vµ göi ra m¸y in
Huúnh Xu©n HiÖp - CNPM
70
G¾n kÕt th«ng tin (information cohesion): m«-®un thùc hiÖn mét sè lưîng
c¸c hµnh ®éng, mçi hµnh ®éng cã ®Çu vµo riªng, m· lÖnh ®éc lËp vµ thùc
hiÖn trªn d÷ liÖu gièng nhau
VD:
§Þnh nghÜa b¶ng kinh doanh khu vùc
Vµo
Vµo
Vµo
Khëi t¹o b¶ng kinh doanh khu vùc
..........
CËp nhËt b¶ng kinh doanh khu vùc
..........
In b¶ng kinh doanh khu vùc
..........
Tho¸t
Tho¸t
Tho¸t
H×nh 6.4 M«-®un g¾n kÕt vÒ th«ng tin
Chøc n¨ng: m«-®un thùc hiÖn mét hµnh ®éng hoÆc nhËn lÊy mét kÕt qu¶
VD: m«-®un víi tªn như lÊy nhiÖt ®é lß; tÝnh to¸n quü ®¹o cña ®iÖn
tö; ghi lªn ®Üa mÒm; tÝnh to¸n tiÒn hoa hång
Huúnh Xu©n HiÖp - CNPM
71
VÝ dô vÒ c¸c d¹ng g¾n kÕt
chøc n¨ng
tÝnh to¸n nhiÖt ®é trung b×nh
hµng ngµy t¹i nhiÒu ®Þa ®iÓm
kh¸c nhau
trïng khíp
khëi t¹o tæng
sè vµ më c¸c
tËp tin
chøc n¨ng
t¹o mÈu tin
nhiÖt ®é míi
chøc n¨ng
lưu tr÷ mÈu tin
nhiÖt ®é
chøc n¨ng
®äc thêi gian
vµ nhiÖt ®é t¹i
®Þa ®iÓm
chøc n¨ng
lưu tr÷ mÈu tin
cho tõng ®Þa
®iÓm
trïng khíp
®ãng c¸c tËp
tin vµ in nhiÖt
®é trung b×nh
luËn lý
chän läc thêi
gian hoÆc c¸c
trưêng nhiÖt
®é
H×nh 6.5 BiÓu diÔn d¹ng g¾n kÕt cña tõng m«-®un
Huúnh Xu©n HiÖp - CNPM
72
Nèi kÕt
(coupling)
Lµ møc ®é tư¬ng t¸c gi÷a hai m«-®un, rÊt quan träng trong ®¸nh gi¸
C¸c møc ®é nèi kÕt
5.
4.
3.
2.
1.
Nèi kÕt d÷ liÖu
Nèi kÕt nh·n hiÖu
Nèi kÕt ®iÒu khiÓn
Nèi kÕt chung
Nèi kÕt néi dung
H×nh 6.6 C¸c møc ®é nèi kÕt
Tèt
XÊu
Nèi kÕt néi dung(content coupling): hai m«-®un ®ưîc gäi lµ nèi kÕt vÒ néi
dung nÕu như chóng cã thÓ tham kh¶o rùc tiÕp néi dung cña nhau
VD: m«-®un p tham kh¶o d÷ liÖu côc bé cña m«-®un q, hoÆc m«-®un p
thay ®æi mét c©u lÖnh cña m«-®un q.
Huúnh Xu©n HiÖp - CNPM
73
Nèi kÕt chung (common coupling): hai m«-®un ®ưîc gäi lµ nèi kÕt chung
nÕu c¶ hai truy xuÊt ®Õn c¸c d÷ liÖu toµn côc gièng nhau
VD:
ma
mb
biÕn toµn côc
H×nh 6.7 Nèi kÕt chung
Nèi kÕt ®iÒu khiÓn (control coupling): hai m«-®un ®ưîc gäi lµ nèi kÕt ®iÒu
khiÓn nÕu m«-®un nµy cã thÓ göi phµn tö ®iÒu khiÓn ®Õn m«-®un kia (cã
thÓ ®iÒu khiÓn lÉn nhau)
Nèi kÕt nh·n hiÖu (stamp coupling): hai m«-®un ®ưîc gäi lµ nèi kÕt nh·n
hiÖu nÕu như tham sè ®ưîc göi ®i lµ mét cÊu tróc d÷ liÖu vµ m«-®un ®ưîc
gäi chØ thao t¸c trªn mét vµi thµnh phÇn cña cÊu tróc d÷ liÖu ®ã
Nèi kÕt d÷ liÖu (data coupling): hai m«-®un ®ưîc gäi lµ nèi kÕt d÷ liÖu nÕu
như tÊt c¶ c¸c tham sè ®Òu lµ c¸c môc d÷ liÖu thuÇn nhÊt (homogeneous
data items)
Huúnh Xu©n HiÖp - CNPM
74
VÝ dô vÒ nèi kÕt
sè
1
2
3
4
5
6
p
1
q
3
2
4
r
5
t
p,t vµ u truy xuÊt
cïng mét c¬ së d÷
liÖu trong cËp nhËt
s
6
u
H×nh 6.8 S¬ ®å c¸c m«-®un nèi kÕt
p
xuÊt
cê tr¹ng th¸i
danh s¸ch c¸c phÇn cña m¸y bay
danh s¸ch c¸c phÇn cña m¸y bay
phÇn chÕ t¹o
tªn phÇn
H×nh 6.9 M« t¶ giao diÖn H×nh 6.6
q
r
D÷ liÖu
-
q
nhËp
kiÓu m¸y bay
m· hµm
sè phÇn
sè phÇn
§iÒu khiÓn
s
D÷ liÖu hoÆc
Nh·n hiÖu
D÷ liÖu hoÆc
Nh·n hiÖu
r
s
t
t
u
Chung
Chung
-
-
D÷ liÖu
-
D÷ liÖu
Chung
H×nh 6.10 Nèi kÕt gi÷a c¸c cÆp m«-®un
Huúnh Xu©n HiÖp - CNPM
75
Bao gãi d÷ liÖu
(data encapsulation)
Lµ mét d¹ng cña trõu tưîng hãa
m_encapsulation
Definition of job_queue
initialize_job_queue()
{..........}
add_job_to_queue(job j)
{..........}
remove_job_from_queue(job j)
{..........}
H×nh 6.11 ThiÕt kÕ job_queue trong mét
phÇn hÖ ®iÒu hµnh sö dông bao gãi d÷ liÖu
Huúnh Xu©n HiÖp - CNPM
76
KiÓu d÷ liÖu trõu tưîng
(abstract data types)
KiÓu d÷ liÖu trõu tưîng: lµ kiÓu d÷ liÖu cïng víi c¸c thao t¸c trªn chÝnh nã
VD:
class JobQueue
{
// d÷ liÖu
private int queueLength;
private int queue[25] = new int[25];
// c¸c
public
{...}
public
{...}
public
{...}
phư¬ng thøc
void initializeJobQueue()
void addJobToQueue(int jobNumber)
void removeJobfromQueue()
}
H×nh 6.12 JobQueue cµi ®Æt trªn Java như lµ mét kiÓu d÷ liÖu trõu tưîng
Trõu tưîng hãa thñ tôc (procedural abstraction)
Trõu tưîng hãa lÆp (iteration abstraction) [Liskov vµ Guttag, 1986]
Huúnh Xu©n HiÖp - CNPM
77
Th«ng tin Èn
(information hiding)
Do Parnas ®Ò xuÊt [Parnas, 1971, 1972a, 1972b]
Cµi ®Æt chi tiÕt cña:
queue
queueLength
initializeJobQueue
addJobToQueue
removeJobFromQueue
Giao diÖn:
initializeJobQueue
addJobToQueue
removeJobFromQueue
Th«ng tin Èn
Th«ng tin thÊy ®ưîc
H×nh 6.13 KiÓu d÷ liÖu trõu tưîng víi th«ng tin Èn
Huúnh Xu©n HiÖp - CNPM
78
§èi tưîng
(objects)
Lµ kiÓu d÷ liÖu trõu tưîng hay m«-®un víi th«ng tin ®ưîc g¾n kÕt
Lµ thÓ hiÖn (instance) cña mét kiÓu d÷ liÖu trõu tưîng
Hç trî thõa kÕ, kh¸i niÖm ®ưîc giíi thiÖu ®Çu tiªn ë ng«n ng÷ lËp tr×nh
Simula67 [Dahl vµ Nygaard, 1966; Dahl, Myrhaug and Nygaard, 1973]
Hç trî ®a h×nh vµ liªn kÕt ®éng
Mét sè vÊn ®Ò:
g¾n kÕt gi÷a c¸c m«-®un ®ưîc
thõa kÕ vµ c¸c m«-®un ®Þnh nghÜa
míi
nèi kÕt chung víi ®Þnh nghÜa c«ng
céng: public
C¸c ®èi tưîng víi ®é g¾n kÕt cao vµ nèi kÕt thÊp
C¸c ®èi tưîng
C¸c kiÓu d÷ kiÖu trõu tưîng
Bao gãi d÷ liÖu
C¸c m«-®un víi ®é g¾n kÕt cao vµ nèi kÕt thÊp
C¸c m«-®un
H×nh 6.14 C¸c kh¸i niÖm chÝnh
Huúnh Xu©n HiÖp - CNPM
79
- Xem thêm -