
Lập 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μ xö
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

Lập 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.

Lập 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.

Lập 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Þ

Lập 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 nh−ng cïng dïng chung mét giao diÖn bªn ngoμi (nh−
tªn gäi).