Lp trình HĐT http://www.ebook.edu.vn
1
CH¬NG 1
C¸C KH¸I NIÖM C¬ Së
cña LËP TR×NH HíNG §èI TîNG
Ch¬ng 1 tr×nh bµy nh÷ng vÊn ®Ò sau:
¾ Th¶o luËn vÒ c¸ch tiÕp cËn híng ®èi tîng, nh÷ng nhîc ®iÓm cña lËp tr×nh
truyÒn thèng vµ c¸c ®Æc ®iÓm cña lËp tr×nh híng ®èi tîng.
¾ C¸c kh¸i niÖm c¬ së cña ph¬ng ph¸p híng ®èi tîng:
§èi tîng
Líp
Trõu tîng hãa d÷ liÖu vµ bao gãi th«ng tin
KÕ thõa
T¬ng øng béi
Liªn kÕt ®éng
TruyÒn th«ng b¸o
¾ C¸c bíc cÇn thiÕt ®Ó thiÕt kÕ ch¬ng tr×nh theo híng ®èi tîng
¾ C¸c u ®iÓm cña lËp tr×nh híng ®èi tîng
¾ C¸c ng«n ng÷ híng ®èi tîng
¾ Mét sè øng dông cña lËp tr×nh híng ®èi tîng
1.1. Giíi thiÖu
1.1.1. TiÕp cËn híng ®èi tîng
Trong thÕ giíi thùc, chung quanh chóng ta lμ nh÷ng ®èi tîng, ®ã lμ c¸c
thùc thÓ cã mèi quan hÖ víi nhau. VÝ dô c¸c phßng trong mét c«ng ty kinh
doanh ®îc xem nh nh÷ng ®èi tîng. C¸c phßng ë ®©y cã thÓ lμ: phßng qu¶n
lý, phßng b¸n hμng, phßng kÕ to¸n, phßng tiÕp thÞ,... Mçi phßng ngoμi nh÷ng c¸n
bé ®¶m nhiÖm nh÷ng c«ng viÖc cô thÓ, cßn cã nh÷ng d÷ liÖu riªng nh th«ng tin
vÒ nh©n viªn, doanh sè b¸n hμng, hoÆc c¸c d÷ liÖu kh¸c cã liªn quan ®Õn bé phËn
®ã. ViÖc ph©n chia c¸c phßng chøc n¨ng trong c«ng ty sÏ t¹o ®iÒu kiÖn dÔ dμng
cho viÖc qu¶n lý c¸c ho¹t ®éng. Mçi nh©n viªn trong phßng sÏ ®iÒu khiÓn vμ
lý d÷ liÖu cña phßng ®ã. VÝ dô phßng kÕ to¸n phô tr¸ch vÒ l¬ng bæng nh©n viªn
trong c«ng ty. NÕu b¹n ®ang ë bé phËn tiÕp thÞ vμ cÇn t×m th«ng tin chi tiÕt vÒ
l¬ng cña ®¬n vÞ m×nh th× sÏ gëi yªu cÇu vÒ phßng kÕ to¸n. Víi c¸ch lμm nμy
b¹n ®îc ®¶m b¶o lμ chØ cã nh©n viªn cña bé phËn kÕ to¸n ®îc quyÒn truy cËp
Lp trình HĐT http://www.ebook.edu.vn
2
d÷ liÖu vμ cung cÊp th«ng tin cho b¹n. §iÒu nμy còng cho thÊy r»ng, kh«ng cã
ngêi nμo thuéc bé phËn kh¸c cã thÓ truy cËp vμ thay ®æi d÷ liÖu cña bé phËn kÕ
to¸n. Kh¸i niÖm nh thÕ vÒ ®èi tîng hÇu nh cã thÓ ®îc më réng ®èi víi mäi
lÜnh vùc trong ®êi sèng x· héi vμ h¬n n÷a - ®èi víi viÖc tæ chøc ch¬ng tr×nh.
Mäi øng dông cã thÓ ®îc ®Þnh nghÜa nh mét tËp c¸c thùc thÓ - hoÆc c¸c ®èi
tîng, sao cho qu¸ tr×nh t¸i t¹o nh÷ng suy nghÜa cña chóng ta lμ gÇn s¸t nhÊt vÒ
thÕ giíi thùc.
Trong phÇn tiÕp theo chóng ta sÏ xem xÐt ph¬ng ph¸p lËp tr×nh truyÒn
thèng ®Ó tõ ®ã thÊy r»ng v× sao chóng ta cÇn chuyÓn sang ph¬ng ph¸p lËp tr×nh
híng ®èi tîng.
1.1.2. Nh÷ng nhîc ®iÓm cña lËp tr×nh híng thñ tôc
C¸ch tiÕp cËn lËp tr×nh truyÒn thèng lμ lËp tr×nh híng thñ tôc (LTHTT).
Theo c¸ch tiÕp cËn nμy th× mét hÖ thèng phÇn mÒm ®îc xem nh lμ d·y c¸c
c«ng viÖc cÇn thùc hiÖn nh ®äc d÷ liÖu, tÝnh to¸n, xö lý, lËp b¸o c¸o vμ in Ên kÕt
qu¶ v.v... Mçi c«ng viÖc ®ã sÏ ®îc thùc hiÖn bëi mét sè hμm nhÊt ®Þnh. Nh
vËy träng t©m cña c¸ch tiÕp cËn nμy lμ c¸c hμm chøc n¨ng. LTHTT sö dông kü
thuËt ph©n r· hμm chøc n¨ng theo c¸ch tiÕp cËn trªn xuèng (top-down) ®Ó t¹o ra
cÊu tróc ph©n cÊp. C¸c ng«n ng÷ lËp tr×nh bËc cao nh COBOL, FORTRAN,
PASCAL, C, v.v..., lμ nh÷ng ng«n ng÷ lËp tr×nh híng thñ tôc. Nh÷ng nhîc
®iÓm chÝnh cña LTHTT lμ:
¾ Ch¬ng tr×nh khã kiÓm so¸t vμ khã kh¨n trong viÖc bæ sung, n©ng cÊp
ch¬ng tr×nh. Ch¬ng tr×nh ®îc x©y dùng theo c¸ch TCHTT thùc chÊt lμ
danh s¸ch c¸c c©u lÖnh mμ theo ®ã m¸y tÝnh cÇn thùc hiÖn. Danh s¸ch c¸c
lÖnh ®ã ®îc tæ chøc thμnh tõng nhãm theo ®¬n vÞ cÊu tróc cña ng«n ng÷ lËp
tr×nh vμ ®îc gäi lμ hμm/thñ tôc. Trong ch¬ng tr×nh cã nhiÒu hμm/thñ tôc,
thêng th× cã nhiÒu thμnh phÇn d÷ liÖu quan träng sÏ ®îc khai b¸o tæng thÓ
(global) ®Ó c¸c hμm/thñ tôc cã thÓ truy nhËp, ®äc vμ lμm thay ®æi gi¸ trÞ cña
biÕn tæng thÓ. §iÒu nμy sÏ lμm cho ch¬ng tr×nh rÊt khã kiÓm so¸t, nhÊt lμ ®èi
víi c¸c ch¬ng tr×nh lín, phøc t¹p th× vÊn ®Ò cμng trë nªn khã kh¨n h¬n. Khi
ta muèn thay ®æi, bæ sung cÊu tróc d÷ liÖu dïng chung cho mét sè hμm/thñ
tôc th× ph¶i thay ®æi hÇu nh tÊt c¶ c¸c hμm/thñ tôc liªn quan ®Õn d÷ liÖu ®ã.
¾ M« h×nh ®îc x©y dùng theo c¸ch tiÕp cËn híng thñ tôc kh«ng m« t¶ ®îc
®Çy ®ñ, trung thùc hÖ thèng trong thùc tÕ.
¾ Ph¬ng ph¸p TCHTT ®Æt träng t©m vμo hμm lμ híng tíi ho¹t ®éng sÏ kh«ng
thùc sù t¬ng øng víi c¸c thùc thÓ trong hÖ thèng cña thÕ giíi thùc.
Lp trình HĐT http://www.ebook.edu.vn
3
1.1.3. LËp tr×nh híng ®èi tîng
LËp tr×nh híng ®èi tîng (Object Oriented Programming - LTH§T) lμ
ph¬ng ph¸p lËp tr×nh lÊy ®èi tîng lμm nÒn t¶ng ®Ó x©y dùng thuËt gi¶i, x©y
dùng ch¬ng tr×nh. §èi tîng ®îc x©y dùng trªn c¬ së g¾n cÊu tróc d÷ liÖu víi
c¸c ph¬ng thøc (c¸c hμm/thñ tôc) sÏ thÓ hiÖn ®îc ®óng c¸ch mμ chóng ta suy
nghÜ, bao qu¸t vÒ thÕ giíi thùc. LTH§T cho phÐp ta kÕt hîp nh÷ng tri thøc bao
qu¸t vÒ c¸c qu¸ tr×nh víi nh÷ng kh¸i niÖm trõu tîng ®îc sö dông trong m¸y
tÝnh.
§iÓm c¨n b¶n cña ph¬ng ph¸p LTH§T lμ thiÕt kÕ ch¬ng tr×nh xoay
quanh d÷ liÖu cña hÖ thèng. NghÜa lμ c¸c thao t¸c xö lý cña hÖ thèng ®îc g¾n
liÒn víi d÷ liÖu vμ nh vËy khi cã sù thay ®æi cña cÊu tróc d÷ liÖu th× chØ ¶nh
hëng ®Õn mét sè Ýt c¸c ph¬ng thøc xö lý liªn quan.
LTH§T kh«ng cho phÐp d÷ liÖu chuyÓn ®éng tù do trong hÖ thèng. D÷ liÖu
®îc g¾n chÆt víi tõng ph¬ng thøc thμnh c¸c vïng riªng mμ c¸c ph¬ng thøc ®ã
t¸c ®éng lªn vμ nã ®îc b¶o vÖ ®Ó cÊm viÖc truy nhËp tïy tiÖn tõ bªn ngoμi.
LTH§T cho phÐp ph©n tÝch bμi to¸n thμnh tËp c¸c thùc thÓ ®îc gäi lμ c¸c ®èi
tîng vμ sau ®ã x©y dùng c¸c d÷ liÖu cïng víi c¸c ph¬ng thøc xung quanh c¸c
®èi tîng ®ã.
Tãm l¹i LTH§T cã nh÷ng ®Æc tÝnh chñ yÕu nh sau:
1. TËp trung vμo d÷ liÖu thay cho c¸c ph¬ng thøc.
2. Ch¬ng tr×nh ®îc chia thμnh c¸c líp ®èi tîng.
3. C¸c cÊu tróc d÷ liÖu ®îc thiÕt kÕ sao cho ®Æc t¶ ®îc c¸c ®èi tîng.
4. C¸c ph¬ng thøc x¸c ®Þnh trªn c¸c vïng d÷ liÖu cña ®èi tîng ®îc g¾n
víi nhau trªn cÊu tróc d÷ liÖu ®ã.
5. D÷ liÖu ®îc bao bäc, che dÊu vμ kh«ng cho phÐp c¸c thμnh phÇn bªn
ngoμi truy nhËp tù do.
6. C¸c ®èi tîng trao ®æi víi nhau th«ng qua c¸c ph¬ng thøc.
7. D÷ liÖu vμ c¸c ph¬ng thøc míi cã thÓ dÔ dμng bæ sung vμo ®èi tîng nμo
®ã khi cÇn thiÕt.
8. Ch¬ng tr×nh ®îc thiÕt kÕ theo c¸ch tiÕp cËn bottom-up (díi -lªn).
1.2. C¸c kh¸i niÖm c¬ b¶n cña lËp tr×nh híng ®èi tîng
Nh÷ng kh¸i niÖm c¬ b¶n trong LTH§T bao gåm: §èi tîng; Líp; Trõu
tîng hãa d÷ liÖu, bao gãi th«ng tin; KÕ thõa; T¬ng øng béi; Liªn kÕt ®éng;
TruyÒn th«ng b¸o.
Lp trình HĐT http://www.ebook.edu.vn
4
1.2.1. §èi tîng
Trong thÕ giíi thùc, kh¸i niÖm ®èi tîng ®îc hiÓu nh lμ mét thùc thÓ, nã
cã thÓ lμ ngêi, vËt hoÆc mét b¶ng d÷ liÖu cÇn xö lý trong ch¬ng tr×nh,... Trong
LTH§T th× ®èi tîng lμ biÕn thÓ hiÖn cña líp.
1.2.2. Líp
Líp lμ mét kh¸i niÖm míi trong LTH§T so víi kü thuËt LTHTT. Nã lμ mét
b¶n mÉu m« t¶ c¸c th«ng tin cÊu tróc d÷ liÖu vμ c¸c thao t¸c hîp lÖ cña c¸c phÇn
tö d÷ liÖu. Khi mét phÇn tö d÷ liÖu ®îc khai b¸o lμ phÇn tö cña mét líp th× nã
®îc gäi lμ ®èi tîng. C¸c hμm ®îc ®Þnh nghÜa hîp lÖ trong mét líp ®îc gäi lμ
c¸c ph¬ng thøc (method) vμ chóng lμ c¸c hμm duy nhÊt cã thÓ xö lý d÷ liÖu cña
c¸c ®èi tîng cña líp ®ã. Mçi ®èi tîng cã riªng cho m×nh mét b¶n sao c¸c phÇn
tö d÷ liÖu cña líp. Mçi líp bao gåm: danh s¸ch c¸c thuéc tÝnh (attribute) vμ danh
s¸ch c¸c ph¬ng thøc ®Ó xö lý c¸c thuéc tÝnh ®ã. C«ng thøc ph¶n ¸nh b¶n chÊt
cña kü thuËt LTH§T lμ:
§èi tîng = D÷ liÖu + Ph¬ng thøc
Ch¼ng h¹n, chóng ta xÐt líp HINH_CN bao gåm c¸c thuéc tÝnh: (x1,y1) to¹
®é gãc trªn bªn tr¸i, d,r lμ chiÒu dμi vμ chiÒu réng cña HCN. C¸c ph¬ng thøc
nhËp sè liÖu cho HCN, hμm tÝnh diÖn tÝch, chu vi vμ hμm hiÓn thÞ. Líp
HINH_CN cã thÓ ®îc m« t¶ nh sau:
H×nh 2.2 M« t¶ líp HINH_CN
HINH_CN
Thuéc tÝnh :
x1,y1
d,r
Ph¬ng thøc :
NhËp_sl
DiÖn tÝch
Chu vi
HiÓn thÞ
Lp trình HĐT http://www.ebook.edu.vn
5
Chó ý: Trong LTH§T th× líp lμ kh¸i niÖm tÜnh, cã thÓ nhËn biÕt ngay tõ v¨n b¶n
ch¬ng tr×nh, ngîc l¹i ®èi tîng lμ kh¸i niÖm ®éng, nã ®îc x¸c ®Þnh trong bé
nhí cña m¸y tÝnh, n¬i ®èi tîng chiÕm mét vïng bé nhí lóc thùc hiÖn ch¬ng
tr×nh. §èi tîng ®îc t¹o ra ®Ó xö lý th«ng tin, thùc hiÖn nhiÖm vô ®îc thiÕt kÕ,
sau ®ã bÞ hñy bá khi ®èi tîng ®ã hÕt vai trß.
1.2.3. Trõu tîng hãa d÷ liÖu vµ bao gãi th«ng tin
Trõu tîng hãa lμ c¸ch biÓu diÔn nh÷ng ®Æc tÝnh chÝnh vμ bá qua nh÷ng chi
tiÕt vôn vÆt hoÆc nh÷ng gi¶i thÝch. Khi x©y dùng c¸c líp, ta ph¶i sö dông kh¸i
niÖm trõu tîng hãa. VÝ dô ta cã thÓ ®Þnh nghÜa mét líp ®Ó m« t¶ c¸c ®èi tîng
trong kh«ng gian h×nh häc bao gåm c¸c thuéc tÝnh trõu tîng nh lμ kÝch thíc,
h×nh d¸ng, mμu s¾c vμ c¸c ph¬ng thøc x¸c ®Þnh trªn c¸c thuéc tÝnh nμy.
ViÖc ®ãng gãi d÷ liÖu vμ c¸c ph¬ng thøc vμo mét ®¬n vÞ cÊu tróc líp ®îc
xem nh mét nguyªn t¾c bao gãi th«ng tin. D÷ liÖu ®îc tæ chøc sao cho thÕ giíi
bªn ngoμi (c¸c ®èi tîng ë líp kh¸c) kh«ng truy nhËp vμo, mμ chØ cho phÐp c¸c
ph¬ng thøc trong cïng líp hoÆc trong nh÷ng líp cã quan hÖ kÕ thõa víi nhau
míi ®îc quyÒn truy nhËp. ChÝnh c¸c ph¬ng thøc cña líp sÏ ®ãng vai trß nh lμ
giao diÖn gi÷a d÷ liÖu cña ®èi tîng vμ phÇn cßn l¹i cña ch¬ng tr×nh. Nguyªn
t¾c bao gãi d÷ liÖu ®Ó ng¨n cÊm sù truy nhËp trùc tiÕp trong lËp tr×nh ®îc gäi lμ
sù che giÊu th«ng tin.
1.2.4. KÕ thõa
KÕ thõa lμ qu¸ tr×nh mμ c¸c ®èi tîng cña líp nμy ®îc quyÒn sö dông mét
sè tÝnh chÊt cña c¸c ®èi tîng cña líp kh¸c. Sù kÕ thõa cho phÐp ta ®Þnh nghÜa
mét líp míi trªn c¬ së c¸c líp ®· tån t¹i. Líp míi nμy, ngoμi nh÷ng thμnh phÇn
®îc kÕ thõa, sÏ cã thªm nh÷ng thuéc tÝnh vμ c¸c hμm míi. Nguyªn lý kÕ thõa
hç trî cho viÖc t¹o ra cÊu tróc ph©n cÊp c¸c líp.
1.2.5. T¬ng øng béi
T¬ng øng béi lμ kh¶ n¨ng cña mét kh¸i niÖm (ch¼ng h¹n c¸c phÐp to¸n) cã
thÓ sö dông víi nhiÒu chøc n¨ng kh¸c nhau. VÝ dô, phÐp + cã thÓ biÓu diÔn cho
phÐp “céng” c¸c sè nguyªn (int), sè thùc (float), sè phøc (complex) hoÆc x©u ký
tù (string) v.v... Hμnh vi cña phÐp to¸n t¬ng øng béi phô thuéc vμo kiÓu d÷ liÖu
mμ nã sö dông ®Ó xö lý.
T¬ng øng béi ®ãng vai quan träng trong viÖc t¹o ra c¸c ®èi tîng cã cÊu
tróc bªn trong kh¸c nhau nhng cïng dïng chung mét giao diÖn bªn ngoμi (nh
tªn gäi).