L
L
L
L
ê
ê
ê
ê
i
i
i
i
Gi
Gi
Gi
Gi
í
í
í
í
i
i
i
i
thi
thi
thi
thi
Ö
Ö
Ö
Ö
u
u
u
u
V µ o thu ë kh ë i ®Ç u s ö d ô ng m ¸ y t Ý nh, c ¸ ch l Ë p tr × nh l µ l Ë p tr × nh tu Ç n t ù .
Kho ng nh ÷ ng n ¨ m 70-80 xu h í ng l Ë p tr × nh ch ñ y Õ u l µ l Ë p tr × nh c ã c Ê u tr ó c. B í c
sang nh ÷ ng n ¨ m 90, ph ¬ ng ph ¸ p l Ë p tr × nh h í ng ®è i t î ng tr ë n ª n ph æ bi Õ n, ®î c
nh ÷ ng ng ê i l µ m tin h ä c quan t © m nghi ª n c ø u nhi Ò u.
L Ë p tr × nh h í ng ®è i t î ng tr ë th µ nh ph ¬ ng ph ¸ p l Ë p tr × nh hi Ö n ®¹ i v × n ã c ã
nh ÷ ng u ® i Ó m nh :
- S ù tr õ u t î ng ho ¸ : m ç i ®è i t î ng trong ch ¬ ng tr × nh l µ m é t tr õ u xu Ê t c ñ a m é t
®è i t î ng (v Ë t l ý hay phi v Ë t l ý ) trong th ù c t Õ c ñ a b µ i to ¸ n. § i Ò u n µ y l µ m cho
ch ¬ ng tr × nh g É n g ò i h ¬ n v í i ng ê i d ï ng v µ d Ô thi Õ t k Õ h ¬ n ®è i v í i ng ê i l Ë p tr × nh.
- S ù ®ã ng g ã i: M ç i ®è i t î ng l µ m é t s ù ®ã ng g ã i c ba m Æ t: d ÷ li Ö u, tr ¹ ng th ¸ i
v µ thao t ¸ c, l µ m cho ®è i t î ng l µ m é t ®¬ n nguy ª n b Ò n v ÷ ng cho qu ¸ tr × nh ph © n t Ý ch,
thi Õ t k Õ v µ l Ë p tr × nh. X © y d ù ng tr ª n nguy ª n t ¾ c gi Ê u k Ý n t è i ® a, c « ng khai t è i thi Ó u,
®è i t î ng th Ý ch ø ng d Ô d µ ng v í i vi Ö c s ö a l ç i, b o tr × hay ph ¸ t tri Ó n.
- Vi Ö c s ö d ô ng l ¹ i: §è i t î ng l µ m é t ®¬ n v Þ l ¾ p l É n , c ã th Ó s ö d ô ng l ¹ i cho
b µ i to ¸ n kh ¸ c.
- S ù k Õ th õ a ®î c v Ë n d ô ng cho c ¸ c ®è i t î ng l µ m ti Õ t ki Ö m ®î c m · ngu å n,
®å ng th ê i t ¹ o kh n ¨ ng cho s ù ti Õ p n è i v µ m ë r é ng ch ¬ ng tr × nh.
Ng µ y nay ®· c ã nhi Ò u ng « n ng ÷ l Ë p tr × nh h ç tr î cho ®è i t î ng:
- C ã nh ÷ ng ng « n ng ÷ ch Ø m í i d ù a v µ o ®è i t î ng (c ã ®ã ng g ã i m µ kh « ng c ã k Õ
th õ a), nh ADA (83).
- C ã nh ÷ ng ng « n ng ÷ h í ng ®è i t î ng thu Ç n khi Õ t, ch Ø ®î c ph Ð p s ö d ô ng ®è i
t î ng trong l Ë p tr × nh, nh SMALLTALK, JAVA...
- C ã nh ÷ ng ng « n ng ÷ lai, c ã th Ó l Ë p tr × nh h í ng ®è i t î ng m é t c ¸ ch ®Ç y ®ñ ,
m µ c ò ng c ã th Ó l Ë p tr × nh d ï ng ®è i t î ng. Turbo PASCAL, C++ thu é c lo ¹ i n µ y.
Ng « n ng ÷ C t õ khi ra ®ê i ®· s í m kh ¼ ng ®Þ nh ®î c v Þ th Õ l µ c « ng c ô ch ñ y Õ u
trong c « ng ngh Ö ph Ç n m Ò m. C++ ph ¸ t tri Ó n C th µ nh ng « n ng ÷ h í ng ®è i t î ng
®· th õ a k Õ ®î c c ¸ c ® i Ó m m ¹ nh c ñ a C v µ th Ý ch ø ng v í i xu h í ng l Ë p tr × nh hi Ö n ®¹ i.
Ch ä n C++ ®Ó gi ng d ¹ y c ò n g nh l µ m c « ng c ô ph ¸ t tri Ó n ph Ç n m Ò m l µ h î p l ý , v ×
kh « ng nh ÷ ng n ã m ¹ nh, m µ n ã d Ô hi Ó u cho nh ÷ ng ng ê i v è n quen v í i l Ë p tr × nh
truy Ò n th è ng, nay ® i v µ o l Ë p tr × nh h í ng ®è i t î ng. Nh v Ë y ch ñ ®Ò c ñ a cu è n s ¸ ch
l µ ho µ n to µ n th Ý ch h î p v í i nhu c Ç u gi ng d ¹ y l Ë p tr × nh ë c ¸ c tr ê ng ®¹ i h ä c, c ò ng
nh v í i nhu c Ç u c ñ a nh ÷ ng l Ë p tr × nh vi ª n ® ang h µ nh ngh Ò .
Cu è n s ¸ ch g å m 6 ch ¬ ng v µ 4 ph ô l ô c
- Ch ¬ ng 1: L Ë p tr × nh h í ng ®è i t î ng-ph ¬ ng ph ¸ p gi i quy Õ t b µ i to ¸ n m í i
- Ch ¬ ng 2: Nh ÷ ng m ë r é ng c ñ a C++
- Ch ¬ ng 3: §è i t î ng v µ l í p
- Ch ¬ ng 4: §Þ nh ngh Ü a to ¸ n t ö tr ª n l í p
- Ch ¬ ng 5: K ü thu Ë t th õ a k Õ
- Ch ¬ ng 6: Khu « n h × nh
- Ph ô l ô c 1: C ¸ c k ª nh xu Ê t nh Ë p
- Ph ô l ô c 2: X ö l ý l ç i
- Ph ô l ô c 3: B µ i to ¸ n quan h Ö gia ®× nh
- Ph ô l ô c 4: M · ch ¬ ng tr × nh b µ i to ¸ n quan h Ö gia ®× nh.
Nh v Ë y cu è n s ¸ ch bao tr ï m ®ñ c ¸ c v Ê n ®Ò c Ç n ®Ò c Ë p v µ ®· ®î c c Ê u tr ó c kh ¸
h î p l ý . M ç i ch ¬ ng ®Ò u k Õ t th ó c b ë i ph Ç n t ã m t ¾ t v µ c ¸ c b µ i t Ë p, thu Ë n ti Ö n cho vi Ö c
h ä c v µ th ù c h µ nh.
N é i dung c ¸ c ph Ç n ®· ®î c tr × nh b µ y d Ô hi Ó u, chu È n x ¸ c, c ã nhi Ò u th Ý d ô minh
ho ¹ .
Cu è n s ¸ ch c ã th Ó d ï ng l µ m:
- Gi ¸ o tr × nh gi ng d ¹ y v Ò l Ë p tr × nh h í ng ®è i t î ng ë c ¸ c tr ê ng §¹ i h ä c.
- S ¸ ch tham kh o v Ò C++ cho nh ÷ ng ng ê i l Ë p tr × nh chuy ª n nghi Ö p.
T « i cho r » ng quy Ó n s ¸ ch l µ r Ê t c ã Ý ch v µ hy v ä ng s Ï s í m ®î c xu Ê t b n ®Ó
ph ô c v ô b ¹ n ®ä c. Xin tr © n tr ä ng gi í i thi Ö u v í i b ¹ n ®ä c cu è n s ¸ ch L Ë p tr × nh h í ng
®è i t î ng v í i C++ , m é t sx n ph È m lao ®é ng khoa h ä c nghi ª m t ó c c ñ a t Ë p th Ó c ¸ n
b é gi ng d ¹ y khona C « ng ngh Ö Th « ng tin, §¹ i h ä c B ¸ ch khoa H µ n é i.
H µ n é i, ng µ y 4 th ¸ ng 5 n ¨ m 1999
GS.
GS.
GS.
GS.
Nguy
Nguy
Nguy
Nguy
Ô
Ô
Ô
Ô
n
n
n
n
V
V
V
V
¨
¨
¨
¨
n
n
n
n
Ba
Ba
Ba
Ba
Khoa
Khoa
Khoa
Khoa
CNTT,
CNTT,
CNTT,
CNTT,
§
§
§
§
HBK
HBK
HBK
HBK
H
H
H
H
µ
µ
µ
µ
n
n
n
n
é
é
é
é
i
i
i
i
Tr ê ng §¹ i h ä c B ¸ ch khoa H µ n é i
Khoa C « ng ngh Ö Th « ng tin
--0--
L ª §¨ ng H ng, T ¹ Tu Ê n Anh, Nguy Ô n H ÷ u §ø c
Nguy Ô n Thanh Thu û
L
L
L
L
Ë
Ë
Ë
Ë
p
p
p
p
tr
tr
tr
tr
×
×
×
×
nh
nh
nh
nh
h
h
h
h
í
í
í
í
ng
ng
ng
ng
®è
®è
®è
®è
i
i
i
i
t
t
t
t
î
î
î
î
ng
ng
ng
ng
v
v
v
v
í
í
í
í
i
i
i
i
C
C
C
C
++
++
++
++
H µ n é i 1999
L Ë p tr × nh h í ng ®è i t î ng v í i C++
T ¸ c gi : L ª §¨ ng H ng, T ¹ Tu Ê n Anh, Nguy Ô n H ÷ u §ø c,
Nguy Ô n Thanh Thu û
Ch ñ bi ª n: Nguy Ô n Thanh Thu û
Bi ª n t Ë p:
Ch Þ u tr ¸ ch nhi Ö m xu Ê t b n:
Gi Ê y ph Ð p xu Ê t b n s è :
T
T
T
T
µ
µ
µ
µ
i
i
i
i
li
li
li
li
Ö
Ö
Ö
Ö
u
u
u
u
tham
tham
tham
tham
kh
kh
kh
kh
o
o
o
o
[1].
Claude Delannoy, Programmer en langage C++, EYROLLES.
[2].
Scott Robert Ladd, Turbo C++ Techniques and Applications, M&T Books.
[3]. H.M. Deitel & P.J. Deitel, C How to program.
L
L
L
L
ê
ê
ê
ê
i
i
i
i
n
n
n
n
ã
ã
ã
ã
i
i
i
i
®Ç
®Ç
®Ç
®Ç
u
u
u
u
Ng « n ng ÷ C ®î c xem l µ m é t ng « n ng ÷ l Ë p tr × nh v ¹ n n ¨ ng v µ ®î c s ö d ô ng
r é ng r · i ®Ó gi i quy Õ t c ¸ c b µ i to ¸ n khoa h ä c k ü thu Ë t: x ö l ý nh, ®å ho ¹ , gh Ð p n è i
m ¸ y t Ý nh. Ng « n ng ÷ C c ò ng l µ m é t c « ng c ô m ¹ nh cho ph Ð p x © y d ù ng c ¸ c ch ¬ ng
tr × nh h Ö th è ng nh h Ö ® i Ò u h µ nh UNIX, c ¸ c ch ¬ ng tr × nh d Þ ch v µ c ¸ c c « ng c ô ti Ö n
Ý ch kh ¸ c.
§ i Ó m m ¹ nh ®¸ ng ch ó ý c ñ a ng « n ng ÷ C ch Ý nh l µ s ù m Ò m d Î o v µ kh n ¨ ng trao
chuy Ó n cao gi ÷ a c ¸ c h Ö th è ng t Ý nh to ¸ n. Tr ª n c ¬ s ë ng « n ng ÷ C ng ê i ta ®· ti Õ n
h µ nh x © y d ù ng m é t phi ª n b n h í ng ®è i t î ng g ä i l µ C++ nh » m th õ a k Õ c ¸ c ® i Ó m
m ¹ nh v è n c ã c ñ a C. Vi Ö c t × m hi Ó u ng « n ng ÷ C++ ® ang l µ m é t xu th Õ ®î c quan t © m
b ë i c ¸ c nh µ l Ë p tr × nh nh » m ph ¸ t tri Ó n c ¸ c ph Ç n m Ò m ø ng d ô ng ë Vi Ö t nam.
Hi Ö n nay, tr ª n th Þ tr ê ng ®· c ã m é t s è t µ i li Ö u tham kh o gi í i thi Ö u v Ò C++.
Tuy nhi ª n, c ¸ c t µ i li Ö u n µ y ch Ø m í i d õ ng l ¹ i ë m ø c gi í i thi Ö u v µ m « t c ¸ c kh Ý a c ¹ nh
c ó ph ¸ p c ñ a ng « n ng ÷ . Trong cu è n s ¸ ch n µ y, nh ÷ ng tr × nh b µ y v Ò c ¸ c kh Ý a c ¹ nh l Ë p
tr × nh h í ng ® è i t î ng c ã t Ý nh s ph ¹ m cao, ® i t õ m ø c ®é d Ô ®Õ n kh ã nh » m gi ó p
ng ê i ®ä c c ã th Ó l Ü nh h é i c ¸ c ki Õ n th ø c c ¬ b n kh « ng ch Ø l Ö thu é c v µ o m é t ng « n
ng ÷ l Ë p tr × nh c ô th Ó nh C++ ®· ®î c quan t © m th Ý ch ®¸ ng.
Trong ch ¬ ng tr × nh gi ng d ¹ y c ö nh © n, k ü s chuy ª n ng µ nh C « ng ngh Ö Th « ng
tin, ng « n ng ÷ l Ë p tr × nh C++ ®î c ch ä n ®Ó minh ho ¹ cho l Ë p tr × nh h í ng ®è i t î ng
nh ê c ¸ c u ® i Ó m trong kh n ¨ ng bi Ó u di Ô n d ÷ li Ö u v µ th Ó hi Ö n c ¸ c kh Ý a c ¹ nh l Ë p
tr × nh. Vi Ö c n ¾ m b ¾ t c ¸ c kh Ý a c ¹ nh ®é c ®¸ o c ñ a ng « n ng ÷ v µ l µ m ch ñ c ¸ c y Õ u t è c ¬
b n khi l Ë p tr × nh trong ng « n ng ÷ C++ s Ï l µ c ¬ s ë ®Ó n © ng cao hi Ó u bi Õ t v µ k ü n ¨ ng
l Ë p tr × nh b » ng ng « n ng ÷ JAVA, m é t c « ng c ô kh « ng th Ó thi Õ u ®î c trong vi Ö c ph ¸ t
tri Ó n c ¸ c ø ng d ô ng tr ª n m ¹ ng.
Ch ó ng t « i bi ª n so ¹ n t µ i li Ö u n µ y v í i hy v ä ng r » ng n ã s Ï r Ê t b æ Ý ch v µ c Ç n thi Õ t
®è i v í i c ¸ c sinh vi ª n cao ®¼ ng v µ ®¹ i h ä c kh « ng ch Ø trong chuy ª n ng µ nh C « ng ngh Ö
Th « ng tin m µ c c ¸ c ng µ nh k ü thu Ë t, c « ng ngh Ö kh ¸ c nh § i Ö n t ö Vi Ô n Th « ng, T ù
®é ng ho ¸ ® i Ò u kh i Ó n v.v...
Khi bi ª n so ¹ n, ch ó ng t « i ®· c è g ¾ ng ® a ra m é t b è c ô c c ñ a cu è n s ¸ ch sao cho
b ¸ m s ¸ t ®î c c ¸ c n é i dung c ¬ b n xung quanh c ¸ c kh Ý a c ¹ nh c ó ph ¸ p c ñ a ng « n ng ÷
v µ nh ÷ ng k ü n ¨ ng l Ë p tr × nh tr ª n ®ã . C ¸ c ki Õ n th ø c ®î c tr × nh b µ y c « ®ä ng nh » m
gi ó p ng ê i h ä c v µ t ù h ä c d Ô ti Õ p thu c ¸ c ki Õ n th ø c ®î c truy Ò n th ô .
Trong qu ¸ tr × nh bi ª n so ¹ n cu è n s ¸ ch, ch ó ng t « i ®· nh Ë n ®î c nhi Ò u ý ki Õ n
®ã ng g ã p qu Ý b ¸ u c ñ a GS. Nguy Ô n V ¨ n Ba, GS. V ò L ô c, GS §ç Xu © n L « i, Ths. §ç
V ¨ n Uy v µ c ¸ c th Ç y c « trong khoa C « ng ngh Ö Th « ng tin, tr ê ng §¹ i h ä c B ¸ ch khoa
H µ n é i. Ch ó ng t « i xin ch © n th µ nh c ¸ m ¬ n s ù gi ó p ®ì qu Ý gi ¸ ®ã . Nh © n d Þ p n µ y
ch ó ng t « i c ò ng xin b µ y t á s ù bi Õ t ¬ n t í i GS Nguy Ô n Th ó c H i v µ Ban ch ñ nhi Ö m
khoa C « ng ngh Ö Th « ng tin v µ Nh µ xu Ê t b n Gi ¸ o d ô c ®· t ¹ o ® i Ò u ki Ö n v Ë t ch Ê t v µ
tinh th Ç n ®Ó cu è n s ¸ ch s í m ra m ¾ t b ¹ n ®ä c.
Tuy ®· h Õ t s ø c c è g ¾ ng nh ng ch ó ng t « i ngh Ü r » ng s Ï kh « ng tr ¸ nh kh á i nh ÷ ng
thi Õ u s ã t, r Ê t mong nh Ë n ®î c c ¸ c ý ki Õ n ®ã ng g ã p ®Ó n © ng cao ch Ê t l î ng trong
c ¸ c l Ç n t ¸ i b n sau.
H µ n é i
, ng µ y 1 th ¸ ng 5 n ¨ m 1999
C
C
C
C
¸
¸
¸
¸
c
c
c
c
t
t
t
t
¸
¸
¸
¸
c
c
c
c
gi
gi
gi
gi
- 1 -
Ch
Ch
Ch
Ch
¬
¬
¬
¬
ng
ng
ng
ng
1
1
1
1
L
L
L
L
Ë
Ë
Ë
Ë
p
p
p
p
tr
tr
tr
tr
×
×
×
×
nh
nh
nh
nh
h
h
h
h
í
í
í
í
ng
ng
ng
ng
®è
®è
®è
®è
i
i
i
i
t
t
t
t
î
î
î
î
ng
ng
ng
ng
ph
ph
ph
ph
¬
¬
¬
¬
ng
ng
ng
ng
ph
ph
ph
ph
¸
¸
¸
¸
p
p
p
p
gi
gi
gi
gi
i
i
i
i
quy
quy
quy
quy
Õ
Õ
Õ
Õ
t
t
t
t
b
b
b
b
µ
µ
µ
µ
i
i
i
i
to
to
to
to
¸
¸
¸
¸
n
n
n
n
m
m
m
m
í
í
í
í
i
i
i
i
1.
1.
1.
1.
Ph
Ph
Ph
Ph
¬
¬
¬
¬
ng
ng
ng
ng
ph
ph
ph
ph
¸
¸
¸
¸
p
p
p
p
l
l
l
l
Ë
Ë
Ë
Ë
p
p
p
p
tr
tr
tr
tr
×
×
×
×
nh
nh
nh
nh
T õ nhi Ò u n ¨ m nay ch ó ng ta ®· nghe nhi Ò u ®Õ n thu Ë t ng ÷ L Ë p tr × nh h í ng ®è i
t î ng (OOP - Object Oriented Programming). V Ë y th ù c ch Ê t n ã l µ g × ? §Ó hi Ó u
®î c v Ê n ®Ò n µ y ch ó ng ta b ¾ t ®Ç u nh × n l ¹ i m é t ch ó t l Þ ch s ö ph ¸ t tri Ó n c ¸ c ph ¬ ng
ph ¸ p l Ë p tr × nh. V µ o nh ÷ ng ng µ y ®Ç u ph ¸ t tri Ó n c ñ a m ¸ y t Ý nh, khi c ¸ c ph Ç n m Ò m c ß n
r Ê t ®¬ n gi n ch Ø c ì v µ i ch ô c d ß ng l Ö nh, ch ¬ ng tr × nh ®î c vi Õ t tu Ç n t ù v í i c ¸ c c © u
l Ö nh th ù c hi Ö n t õ ®Ç u ®Õ n cu è i. C ¸ ch vi Õ t ch ¬ ng tr × nh nh th Õ n µ y g ä i l µ ph ¬ ng
ph ¸ p l
l
l
l
Ë
Ë
Ë
Ë
p
p
p
p
tr
tr
tr
tr
×
×
×
×
nh
nh
nh
nh
tuy
tuy
tuy
tuy
Õ
Õ
Õ
Õ
n
n
n
n
t
t
t
t
Ý
Ý
Ý
Ý
nh
nh
nh
nh
. Khoa h ä c m ¸ y t Ý nh ng µ y c µ ng ph ¸ t tri Ó n, c ¸ c ph Ç n m Ò m
®ß i h á i ng µ y c µ ng ph ø c t ¹ p v µ l í n h ¬ n r Ê t nhi Ò u. §Õ n l ó c n µ y ph ¬ ng ph ¸ p l Ë p tr × nh
tuy Õ n t Ý nh t á ra k Ð m hi Ö u qu v µ c ã nh ÷ ng tr ê ng h î p ng ê i l Ë p tr × nh kh « ng th Ó
ki Ó m so ¸ t ®î c ch ¬ ng tr × nh. Th Õ l µ ph ¬ ng ph ¸ p l
l
l
l
Ë
Ë
Ë
Ë
p
p
p
p
tr
tr
tr
tr
×
×
×
×
nh
nh
nh
nh
c
c
c
c
Ê
Ê
Ê
Ê
u
u
u
u
tr
tr
tr
tr
ó
ó
ó
ó
c
c
c
c
(LTCT) ra ®ê i .
Theo c ¸ ch ti Õ p c Ë n n µ y, ch ¬ ng tr × nh ®î c t æ ch ø c th µ nh c ¸ c ch ¬ ng tr × nh con.
M ç i ch ¬ ng tr × nh con ®¶ m nh Ë n x ö l ý m é t c « ng vi Ö c nh á trong to µ n b é h Ö th è ng.
M ç i ch ¬ ng tr × nh con n µ y l ¹ i c ã th Ó chia nh á th µ nh c ¸ c ch ¬ ng tr × nh con nh á h ¬ n.
Qu ¸ tr × nh ph © n chia nh v Ë y ti Õ p t ô c di Ô n ra cho ®Õ n c ¸ c ch ¬ ng tr × nh con nh á nh Ë n
®î c ®ñ ®¬ n gi n. Ng ê i ta g ä i ®ã l µ qu ¸ tr × nh l µ m m Þ n d Ç n. C ¸ c ch ¬ ng tr × nh con
t ¬ ng ®è i ®é c l Ë p v í i nhau, do ®ã c ã th Ó ph © n c « ng cho t õ ng nh ã m ®¶ m nh Ë n vi Õ t
c ¸ c ch ¬ ng tr × nh con kh ¸ c nhau. Ng « n ng ÷ l Ë p tr × nh th Ó hi Ö n r â n Ð t nh Ê t ph ¬ ng
ph ¸ p l Ë p tr × nh c Ê u tr ó c ch Ý nh l µ Pascal. Tuy nhi ª n, khi s ö d ô ng ph ¬ ng ph ¸ p l Ë p
tr × nh n µ y v É n c ß n g Æ p m é t kh ã kh ¨ n l í n l µ t æ ch ø c d ÷ li Ö u c ñ a h Ö th è ng nh th Õ n µ o
trong m ¸ y t Ý nh. B ë i v × theo quan ® i Ó m c ñ a LTCT th ×
Ch ¬ ng tr × nh = C Ê u tr ó c d ÷
li Ö u + Gi i thu Ë t
. §Ó l µ m ®î c vi Ö c n µ y ®ß i h á i ng ê i l Ë p tr × nh ph i c ã ki Õ n r Ê t
v ÷ ng v Ò c Ê u tr ó c d ÷ li Ö u. M é t kh ã kh ¨ n n ÷ a g Æ p ph i l µ gi i thu Ë t c ñ a ch ¬ ng tr × nh
ph ô thu é c r Ê t ch Æ t ch Ï v µ o c Ê u tr ó c d ÷ li Ö u, do v Ë y ch Ø c Ç n m é t s ù thay ®æ i nh á ë
c Ê u tr ó c d ÷ li Ö u c ò ng c ã t h Ó l µ m thay ®æ i gi i thu Ë t v µ nh v Ë y ph i vi Õ t l ¹ i ch ¬ ng
tr × nh. § i Ò u n µ y r â r µ ng kh « ng th Ó th Ý ch h î p khi ph i x © y d ù ng m é t d ù ¸ n ph Ç n m Ò m
r Ê t l í n. M é t ph ¬ ng ph ¸ p l Ë p tr × nh m í i ra ®ê i ®Ó kh ¾ c ph ô c nh î c ® i Ó m n µ y v µ ®ã
ch Ý nh l µ ph ¬ ng ph ¸ p l
l
l
l
Ë
Ë
Ë
Ë
p
p
p
p
tr
tr
tr
tr
×
×
×
×
nh
nh
nh
nh
h
h
h
h
í
í
í
í
ng
ng
ng
ng
®è
®è
®è
®è
i
i
i
i
t
t
t
t
î
î
î
î
ng
ng
ng
ng
(LTH § T). § i Ó m c ¨ n b n c ñ a
ph ¬ ng ph ¸ p n µ y l µ thi Õ t k Õ ch ¬ ng tr × nh xoay quanh d ÷ li Ö u c ñ a h Ö th è ng. Ngh Ü a
l µ l ó c n µ y 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 m é t
s ù thay ®æ i nh á c ñ a d ÷ li Ö u ch Ø nh h ë ng ®Õ n c ¸ c m é t s è nh á c ¸ c h µ m x ö l ý li ª n
quan. S ù g ¾ n k Õ t gi ÷ a d ÷ li Ö u v µ c ¸ c h µ m x ö l ý tr ª n ch ó ng t ¹ o ra ®è i t î ng. M é t u
® i Ó m n ÷ a c ã ë ph ¬ ng ph ¸ p LTH § T l µ c ¸ ch ti Õ p c Ë n b µ i to ¸ n tr ë n ª n g Ç n g ò i v í i
th ù c t Õ h ¬ n. §Ó hi Ó u r â h ¬ n v Ò ph ¬ ng ph ¸ p l Ë p tr × nh n µ y, kh « ng g × t è t h ¬ n l µ
c h ó ng ta ® i v µ o m é t b µ i to ¸ n c ô th Ó , ch ¼ ng h ¹ n b µ i to ¸ n quan h Ö gia ®× nh. ë ®© y y ª u
Ng « n ng ÷ C++
- 2 -
c Ç u l µ m th Õ n µ o ®Ó th Ó hi Ö n ®î c c ¸ c m è i quan h Ö gi ÷ a c ¸ c th µ nh vi ª n trong m é t
gia ®× nh tr ª n m ¸ y t Ý nh v µ c ã th Ó tr l ê i ®î c c © u h á i d ¹ ng kh ¸ t æ ng qu ¸ t: A v µ B c ã
quan h Ö nh th Õ n µ o trong gia ®× nh ? v í i A v µ B l µ hai c ¸ th Ó b Ê t k ú . Ch ó ng ta s Ï
ph © n t Ý c h xem c ¸ ch gi i quy Õ t b µ i to ¸ n n µ y nh th Õ n µ o.
2. B
B
B
B
µ
µ
µ
µ
i
i
i
i
to
to
to
to
¸
¸
¸
¸
n
n
n
n
quan
quan
quan
quan
h
h
h
h
Ö
Ö
Ö
Ö
gia
gia
gia
gia
®×
®×
®×
®×
nh
nh
nh
nh
Trong x · h é i, m ç i ng ê i ®Ò u c ã m é t gia ®× nh, trong ®ã t å n t ¹ i nhi Ò u m è i quan
h Ö gia ®× nh kh ¸ ph ø c t ¹ p nh « ng, b µ , cha, m Ñ , c « , ch ó , b ¸ c, v.v. Th « ng th ê ng, ®Ó
th Ó hi Ö n c ¸ c m è i quan h Ö n µ y ng ê i ta bi Ó u di Ô n b » ng m é t s ¬ ®å c © y quan h Ö . D í i
®© y l µ m é t v Ý d ô bi Ó u di Ô n m é t gia ®× nh ba th Õ h Ö b » ng h × nh 1.1.
§Ó gi i quy Õ t b µ i to ¸ n n µ y theo ph ¬ ng ph ¸ p LTCT, c « ng vi Ö c ®Ç u ti ª n l µ ph i
x © y d ù ng m é t c Ê u tr ó c d ÷ li Ö u th Ó hi Ö n ®î c c © y quan h Ö tr ª n. Tr « ng qua c ã v Î l µ
®¬ n gi n nh ng n Õ u th ö l µ m xem s Ï th Ê y kh « ng ®¬ n gi n ch ó t n µ o, th Ë m ch Ý c ß n
kh ã . B ë i v × n ã ®ß i h á i ng ê i l Ë p tr × nh ph i r Ê t th µ nh th ¹ o s ö d ô ng con tr á , ph i x © y
d ù ng ®î c gi i thu Ë t c Ë p nh Ë t th « ng tin tr ª n c © y quan h Ö . C ¸ c gi i thu Ë t n µ y t ¬ ng
®è i ph ø c t ¹ p ®è i v í i m é t c Ê u tr ó c d ÷ li Ö u nh trong b µ i to ¸ n. Y ª u c Ç u c ñ a b µ i to ¸ n
l µ tr l ê i ®î c c © u h á i d ¹ ng nh H ng v µ Mai c ã quan h Ö nh th Õ n µ o ? . C © u tr
l ê i c ñ a ch ¬ ng tr × nh ph i l µ H ng l µ anh h ä c ñ a Mai . §Ó c ã th Ó th ù c hi Ö n ®î c
nh v Ë y, r â r µ ng ch ó ng ta ph i x © y d ù ng ®î c gi i thu Ë t t × m ®î c m è i quan h Ö gi ÷ a
hai n ó t tr ª n c © y quan h Ö . M é t v Ê n ®Ò ph ø c t ¹ p v µ t Õ nh Þ h ¬ n l µ t ª n g ä i cho c ¸ c m è i
quan h Ö gia ®× nh ë Vi Ö t nam r Ê t phong ph ó ! M é t kh ã kh ¨ n l µ ph i v Ð t c ¹ n h Õ t c ¸ c
m è i quan h Ö c ã th Ó c ã tr ª n m é t c © y quan h Ö . M é t kh ã kh ¨ n n ÷ a g Æ p ph i l µ khi c Ç n
ph ¸ t tri Ó n, ch ¬ ng tr × nh ph i qu n l ý ®î c nhi Ò u gia ®× nh c ï ng m é t l ó c v µ c ¸ c gia
®× nh n µ y c ã m è i quan h Ö th « ng gia v í i nhau. H × nh 1.2 l µ s ¬ ®å quan h Ö ®î c ph ¸ t
tri Ó n t õ s ¬ ®å v Ý d ô tr ª n minh ho ¹ cho v Ê n ®Ò n µ y.
Mr.
Mr.
Mr.
Mr.
Th
Th
Th
Th
¾
¾
¾
¾
ng
ng
ng
ng
Ms.
Ms.
Ms.
Ms.
Nga
Nga
Nga
Nga
Mr.
Mr.
Mr.
Mr.
Quang
Quang
Quang
Quang
Mr.
Mr.
Mr.
Mr.
H
H
H
H
ng
ng
ng
ng
Ms.
Ms.
Ms.
Ms.
V
V
V
V
©
©
©
©
n
n
n
n
Miss.
Miss.
Miss.
Miss.
Mai
Mai
Mai
Mai
Miss.
Miss.
Miss.
Miss.
Trang
Trang
Trang
Trang
Mr.
Mr.
Mr.
Mr.
Tu
Tu
Tu
Tu
Ê
Ê
Ê
Ê
n
n
n
n
Ms.
Ms.
Ms.
Ms.
H
H
H
H
»
»
»
»
ng
ng
ng
ng
H × nh 1.1 C © y quan h Ö trong m é t gia ®× nh
L Ë p tr
×
nh h í ng ®è
i t
î ng
- 3 -
M é t c © u h á i ®Æ t ra: Li Ö u v í i c Ê u tr ó c d ÷ li Ö u c ò c ã ®¶ m b o gi i quy Õ t ®î c
v Ê n ®Ò n µ y kh « ng ? . R â r µ ng c © u tr l ê i l µ kh « ng. S ¬ ®å quan h Ö tr ª n h × nh v Ï s Ï
ph i m « t quan h Ö c ñ a m é t gia ®× nh. Ch Ø v í i ch ó t Ý t s ù thay ®æ i v Ò c Ê u tr ó c d ÷ li Ö u
c ò ng d É n ®Õ n m é t lo ¹ t v Ê n ®Ò ®ß i h á i ph i vi Õ t l ¹ i c ¸ c gi i thu Ë t c ñ a ch ¬ ng tr × nh.
Ph ¬ ng ph ¸ p l Ë p tr × nh m í i h í ng ®è i t î ng cho ph Ð p ch ó ng ta kh ¾ c ph ô c ®î c c ¸ c
v Ê n ®Ò ®· n ª u ra. Trong su è t c ¸ c tr × nh b µ y c ñ a cu è n s ¸ ch n µ y s Ï c è g ¾ ng n ª u b Ë t
®î c c ¸ ch gi i quy Õ t v Ê n ®Ò nh ê LTH § T.
Theo c ¸ ch ti Õ p c Ë n LTH § T, b µ i to ¸ n quan h Ö gia ®× nh ®î c xem x Ð t d í i g ã c
®é qu n l ý t Ë p c ¸ c ®è i t î ng Con
Con
Con
Con
ng
ng
ng
ng
ê
ê
ê
ê
i
i
i
i
. §Ó bi Õ t m è i quan h Ö gia ®× nh c ñ a m ç i c ¸
th Ó , c Ç n th Ó hi Ö n m é t s è quan h Ö c ¬ b n nh cha, m Ñ , anh em, con c ¸ i, v î ch å ng c ñ a
c ¸ th Ó ®ã . Nh v Ë y, m ç i ®è i t î ng con ng ê i c ñ a b µ i to ¸ n c ã c ¸ c thu é c t Ý nh ri ª ng,
n ã i l ª n r » ng cha m Ñ , anh em, v.v.. c ñ a h ä l µ ai. Ngo µ i ra c ò ng c Ç n c ã m é t thu é c t Ý nh
n ÷ a cho bi Õ t t ª n c ¸ th Ó l µ g × . C ã th Ó m « t m é t l í p c ¸ c ®è i t î ng con ng ê i nh
h × nh 1.3.
N Õ u ch Ø c ã nh v Ë y th × ch ¼ ng kh ¸ c g × m é t c Ê u tr ó c hay b n ghi trong c Ê u tr ó c
d ÷ di Ö u ®î c s ö d ô ng ë ph ¬ ng ph ¸ p LTCT. V Ê n ®Ò ë ®© y l µ ph ¬ ng ph ¸ p LTH § T
xem c ¸ c m è i quan h Ö trong gia ®× nh ®î c h × nh th µ nh m é t c ¸ ch t ù nhi ª n do c ¸ c s ù
ki Ö n c ô th Ó trong cu é c s è ng t ¹ o n ª n. V Ý d ô , khi ng ê i ph ô n ÷ sinh con, ®ø a con c «
Con
Con
Con
Con
ng
ng
ng
ng
ê
ê
ê
ê
i
i
i
i
T ª n ?
Cha ?
M Ñ ?
Anh em ?
Con c ¸ i ?
V î / Ch å ng ?
Mr.
Mr.
Mr.
Mr.
Th
Th
Th
Th
¾
¾
¾
¾
ng
ng
ng
ng
Ms.
Ms.
Ms.
Ms.
Nga
Nga
Nga
Nga
Mr.
Mr.
Mr.
Mr.
Quang
Quang
Quang
Quang
Mr.
Mr.
Mr.
Mr.
H
H
H
H
ng
ng
ng
ng
Ms.
Ms.
Ms.
Ms.
V
V
V
V
©
©
©
©
n
n
n
n
Miss.
Miss.
Miss.
Miss.
Mai
Mai
Mai
Mai
Miss.
Miss.
Miss.
Miss.
Trang
Trang
Trang
Trang
Mr.
Mr.
Mr.
Mr.
Tu
Tu
Tu
Tu
Ê
Ê
Ê
Ê
n
n
n
n
Ms.
Ms.
Ms.
Ms.
H
H
H
H
»
»
»
»
ng
ng
ng
ng
Mr.
Mr.
Mr.
Mr.
Th
Th
Th
Th
µ
µ
µ
µ
nh
nh
nh
nh
Ms.
Ms.
Ms.
Ms.
Lan
Lan
Lan
Lan
- - - -
-
- - - -
-
- - - -
-
- -
- -
-
H × nh 1.2 M ë r é ng quan h Ö gi ÷ a c ¸ c gia ®× nh
Ng « n ng ÷ C++
- 4 -
ta sinh ra s Ï c ã m Ñ l µ c « ta v µ cha l µ ch å ng c « ta, ®å ng th ê i anh ch å ng ph i ®î c
c Ë p nh Ë t ®Ó c ã th ª m ®ø a con n µ y. Nh ÷ ng ®ø a con tr í c c ñ a c « ta s Ï c ã th ª m ®ø a em
n µ y v µ ®ø a b Ð c ã th ª m nh ÷ ng ng ê i anh ho Æ c ng ê i ch Þ ®ã . D Ô d µ ng th Ê y r » ng c ã
hai s ù ki Ö n ch Ý nh t ¸ c ®é ng ®Õ n m è i quan h Ö gia ®× nh l µ s ù sinh con c ñ a ng ê i ph ô
n ÷ v µ h « n nh © n gi ÷ a hai c ¸ th Ó kh ¸ c gi í i trong x · h é i. C ¸ c s ù ki Ö n n µ y g ¾ n li Ò n v í i
t õ ng con ng ê i trong b µ i to ¸ n. § i Ò u n µ y c ã ngh Ü a l µ khi n ã i ®Õ n m é t s ù ki Ö n n µ o th ×
ph i ch Ø ra n ã ®î c ph ¸ t sinh b ë i ng ê i n µ o. V Ý d ô , khi n ã i s ù ki Ö n sinh con th × ph i
bi Õ t ng ê i n µ o sinh. Khi m é t s ù ki Ö n c ñ a m é t con ng ê i n µ o ®ã x y ra (v Ý d ô nh
sinh con) th × c ¸ c thu é c t Ý nh c ñ a ch Ý nh anh ta s Ï b Þ thay ®æ i, ®å ng th ê i thu é c t Ý nh c ñ a
m é t s è ®è i t î ng li ª n quan c ò ng c ã th Ó thay ®æ i theo. Qu ¸ tr × nh ®ã ng g ã i gi ÷ a c ¸ c
s ù ki Ö n v µ thu é c t Ý nh s Ï t ¹ o ra §è
§è
§è
§è
i
i
i
i
t
t
t
t
î
î
î
î
ng,
ng,
ng,
ng,
kh ¸ i ni Ö m c ¬ b n c ñ a ph ¬ ng ph ¸ p
LTH § T. M é t m « t chung cho c ¸ c ®è i t î ng con ng ê i c ñ a b µ i to ¸ n ®î c g ä i l µ
m é t L
L
L
L
í
í
í
í
p
p
p
p
. H × nh 1.4 minh ho ¹ m é t l í p Con ng ê i c ã th ª m c ¸ c s ù ki Ö n c ñ a b µ i to ¸ n.
Sau khi ®· g ¾ n k Õ t c ¸ c s ù ki Ö n v µ o ®è i t î ng nh tr ª n, v Ê n ®Ò l µ t ¹ o m é t s ¬ ®å
quan h Ö gia ®× nh nh th Õ n µ o. D í i ®© y l µ m é t v Ý d ô minh ho ¹ vi Ö c t ¹ o ra m é t quan
h Ö gia ®× nh d ù a tr ª n c ¸ c s ù ki Ö n cu é c s è ng. Gi thi Õ t l µ ®· c ã hai ®è i t î ng l µ « ng
Th ¾ ng v µ b µ Mai.
Ms.
Ms.
Ms.
Ms.
Mai
Mai
Mai
Mai
Mr.
Mr.
Mr.
Mr.
Th
Th
Th
Th
¾
¾
¾
¾
ng
ng
ng
ng
Mr.
Mr.
Mr.
Mr.
Tu
Tu
Tu
Tu
Ê
Ê
Ê
Ê
n
n
n
n
Miss.
Miss.
Miss.
Miss.
Nga
Nga
Nga
Nga
Con
Con
Con
Con
ng
ng
ng
ng
ê
ê
ê
ê
i
i
i
i
T ª n ?
Cha ?
M Ñ ?
Anh em ?
Con c ¸ i ?
V î / Ch å ng ?
Sinh con
C í i
L Ë p tr
×
nh h í ng ®è
i t
î ng
- 5 -
C ¸ c s ù ki Ö n ®Ó t ¹ o ra c © y quan h Ö tr ª n c ã th Ó vi Õ t theo tr Ë t t ù nh sau:
Th ¾ ng.C í i (Mai)
Mai.Sinh con (g ¸ i, Nga)
Mai.Sinh con (trai,Tu Ê n)
C ¸ c s ù ki Ö n vi Õ t theo c ó ph ¸ p:
Nh v Ë y c ¸ c b ¹ n ®· th Ê y r » ng ch ó ng ta kh « ng c Ç n ph i quan t © m ®Õ n c ¸ ch t ¹ o
m é t c Ê u tr ó c c © y quan h Ö nh th Õ n µ o b ª n trong d ÷ li Ö u c ñ a ch ¬ ng tr × nh m µ v É n c ã
th Ó cung c Ê p d ÷ li Ö u b µ i to ¸ n cho ch ¬ ng tr × nh th « ng qua c ¸ c s ù ki Ö n nh tr ª n.
Ch ó ng ta quay l ¹ i v Ê n ®Ò ch Ý nh c ñ a b µ i to ¸ n l µ tr l ê i c ¸ c c © u h á i v Ò m è i quan h Ö
gia ®× nh nh th Õ n µ o khi ti Õ p c Ë n b µ i to ¸ n theo ph ¬ ng ph ¸ p n µ y. §Ó tr l ê i ®î c
c © u h á i t æ ng qu ¸ t X v µ Y c ã quan h Ö gia ®× nh nh th Õ n µ o ? ta c Ç n ph i tr l ê i c ¸ c
c © u h á i nh á nh X c ã ph i l µ anh c ñ a Y kh « ng ? , X c ã ph i l µ « ng n é i c ñ a Y
kh « ng ? , v.v.. C © u h á i c ã th Ó nh × n t õ g ã c ®é ®è i t î ng X nh : “§è i t î ng c ã ph i
l µ anh c ñ a Y kh « ng ? , c ã ph i l µ « ng n é i c ñ a Y kh « ng ? , v.v.. Nh v Ë y c © u h á i
l ó c n µ y ®· giao v Ò cho ®è i t î ng ®Ó tr l ê i. C ¸ c ®è i t î ng l ó c n µ y c Ç n ph i c ã c ¸ c
ph ¬ ng th ø c ®Ó tr l ê i c ¸ c c © u h á i nh v Ë y. V µ b © y gi ê m é t l í p ®è i t î ng Con
ng ê i ®î c minh ho ¹ nh h × nh 1.5.
Ta xem x Ð t c ¸ c ®è i t î ng tr l ê i c ¸ c c © u h á i nh th Õ n µ o? Ch ¼ ng h ¹ n X tr l ê i
c © u h á i “§è i t î ng c ã ph i l µ anh c ñ a Y kh « ng ? ho µ n to µ n ®¬ n gi n. N ã ch Ø c Ç n
ki Ó m tra xem Y c ã ph i l µ anh em m µ trong thu é c t Ý nh c ñ a n ã l u gi ÷ kh « ng. Ho µ n
Con
Con
Con
Con
ng
ng
ng
ng
ê
ê
ê
ê
i
i
i
i
T ª n ?
Cha ?
M Ñ ?
Anh em ?
Con c ¸ i ?
V î / Ch å ng ?
Sinh con
C í i
L µ anh
L µ « ng n é i
.......
§è i t î ng t ¹ o s ù ki Ö n . S ù ki Ö n ( th « ng s è k Ì m theo s ù ki Ö n )
Ng « n ng ÷ C++
- 6 -
to µ n t ¬ ng t ù ®è i v í i c ¸ c c © u h á i quan h Ö g Ç n nh l µ em, l µ ch Þ , l µ b è , l µ m Ñ ,... C ß n
c © u h á i nh §è i t î ng c ã ph i l µ « ng n é i c ñ a Y kh « ng ? ph ø c t ¹ p h ¬ n ch ó t Ý t. §Ó
tr l ê i ®î c c ¸ c c © u h á i c ã quan h Ö xa nh th Õ ta ph i d ù a v µ o k Õ t qu tr l ê i c ñ a
c ¸ c c © u h á i v Ò c ¸ c quan h Ö g Ç n g ò i h ¬ n. §Ó bi Õ t ®î c X ®ó ng l µ « ng n é i c ñ a Y th ×
ph i ch Ø ra m é t ng ê i Z n µ o ®ã m µ X l µ b è c ñ a Z v µ Z l µ b è c ñ a Y. N Õ u kh « ng ch Ø
ra ®î c Z th × X kh « ng ph i l µ « ng n é i c ñ a Y. Vi Ö c t × m ki Õ m Z ho µ n to µ n ®¬ n gi n
b ë i v × ch ¬ ng tr × n h qu n l ý t Ë p c ¸ c ®è i t î ng con ng ê i. H · y t × m Z trong t Ë p ®è i
t î ng Con ng ê i. C ã th Ó th Ê y c © u h á i ban ®Ç u ®· ®î c ph © n chia th µ nh hai c © u h á i
®¬ n gi n v í i ch ó ng m µ ®· c ã c ¸ ch tr l ê i. T ã m l ¹ i, c ¸ c v Ê n ®Ò c ñ a b µ i to ¸ n ®· ®î c
gi i quy Õ t khi ti Õ p c Ë n theo ph ¬ ng ph ¸ p LTH § T. M é t l î i ® i Ó m c ã th Ó th Ê y ngay l µ
b µ i to ¸ n ®î c ph © n t Ý ch r Ê t g Ç n v í i th ù c t Õ v µ t ù nhi ª n.
Tr ª n ®© y m í i ch Ø l µ s ù ph © n t Ý ch s ¬ khai b µ i to ¸ n d ù a theo ph ¬ ng ph ¸ p
LTH § T. §Ó l µ m ho µ n ch Ø nh ®î c b µ i to ¸ n c ß n c Ç n m é t s è k Ü thu Ë t c ñ a LTH § T nh
t Ý nh k Õ th õ a, t Ý nh ® a h × nh, ... Ch ó ng t « i hy v ä ng r » ng qua s ù ph © n t Ý ch m é t b µ i to ¸ n
nh á tr ª n ®· ch ø ng t á ® î c l î i Ý ch c ñ a ph ¬ ng ph ¸ p LTH § T. Trong m ô c ti Õ p theo
ch ó ng t « i s Ï t ã m t ¾ t v µ ® a ra t æ ng quan s ¬ b é v Ò LTH § T.
3.
3.
3.
3.
L
L
L
L
Ë
Ë
Ë
Ë
p
p
p
p
tr
tr
tr
tr
×
×
×
×
nh
nh
nh
nh
h
h
h
h
í
í
í
í
ng
ng
ng
ng
®è
®è
®è
®è
i
i
i
i
t
t
t
t
î
î
î
î
ng
ng
ng
ng
L Ë p tr × nh h í ng ®è i t î ng ®Æ t tr ä ng t © m v µ o ®è i t î ng, y Õ u t è quan tr ä ng
trong qu ¸ tr × nh ph ¸ t tri Ó n ch ¬ ng tr × nh v µ kh « ng cho ph Ð p d ÷ li Ö u bi Õ n ®é ng t ù do
trong h Ö th è ng. D ÷ li Ö u ®î c g ¾ n ch Æ t v í i c ¸ c h µ m th µ nh c ¸ c v ï ng ri ª ng m µ ch Ø c ã
c ¸ c h µ m ®ã t ¸ c ®é ng l ª n v µ c Ê m c ¸ c h µ m b ª n ngo µ i truy nh Ë p t í i m é t c ¸ ch tu ú ti Ö n.
LTH § T cho ph Ð p ch ó ng ta ph © n t Ý ch b µ i to ¸ n th µ nh 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 c ¸ c h µ m xung quanh c ¸ c ®è i t î ng ®ã .
C ¸ c ®è i t î ng c ã th Ó t ¸ c ®é ng, trao ®æ i th « ng tin v í i nhau th « ng qua c ¬ ch Õ th « ng
b ¸ o (message). T æ ch ø c m é t ch ¬ ng tr × nh h í ng ®è i t î ng c ã th Ó m « t nh trong
h × nh 1.6.
LTH § T c ã c ¸ c ®Æ c t Ý nh ch ñ y Õ u sau:
1. T Ë p trung v µ o d ÷ li Ö u thay cho c ¸ c h µ m
§è
§è
§è
§è
i
i
i
i
t
t
t
t
î
î
î
î
ng
ng
ng
ng
B
B
B
B
D ÷ li Ö u
H µ m
§è
§è
§è
§è
i
i
i
i
t
t
t
t
î
î
î
î
ng
ng
ng
ng
A
A
A
A
D ÷ li Ö u
H µ m
§è
§è
§è
§è
i
i
i
i
t
t
t
t
î
î
î
î
ng
ng
ng
ng
C
C
C
C
D ÷ li Ö u
H µ m
message
L Ë p tr
×
nh h í ng ®è
i t
î ng
- 7 -
2. Ch ¬ ng tr × nh ®î c chia th µ nh c ¸ c ®è i t î ng.
3. C ¸ c c Ê u tr ó c d ÷ li Ö u ®î c thi Õ t k Õ sao cho ®Æ c t ®î c ®è i t î ng.
4. C ¸ c h µ m thao t ¸ c tr ª n c ¸ c v ï ng d ÷ li Ö u c ñ a ®è i t î ng ®î c g ¾ n v í i c Ê u
tr ó c d ÷ li Ö u ®ã .
5.
D ÷ li Ö u ®î c ®ã ng g ã i l ¹ i, ®î c che gi Ê u v µ kh « ng cho ph Ð p c ¸ c h µ m
ngo ¹ i lai truy nh Ë p t ù do.
6. C ¸ c ®è i t î ng t ¸ c ®é ng v µ trao ®æ i th « ng tin v í i nhau qua c ¸ c h µ m
7. C ã th Ó d Ô d µ ng b æ sung d ÷ li Ö u v µ c ¸ c h µ m m í i 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 t õ d í i l ª n (bottom-up).
Sau ®© y l µ m é t s è kh ¸ i ni Ö m ®î c s ö d ô ng trong LTH § T.
3.1
3.1
3.1
3.1
M
M
M
M
é
é
é
é
t
t
t
t
s
s
s
s
è
è
è
è
kh
kh
kh
kh
¸
¸
¸
¸
i
i
i
i
ni
ni
ni
ni
Ö
Ö
Ö
Ö
m
m
m
m
§è
§è
§è
§è
i
i
i
i
t
t
t
t
î
î
î
î
ng
ng
ng
ng
(object)
(object)
(object)
(object)
§è i t î ng l µ s ù k Õ t h î p gi ÷ a d ÷ li Ö u v µ th ñ t ô c (hay c ß n g ä i l µ c ¸ c ph ¬ ng th ø c
- method) thao t ¸ c tr ª n d ÷ li Ö u ®ã . C ã th Ó ® a ra c « ng th ø c ph n ¸ nh b n ch Ê t k ü
thu Ë t c ñ a LTH § T nh sau:
§è
§è
§è
§è
i
i
i
i
t
t
t
t
î
î
î
î
ng
ng
ng
ng
=
=
=
=
D
D
D
D
÷
÷
÷
÷
li
li
li
li
Ö
Ö
Ö
Ö
u
u
u
u
+
+
+
+
Ph
Ph
Ph
Ph
¬
¬
¬
¬
ng
ng
ng
ng
th
th
th
th
ø
ø
ø
ø
c
c
c
c
L
L
L
L
í
í
í
í
p
p
p
p
(class)
(class)
(class)
(class)
L í p l µ m é t kh ¸ i ni Ö m m í i trong LTH § T so v í i c ¸ c k ü thu Ë t l Ë p tr × nh kh ¸ c. §ã
l µ m é t t Ë p c ¸ c ®è i t î ng c ã c Ê u tr ó c d ÷ li Ö u v µ c ¸ c ph ¬ ng th ø c gi è ng nhau (hay n ã i
c ¸ ch kh ¸ c l µ m é t t Ë p c ¸ c ®è i t î ng c ï ng lo ¹ i). Nh v Ë y khi c ã m é t l í p th × ch ó ng ta
s Ï bi Õ t ®î c m é t m « t c Ê u tr ó c d ÷ li Ö u v µ ph ¬ ng th ø c c ñ a c ¸ c ®è i t î ng thu é c l í p
®ã . M ç i ®è i t î ng s Ï l µ m é t th Ó hi Ö n c ô th Ó (instance) c ñ a l í p ®ã . Trong l Ë p tr × nh,
ch ó ng ta c ã th Ó coi m é t l í p nh l µ m é t ki Ó u, c ß n c ¸ c ®è i t î ng s Ï l µ c ¸ c bi Õ n c ã
ki Ó u c ñ a l í p.
Nguy
Nguy
Nguy
Nguy
ª
ª
ª
ª
n
n
n
n
t
t
t
t
¾
¾
¾
¾
c
c
c
c
®ã
®ã
®ã
®ã
ng
ng
ng
ng
g
g
g
g
ã
ã
ã
ã
i
i
i
i
d
d
d
d
÷
÷
÷
÷
li
li
li
li
Ö
Ö
Ö
Ö
u
u
u
u
Trong LTCT ta ®· th Ê y l µ c ¸ c h µ m hay th ñ t ô c ®î c s ö d ô ng m µ kh « ng c Ç n
bi Õ t ®Õ n n é i dung c ô th Ó c ñ a n ã . Ng ê i s ö d ô ng ch Ø c Ç n bi Õ t ch ø c n ¨ ng c ñ a h µ m
c ò ng nh c ¸ c tham s è c Ç n truy Ò n v µ o ®Ó g ä i h µ m ch ¹ y m µ kh « ng c Ç n quan t © m ®Õ n
nh ÷ ng l Ö nh c ô th Ó b ª n trong n ã . Ng ê i ta g ä i ®ã l µ s ù ®ã ng g ã i v Ò ch ø c n ¨ ng.
Trong LTH § T, kh « ng nh ÷ ng c ¸ c ch ø c n ¨ ng ®î c ®ã ng g ã i m µ c d ÷ li Ö u c ò ng
nh v Ë y. V í i m ç i ®è i t î ng ng ê i ta kh « ng th Ó truy nh Ë p tr ù c ti Õ p v µ o c ¸ c th µ nh
ph Ç n d ÷ li Ö u c u n ã m µ ph i th « ng qua c ¸ c th µ nh ph Ç n ch ø c n ¨ ng (c ¸ c ph ¬ ng th ø c)
®Ó l µ m vi Ö c ®ã .
Ch ó ng ta s Ï th Ê y s ù ®ã ng g ã i th ù c s ù v Ò d ÷ li Ö u ch Ø c ã trong m é t ng « n ng ÷
LTH § T thu Ç n khi Õ t (pure) theo ngh Ü a c ¸ c ng « n ng ÷ ®î c thi Õ t k Õ ngay t õ ®Ç u ch Ø
Ng « n ng ÷ C++
- 8 -
cho LTH § T. C ß n ®è i v í i c ¸ c ng « n ng ÷ lai (hybrid) ®î c x © y d ù ng tr ª n c ¸ c ng « n
ng ÷ kh ¸ c ban ®Ç u ch a ph i l µ H § T nh C++ ®î c n ã i ®Õ n trong cu è n s ¸ ch n µ y,
v É n c ã nh ÷ ng ngo ¹ i l Ö nh Ê t ®Þ nh vi ph ¹ m nguy ª n t ¾ c ®ã ng g ã i d ÷ li Ö u.
T
T
T
T
Ý
Ý
Ý
Ý
nh
nh
nh
nh
k
k
k
k
Õ
Õ
Õ
Õ
th
th
th
th
õ
õ
õ
õ
a
a
a
a
(inheritance)
(inheritance)
(inheritance)
(inheritance)
M é t kh ¸ i ni Ö m quan tr ä ng c ñ a LTH § T l µ s ù k Õ th õ a. S ù k Õ th õ a cho ph Ð p
ch ó ng ta ®Þ nh ngh Ü a m é t l í p m í i tr ª n c ¬ s ë c ¸ c l í p ®· t å n t ¹ i, t Ê t nhi ª n c ã b æ sung
nh ÷ ng ph ¬ ng th ø c hay c ¸ c th µ nh ph Ç n d ÷ li Ö u m í i. Kh n ¨ ng k Õ th õ a cho ph Ð p
ch ó ng ta s ö d ô ng l ¹ i m é t c ¸ ch d Ô d µ ng c ¸ c module ch ¬ ng tr × nh m µ kh « ng c Ç n m é t
thay ®æ i c ¸ c module ®ã . R â r µ ng ®© y l µ m é t ® i Ó m m ¹ nh c ñ a LTH § T so v í i LTCT.
T
T
T
T
Ý
Ý
Ý
Ý
nh
nh
nh
nh
®
®
®
®
a
a
a
a
h
h
h
h
×
×
×
×
nh
nh
nh
nh
(polymorphime)
(polymorphime)
(polymorphime)
(polymorphime)
T Ý nh ® a h × nh xu Ê t hi Ö n khi c ã kh ¸ i ni Ö m k Õ th õ a. Gi s ö ch ó ng ta c ã m é t k Õ
th õ a l í p h × nh t ø gi ¸ c v µ l í p h × nh tam gi ¸ c k Õ th õ a t õ l í p h × nh ® a gi ¸ c (h × nh tam gi ¸ c
v µ t ø gi ¸ c s Ï c ã ®Ç y ®ñ c ¸ c thu é c t Ý nh v µ t Ý nh ch Ê t c ñ a m é t h × nh ® a gi ¸ c). L ó c n µ y
m é t ®è i t î ng thu é c l í p h × nh tam gi ¸ c hay t ø gi ¸ c ®Ò u c ã th Ó hi Ó u r » ng n ã l µ m é t
h × nh ® a gi ¸ c. M Æ t kh ¸ c v í i m ç i ® a gi ¸ c ta c ã th Ó t Ý nh di Ö n t Ý ch c ñ a n ã . Nh v Ë y l µ m
th Õ n µ o m µ m é t ® a gi ¸ c c ã th Ó s ö d ô ng ®ó ng c « ng th ø c ®Ó t Ý nh di Ö n t Ý ch ph ï h î p v í i
n ã l µ h × nh tam gi ¸ c hay t ø gi ¸ c. Ta g ä i ®ã l µ t Ý nh ® a h × nh.
3.2
3.2
3.2
3.2
C
C
C
C
¸
¸
¸
¸
c
c
c
c
u
u
u
u
®
®
®
®
i
i
i
i
Ó
Ó
Ó
Ó
m
m
m
m
c
c
c
c
ñ
ñ
ñ
ñ
a
a
a
a
LTH
LTH
LTH
LTH
§
§
§
§
T
T
T
T
LTH § T ® em l ¹ i m é t s è l î i th Õ cho ng ê i thi Õ t k Õ l É n ng ê i l Ë p tr × nh. C ¸ ch ti Õ p
c Ë n h í ng ®è i t î ng gi i quy Õ t ®î c nhi Ò u v Ê n ®Ò t å n t ¹ i trong qu ¸ tr × nh ph ¸ t tri Ó n
ph Ç n m Ò m v µ t ¹ o ra ®î c nh ÷ ng ph Ç n m Ò m c ã ®é ph ø c t ¹ p v µ ch Ê t l î ng cao.
Ph ¬ ng ph ¸ p n µ y m ë ra m é t tri Ó n v ä ng to l í n cho ng ê i l Ë p tr × nh. Nh ÷ ng u ® i Ó m
ch Ý nh c ñ a LTH § T l µ :
1. Th « ng qua nguy ª n l ý k Õ th õ a, ch ó ng ta c ã th Ó lo ¹ i b á ®î c nh ÷ ng ® o ¹ n
ch ¬ ng tr × nh l Æ p l ¹ i trong qu ¸ tr × nh m « t c ¸ c l í p v µ c ã th Ó m ë r é ng kh
n ¨ ng s ö d ô ng c ñ a c ¸ c l í p ®· x © y d ù ng m µ kh « ng c Ç n ph i vi Õ t l ¹ i.
2. Ch ¬ ng tr × nh ®î c x © y d ù ng t õ nh ÷ ng ®¬ n th Ó ( ®è i t î ng) trao ®æ i v í i
nhau n ª n vi Ö c thi Õ t k Õ v µ l Ë p tr × nh s Ï ®î c th ù c hi Ö n theo quy tr × nh nh Ê t
®Þ nh ch ø kh « ng ph i d ù a v µ o kinh nghi Ö m v µ k ü thu Ë t nh tr í c n ÷ a. § i Ò u
n µ y ®¶ m b o r ó t ng ¾ n ®î c th ê i gian x © y d ù ng h Ö th è ng v µ t ¨ ng n ¨ ng su Ê t
lao ®é ng.
3. Nguy ª n l ý ®ã ng g ã i hay che gi Ê u th « ng tin gi ó p ng ê i l Ë p tr × nh t ¹ o ra ®î c
nh ÷ ng ch ¬ ng tr × nh an to µ n kh « ng b Þ thay ®æ i b ë i nh ÷ ng ® o ¹ n ch ¬ ng
tr × nh kh ¸ c.
4. C ã th Ó x © y d ù ng ®î c ¸ nh x ¹ c ¸ c ®è i t î ng c ñ a b µ i to ¸ n v µ o ®è i t î ng
ch ¬ ng tr × nh.
5. C ¸ ch ti Õ p c Ë n thi Õ t k Õ ®Æ t tr ä ng t © m v µ o d ÷ li Ö u, gi ó p ch ó ng ta x © y d ù ng
®î c m « h × nh chi ti Õ t v µ d Ô d µ ng c µ i ®Æ t h ¬ n.
L Ë p tr
×
nh h í ng ®è
i t
î ng
- 9 -
6. C ¸ c h Ö th è ng h í ng ®è i t î ng d Ô m ë r é ng, n © ng c Ê p th µ nh nh ÷ ng h Ö l í n
h ¬ n.
7. K ü thu Ë t truy Ò n th « ng b ¸ o trong vi Ö c trao ®æ i th « ng tin gi ÷ a c ¸ c ®è i t î ng
l µ m cho vi Ö c m « t giao di Ö n v í i c ¸ c h Ö th è ng b ª n ngo µ i tr ë n ª n ®¬ n gi n
h ¬ n.
8. C ã th Ó qu n l ý ®î c ®é ph ø c t ¹ p c ñ a nh ÷ ng s n ph È m ph Ç n m Ò m.
3.3
3.3
3.3
3.3
Nh
Nh
Nh
Nh
÷
÷
÷
÷
ng
ng
ng
ng
ø
ø
ø
ø
ng
ng
ng
ng
d
d
d
d
ô
ô
ô
ô
ng
ng
ng
ng
c
c
c
c
ñ
ñ
ñ
ñ
a
a
a
a
LTH
LTH
LTH
LTH
§
§
§
§
T
T
T
T
LTH § T l µ m é t trong nh ÷ ng thu Ë t ng ÷ ®î c nh ¾ c ®Õ n nhi Ò u nh Ê t hi Ö n nay
trong c « ng ngh Ö ph Ç n m Ò m v µ n ã ®î c ø ng d ô ng ®Ó ph ¸ t tri Ó n ph Ç n m Ò m trong
nhi Ò u l Ü nh v ù c kh ¸ c nhau. Trong s è ®ã , ø ng d ô ng quan tr ä ng v µ n æ i ti Õ ng nh Ê t hi Ö n
nay l µ thi Õ t k Õ giao di Ö n v í i ng ê i s ö d ô ng, ki Ó u nh Windows. C ¸ c h Ö th « ng tin
qu n l ý trong th ù c t Õ th ê ng r Ê t ph ø c t ¹ p, ch ø a nhi Ò u ®è i t î ng v í i c ¸ c thu é c t Ý nh
v µ h µ m ph ø c t ¹ p. §Ó gi i quy Õ t nh ÷ ng h Ö th « ng tin ph ø c t ¹ p nh th Õ , LTH § T t á ra
r Ê t hi Ö u qu . C ¸ c l Ü nh v ù c ø ng d ô ng ph ï h î p v í i k ü thu Ë t LTH § T c ã th Ó li Ö t k ª nh
d í i ®© y:
*
C ¸ c h Ö th è ng l µ m vi Ö c theo th ê i gian th ù c.
* C ¸ c h Ö m « h × nh ho ¸ ho Æ c m « ph á ng c ¸ c qu ¸ tr × nh.
* C ¸ c h Ö c ¬ s ë d ÷ li Ö u h í ng ®è i t î ng.
*
C ¸ c h Ö si ª u v ¨ n b n (hypertext), ® a ph ¬ ng ti Ö n (multimedia).
*
C ¸ c h Ö th è ng tr Ý tu Ö nh © n t ¹ o v µ c ¸ c h Ö chuy ª n gia.
*
C ¸ c h Ö th è ng song song v µ m ¹ ng n ¬ -ron.
*
C ¸ c h Ö t ù ®é ng ho ¸ v ¨ n ph ß ng ho Æ c tr î gi ó p quy Õ t ®Þ nh.
* C ¸ c h Ö CAD/CAM.
V í i nhi Ò u ®Æ c t Ý nh phong ph ó c ñ a LTH § T n ã i ri ª ng, c ñ a ph ¬ ng ph ¸ p ph © n
t Ý ch thi Õ t k Õ v µ ph ¸ t tri Ó n h í ng ®è i t î ng n ã i chung ch ó ng ta hy v ä ng c « ng nghi Ö p
ph Ç n m Ò m s Ï c ã nh ÷ ng c i ti Õ n nh y v ä t kh « ng nh ÷ ng v Ò ch Ê t l î ng, m µ c ß n gia
t ¨ ng nhanh v Ò s è l î ng t rong t ¬ ng lai.
4.
4.
4.
4.
C
C
C
C
¸
¸
¸
¸
c
c
c
c
ng
ng
ng
ng
«
«
«
«
n
n
n
n
ng
ng
ng
ng
÷
÷
÷
÷
l
l
l
l
Ë
Ë
Ë
Ë
p
p
p
p
tr
tr
tr
tr
×
×
×
×
nh
nh
nh
nh
h
h
h
h
í
í
í
í
ng
ng
ng
ng
®è
®è
®è
®è
i
i
i
i
t
t
t
t
î
î
î
î
ng
ng
ng
ng
LTH § T kh « ng ph i l µ ®Æ c quy Ò n c ñ a m é t ng « n ng ÷ ®Æ c bi Ö t n µ o. C ò ng gi è ng
nh k ü thu Ë t l Ë p tr × nh c ã c Ê u tr ó c, c ¸ c kh ¸ i ni Ö m trong LTH § T ®î c th Ó hi Ö n trong
nhi Ò u ng « n ng ÷ l Ë p tr × nh kh ¸ c nhau. Nh ÷ ng ng « n ng ÷ cung c Ê p ®î c nh ÷ ng kh
n ¨ ng LTH § T ®î c g ä i l µ ng « n ng ÷ l Ë p tr × nh h í ng ®è i t î ng. Tuy v É n c ã nh ÷ ng
ng « n ng ÷ ch Ø cung c Ê p kh n ¨ ng t ¹ o l í p v µ ®è i t î ng m µ kh « ng cho ph Ð p k Õ th õ a,
do ®ã h ¹ n ch Õ kh n ¨ ng LTH § T. H × nh 1.7 cho ch ó ng ta m é t c ¸ i nh × n t æ ng quan v Ò
s ù ph ¸ t tri Ó n c ¸ c ng « n ng ÷ LTH § T.
Ng « n ng ÷ C++
- 10 -
C ¸ c ng « n ng ÷ SIMULA, SMALLTALK, JAVA thu é c h ä ng « n ng ÷ LTH § T
thu Ç n khi Õ t, ngh Ü a l µ n ã kh « ng cho ph Ð p ph ¸ t tri Ó n c ¸ c ch ¬ ng tr × nh c Ê u tr ó c tr ª n
c ¸ c ng « n ng ÷ lo ¹ i n µ y. C ß n ng « n ng ÷ C++ thu é c lo ¹ i ng « n ng ÷ lai b ë i v × n ã ®î c
ph ¸ t tri Ó n t õ ng « n ng ÷ C. Do ®ã tr ª n C++ v É n c ã th Ó s ö d ô ng t Ý nh c Ê u tr ó c v µ ®è i
t î ng c ñ a ch ¬ ng tr × nh. § i Ò u n µ y t á ra r Ê t ph ï h î p khi ch ó ng ta m í i b ¾ t ®Ç u h ä c
m é t ng « n ng ÷ l Ë p tr × nh. §ã ch Ý nh l µ l ý do m µ ch ó ng t « i s ö d ô ng ng « n ng ÷ C++ ®Ó
gi í i thi Ö u ph ¬ ng ph ¸ p LTH § T trong cu è n s ¸ ch n µ y. M é t l ý do kh ¸ c n ÷ a l µ C++ s ö
d ô ng c ó ph ¸ p c ñ a ng « n ng ÷ C l µ ng « n ng ÷ r Ê t th « ng d ô ng trong l Ë p tr × nh chuy ª n
nghi Ö p.
5.
5.
5.
5.
Ng
Ng
Ng
Ng
«
«
«
«
n
n
n
n
ng
ng
ng
ng
÷
÷
÷
÷
l
l
l
l
Ë
Ë
Ë
Ë
p
p
p
p
tr
tr
tr
tr
×
×
×
×
nh
nh
nh
nh
C++
C++
C++
C++
V µ o n ¨ m 1983, gi ¸ o s Bjarne Stroustrap b ¾ t ®Ç u nghi ª n c ø u v µ ph ¸ t tri Ó n vi Ö c
c µ i ®Æ t kh n ¨ ng LTH § T v µ o ng « n ng ÷ C t ¹ o ra m é t ng « n ng ÷ m í i g ä i l µ C++. T ª n
g ä i n µ y c ã th Ó ph © n t Ý ch ý ngh Ü a r » ng n ã l µ ng « n ng ÷ C m µ c ã hai ®Æ c ® i Ó m m í i
t ¬ ng ø ng v í i hai d Ê u c é ng. §Æ c ® i Ó m th ø nh Ê t l µ m é t s è kh n ¨ ng m ë r é ng so v í i
C nh tham chi Õ u, ch å ng h µ m, tham s è m Æ c ®Þ nh... §Æ c ® i Ó m th ø hai ch Ý nh l µ kh
n ¨ ng LTH § T. Hi Ö n nay C++ ch a ph i l µ m é t ng « n ng ÷ ho µ n to µ n æ n ®Þ nh. K Ó t õ
khi phi ª n b n ®Ç u ti ª n ra ®ê i v µ o n ¨ m 198 6 ®· c ã r Ê t nhi Ò u thay ®æ i trong c ¸ c phi ª n
b n C++ kh ¸ c nhau: b n 1.1 ra ®ê i v µ o n ¨ m 1986, 2.0 v µ o n ¨ m 1989 v µ 3.0 v µ o
n ¨ m 1991. Phi ª n b n 3.0 n µ y ®î c s ö d ô ng ®Ó l µ m c ¬ s ë cho vi Ö c ®Þ nh ngh Ü a m é t
ng « n ng ÷ C++ chu È n (ki Ó u nh Ansi C).
SIMULA (66)
SMALLTALK (71)
SMALLTALK (80)
ADA (83)
C++ (86)
EIFFEL (90)
JAVA (95)
ADA (95)
L Ë p tr
×
nh h í ng ®è
i t
î ng
- 11 -
Tr ª n th ù c t Õ hi Ö n nay t Ê t c c ¸ c ch ¬ ng tr × nh d Þ ch C++ ®Ò u t ¬ ng th Ý ch v í i
phi ª n b n 3.0. V × v Ë y C++ h Ç u nh kh « ng g © y b Ê t k ú m é t kh ã kh ¨ n n µ o khi chuy Ó n
®æ i t õ m é t m « i tr ê ng n µ y sang m « i tr ê ng kh ¸ c, nh ch ó ng ta ®· bi Õ t C++ nh l µ
m é t s ù b æ sung kh n ¨ ng LTH § T v µ o ng « n ng ÷ C. S Ï c ã nhi Ò u ng ê i ngh Ü r » ng
ng « n ng ÷ C n ã i ë ®© y l µ C theo chu È n ANSI. Th ù c ra kh « ng ph i ho µ n to µ n nh v Ë y .
T ª n th ù c t Õ v É n t å n t ¹ i m é t v µ i ® i Ó m kh « ng t ¬ ng th Ý ch gi ÷ a ANSI C v µ C++.
M Æ t kh ¸ c c ò ng c Ç n th Ê y r » ng nh ÷ ng m ë r é ng c ã trong C++ so v í i Ansi C
kh « ng ch Ø l µ ®Ó ph ô c v ô cho m ô c ®Ý ch t ¹ o cho ng « n ng ÷ kh n ¨ ng LTH § T. C ã
nh ÷ ng thay ®æ i ch Ø v í i m ô c ®Ý ch ®¬ n thu Ç n l µ t ¨ ng s ø c m ¹ nh cho ng « n ng ÷ C hi Ö n
th ê i.
Ngo µ i ra c ã m é t v µ i thay ®æ i nh á ë C++ so v í i ANSI C nh sau:
*
§Þ nh ngh Ü a c ¸ c h µ m: khai b ¸ o, truy Ò n tham s è v µ gi ¸ tr Þ
tr l ¹ i.
* S ù t ¬ ng th Ý ch gi ÷ a c ¸ c con tr á .
*
T Ý nh linh ho ¹ t c ñ a c ¸ c h » ng (const).
C
C
C
C
¸
¸
¸
¸
c
c
c
c
®Æ
®Æ
®Æ
®Æ
c
c
c
c
®
®
®
®
i
i
i
i
Ó
Ó
Ó
Ó
m
m
m
m
m
m
m
m
ë
ë
ë
ë
r
r
r
r
é
é
é
é
ng
ng
ng
ng
trong
trong
trong
trong
C++
C++
C++
C++
Nh ®· ®Ò c Ë p ë tr ª n C++ ch ø a c nh ÷ ng m ë r é ng so v í i C m µ kh « ng li ª n
quan ®Õ n k ü thu Ë t h í ng ®è i t î ng. Nh ÷ ng m ë r é ng n µ y s Ï ®î c m « t c ô th Ó trong
ch ¬ ng sau, ë ®© y ch ó ng ta ch Ø t ã m t ¾ t l ¹ i m é t v µ i ® i Ó m ch Ý nh.
* Kh n ¨ ng vi Õ t c ¸ c d ß ng ch ó th Ý ch m í i.
*
Kh n ¨ ng khai b ¸ o linh ho ¹ t h ¬ n.
* Kh n ¨ ng ®Þ nh ngh Ü a l ¹ i c ¸ c h µ m: c ¸ c h µ m c ï ng t ª n c ã th Ó
th ù c hi Ö n theo nh ÷ ng thao t ¸ c kh ¸ c nhau. C ¸ c l ê i g ä i h µ m s Ï d ï ng ki Ó u
v µ s è tham s è ®Ó x ¸ c ®Þ nh ®ó ng h µ m n µ o c Ç n th ù c hi Ö n.
*
C ã th ª m c ¸ c to ¸ n t ö ®Þ nh ngh Ü a b é nh í ®é ng m í i: new v µ
delete.
*
Kh n ¨ ng ®Þ nh ngh Ü a c ¸ c h µ m inline ®Ó t ¨ ng t è c ®é th ù c
hi Ö n ch ¬ ng tr × nh.
*
T ¹ o c ¸ c bi Õ n tham chi Õ u ®Õ n c ¸ c bi Õ n kh ¸ c.
LTH
LTH
LTH
LTH
§
§
§
§
T
T
T
T
trong
trong
trong
trong
C++
C++
C++
C++
C++ ch ø a ®ù ng kh ¸ i ni Ö m l í p. M é t l í p bao g å m c ¸ c th µ nh ph Ç n d ÷ li Ö u hay l µ
thu é c t Ý nh v µ c ¸ c ph ¬ ng th ø c hay l µ h µ m th µ nh ph Ç n. T õ m é t l í p ta c ã th Ó t ¹ o ra
c ¸ c ®è i t î ng ho Æ c b » ng c ¸ ch khai b ¸ o th « ng th ê ng m é t bi Õ n c ã ki Ó u l µ l í p ®ã
ho Æ c b » ng c ¸ ch c Ê p ph ¸ t b é nh í ®é ng nh ê s ö d ô ng to ¸ n t ö new. C++ cho ph Ð p
ch ó ng ta ®ã ng g ã i d ÷ li Ö u nh ng n ã kh « ng b ¾ t bu é c ch ó ng ta th ù c hi Ö n ® i Ò u ®ã .
§© y l µ m é t nh î c ® i Ó m c ñ a C++. Tuy nhi ª n c ò ng c Ç n th Ê y r » ng b n th © n C++ ch Ø
l µ s ù m ë r é ng c ñ a C n ª n n ã kh « ng th Ó l µ m é t ng « n ng ÷ LTH § T thu Ç n khi Õ t ®î c.
Ng « n ng ÷ C++
- 12 -
C++ cho ph Ð p ta ®Þ nh ngh Ü a c ¸ c h µ m thi Õ t l Ë p (constructor) cho m é t l í p. H µ m
thi Õ t l Ë p l µ m é t ph ¬ ng th ø c ®Æ c bi Ö t ®î c g ä i ®Õ n t ¹ i th ê i ® i Ó m m é t ®è i t î ng c ñ a
l í p ®î c t ¹ o ra. h µ m thi Õ t l Ë p c ã nhi Ö m v ô kh ë i t ¹ o m é t ®è i t î ng: c Ê p ph ¸ t b é nh í ,
g ¸ n c ¸ c gi ¸ tr Þ cho c ¸ c th µ nh ph Ç n d ÷ li Ö u c ò ng nh vi Ö c chu È n b Þ ch ç cho c ¸ c ®è i
t î ng m í i. M é t l í p c ã th Ó c ã m é t hay nhi Ò u h µ m thi Õ t l Ë p. §Ó x ¸ c ®Þ nh h µ m thi Õ t
l Ë p n µ o c Ç n g ä i ®Õ n, ch ¬ ng tr × nh bi ª n d Þ ch s Ï so s ¸ nh c ¸ c ®è i s è v í i c ¸ c tham s è
truy Ò n v µ o. T ¬ ng t ù nh h µ m thi Õ t l Ë p, m é t l í p c ã th Ó c ã m é t h µ m hu û b á
(destructor), m é t ph ¬ ng th ø c ®Æ c bi Ö t ®î c g ä i ®Õ n khi ®è i t î ng ®î c gi i ph ã ng
kh á i b é nh í .
L í p trong C++ th ù c ch Ê t l µ m é t ki Ó u d ÷ li Ö u do ng ê i s ö d ô ng ®Þ nh ngh Ü a.
Kh ¸ i ni Ö m ®Þ nh ngh Ü a ch å ng to ¸ n t ö cho ph Ð p ®Þ nh ngh Ü a c ¸ c ph Ð p to ¸ n tr ª n m é t
l í p gi è ng nh c ¸ c ki Ó u d ÷ li Ö u chu È n c ñ a C. V Ý d ô ta c ã th Ó ®Þ nh ngh Ü a m é t l í p s è
ph ø c v í i c ¸ c ph Ð p to ¸ n c é ng, tr õ , nh © n, chia.
C ò ng gi è ng nh C, C++ c ã kh n ¨ ng chuy Ó n ®æ i ki Ó u. Kh « ng nh ÷ ng th Õ , C++
c ß n cho ph Ð p m ë r é ng s ù chuy Ó n ®æ i n µ y sang c ¸ c ki Ó u do ng ê i s ö d ô ng t ù ®Þ nh
ngh Ü a (c ¸ c l í p). V Ý d ô , ta c ã th Ó chuy Ó n ®æ i t õ ki Ó u chu È n int c ñ a C sang ki Ó u s è
ph ø c m µ ta ®Þ nh ngh Ü a c h ¼ ng h ¹ n.
C++ cho ph Ð p th ù c hi Ö n k Õ th õ a c ¸ c l í p ®· x © y d ù ng. T õ phi ª n b n 2.0 tr ë ® i,
C++ c ß n cho ph Ð p m é t l í p k Õ th õ a c ï ng m é t l ó c t õ nhi Ò u nhi Ò u l í p kh ¸ c nhau (g ä i
l µ s ù ® a k Õ th õ a).
Cu è i c ï ng C++ cung c Ê p nh ÷ ng thao t ¸ c v µ o ra m í i d ù a tr ª n c ¬ s ë kh ¸ i ni Ö m
lu å ng d ÷ li Ö u (flow). S ù u vi Ö t c ñ a c ¸ c thao t ¸ c n µ y ë ch ç :
*
S ö d ô ng ®¬ n gi n.
* K Ý ch th í c b é nh í ®î c r ó t g ä n.
* Kh n ¨ ng ¸ p d ô ng tr ª n c ¸ c ki Ó u do ng ê i s ö d ô ng ®Þ nh
ngh Ü a b » ng c ¸ ch s ö d ô ng c ¬ ch Õ ®Þ nh ngh Ü a ch å ng to ¸ n t ö .
L Ë p tr
×
nh h í ng ®è
i t
î ng
- 13 -
1.Ph ¬ ng ph ¸ p l Ë p tr × nh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.B µ i to ¸ n quan h Ö gia ®× nh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.L Ë p tr × nh h í ng ®è i t î ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1M é t s è kh ¸ i ni Ö m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2C ¸ c u ® i Ó m c ñ a LTH § T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3Nh ÷ ng ø ng d ô ng c ñ a LTH § T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.C ¸ c ng « n ng ÷ l Ë p tr × nh h í ng ®è i t î ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.Ng « n ng ÷ l Ë p tr × nh C++
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10

Preview text:

Lêi Giíi thiÖu Lêi Gi G íi thi h Öu
Vµo thuë khëi ®Çu sö dông m¸y tÝnh, c¸ch lËp tr×nh lµ lËp tr×nh tuÇn tù.
Kho¶ng nh÷ng n¨m 70-80 xu h­íng lËp tr×nh chñ yÕu lµ lËp tr×nh cã cÊu tróc. B­íc
sang nh÷ng n¨m 90, ph­¬ng ph¸p lËp tr×nh h­íng ®èi t­îng trë nªn phæ biÕn, ®­îc
nh÷ng ng­êi lµm tin häc quan t©m nghiªn cøu nhiÒu.
LËp tr×nh h­íng ®èi t­îng trë thµnh ph­¬ng ph¸p lËp tr×nh hiÖn ®¹i v× nã cã nh÷ng ­u ®iÓm nh­:
- Sù trõu t­îng ho¸: mçi ®èi t­îng trong ch­¬ng tr×nh lµ mét trõu xuÊt cña mét
®èi t­îng (vËt lý hay phi vËt lý) trong thùc tÕ cña bµi to¸n. §iÒu nµy lµm cho
ch­¬ng tr×nh gÉn gòi h¬n víi ng­êi dïng vµ dÔ thiÕt kÕ h¬n ®èi víi ng­êi lËp tr×nh.
- Sù ®ãng gãi: Mçi ®èi t­îng lµ mét sù ®ãng gãi c¶ ba mÆt: d÷ liÖu, tr¹ng th¸i
vµ thao t¸c, lµm cho ®èi t­îng lµ mét ®¬n nguyªn bÒn v÷ng cho qu¸ tr×nh ph©n tÝch,
thiÕt kÕ vµ lËp tr×nh. X©y dùng trªn nguyªn t¾c giÊu kÝn tèi ®a, c«ng khai tèi thiÓu,
®èi t­îng thÝch øng dÔ dµng víi viÖc söa lçi, b¶o tr× hay ph¸t triÓn.
- ViÖc sö dông l¹i: §èi t­îng lµ mét ®¬n vÞ “l¾p lÉn”, cã thÓ sö dông l¹i cho bµi to¸n kh¸c.
- Sù kÕ thõa ®­îc vËn dông cho c¸c ®èi t­îng lµm tiÕt kiÖm ®­îc m· nguån,
®ång thêi t¹o kh¶ n¨ng cho sù tiÕp nèi vµ më réng ch­¬ng tr×nh.
Ngµy nay ®· cã nhiÒu ng«n ng÷ lËp tr×nh hç trî cho ®èi t­îng:
- Cã nh÷ng ng«n ng÷ chØ míi dùa vµo ®èi t­îng (cã ®ãng gãi mµ kh«ng cã kÕ thõa), nh­ ADA (83).
- Cã nh÷ng ng«n ng÷ h­íng ®èi t­îng thuÇn khiÕt, chØ ®­îc phÐp sö dông ®èi
t­îng trong lËp tr×nh, nh­ SMALLTALK, JAVA...
- Cã nh÷ng ng«n ng÷ lai, cã thÓ lËp tr×nh h­íng ®èi t­îng mét c¸ch ®Çy ®ñ,
mµ còng cã thÓ lËp tr×nh dïng ®èi t­îng. Turbo PASCAL, C++ thuéc lo¹i nµy.
Ng«n ng÷ C tõ khi ra ®êi ®· sím kh¼ng ®Þnh ®­îc vÞ thÕ lµ c«ng cô chñ yÕu
trong c«ng nghÖ phÇn mÒm. C++ ph¸t triÓn C thµnh ng«n ng÷ h­íng ®èi t­îng
®· thõa kÕ ®­îc c¸c ®iÓm m¹nh cña C vµ thÝch øng víi xu h­íng lËp tr×nh hiÖn ®¹i.
Chän C++ ®Ó gi¶ng d¹y còng nh­ lµm c«ng cô ph¸t triÓn phÇn mÒm lµ hîp lý, v×
kh«ng nh÷ng nã m¹nh, mµ nã dÔ hiÓu cho nh÷ng ng­êi vèn quen víi lËp tr×nh
truyÒn thèng, nay ®i vµo lËp tr×nh h­íng ®èi t­îng. Nh­ vËy chñ ®Ò cña cuèn s¸ch
lµ hoµn toµn thÝch hîp víi nhu cÇu gi¶ng d¹y lËp tr×nh ë c¸c tr­êng ®¹i häc, còng
nh­ víi nhu cÇu cña nh÷ng lËp tr×nh viªn ®ang hµnh nghÒ.
Cuèn s¸ch gåm 6 ch­¬ng vµ 4 phô lôc
- Ch­¬ng 1: LËp tr×nh h­íng ®èi t­îng-ph­¬ng ph¸p gi¶i quyÕt bµi to¸n míi
- Ch­¬ng 2: Nh÷ng më réng cña C++
- Ch­¬ng 3: §èi t­îng vµ líp
- Ch­¬ng 4: §Þnh nghÜa to¸n tö trªn líp
- Ch­¬ng 5: Kü thuËt thõa kÕ - Ch­¬ng 6: Khu«n h×nh
- Phô lôc 1: C¸c kªnh xuÊt nhËp - Phô lôc 2: Xö lý lçi
- Phô lôc 3: Bµi to¸n quan hÖ gia ®×nh
- Phô lôc 4: M· ch­¬ng tr×nh bµi to¸n quan hÖ gia ®×nh. GS. NguyÔn V¨n Ba
Khoa CNTT, §HBK Hµ néi
Nh­ vËy cuèn s¸ch bao trïm ®ñ c¸c vÊn ®Ò cÇn ®Ò cËp vµ ®· ®­îc cÊu tróc kh¸
hîp lý. Mçi ch­¬ng ®Òu kÕt thóc bëi phÇn tãm t¾t vµ c¸c bµi tËp, thuËn tiÖn cho viÖc häc vµ thùc hµnh.
Néi dung c¸c phÇn ®· ®­îc tr×nh bµy dÔ hiÓu, chuÈn x¸c, cã nhiÒu thÝ dô minh ho¹.
Cuèn s¸ch cã thÓ dïng lµm:
- Gi¸o tr×nh gi¶ng d¹y vÒ lËp tr×nh h­íng ®èi t­îng ë c¸c tr­êng §¹i häc.
- S¸ch tham kh¶o vÒ C++ cho nh÷ng ng­êi lËp tr×nh chuyªn nghiÖp.
T«i cho r»ng quyÓn s¸ch lµ rÊt cã Ých vµ hy väng sÏ sím ®­îc xuÊt b¶n ®Ó
phôc vô b¹n ®äc. Xin tr©n träng giíi thiÖu víi b¹n ®äc cuèn s¸ch “LËp tr×nh h­íng
®èi t­îng víi C++”, mét sx¶n phÈm lao ®éng khoa häc nghiªm tóc cña tËp thÓ c¸n
bé gi¶ng d¹y khona C«ng nghÖ Th«ng tin, §¹i häc B¸ch khoa Hµ néi.
Hµ néi, ngµy 4 th¸ng 5 n¨m 1999 GS. S Ngu N y gu Ôn V¨n Ba Khoa h CN C T N T, §HBK B Hµ néi C
LËp tr×nh h­íng ®èi t­îng víi ++
Tr­êng §¹i häc B¸ch khoa Hµ néi Khoa C«ng nghÖ Th«ng tin --0--
Lª §¨ng H­ng, T¹ TuÊn Anh, NguyÔn H÷u §øc NguyÔn Thanh Thuû LËp tr t ×nh n h­í ­ ng n ®è ® i t­î ­ ng n ++ + víi C Hµ néi 1999
LËp tr×nh h­íng ®èi t­îng víi C++
T¸c gi¶: Lª §¨ng H­ng, T¹ TuÊn Anh, NguyÔn H÷u §øc, NguyÔn Thanh Thuû
Chñ biªn: NguyÔn Thanh Thuû Biªn tËp:
ChÞu tr¸ch nhiÖm xuÊt b¶n: GiÊy phÐp xuÊt b¶n sè: Tµi liÖu tham kh¶o Tµi li l Öu th t am h kh k ¶o
[1]. Claude Delannoy, Programmer en langage C++, EYROLLES.
[2]. Scott Robert Ladd, Turbo C++ Techniques and Applications, M&T Books.
[3]. H.M. Deitel & P.J. Deitel, C How to program. Lêi nãi ®Çu C¸c t¸c gi¶ Lêi nãi ®Ç ® u
Ng«n ng÷ C ®­îc xem lµ mét ng«n ng÷ lËp tr×nh v¹n n¨ng vµ ®­îc sö dông
réng r·i ®Ó gi¶i quyÕt c¸c bµi to¸n khoa häc kü thuËt: xö lý ¶nh, ®å ho¹, ghÐp nèi
m¸y tÝnh. Ng«n ng÷ C còng lµ mét c«ng cô m¹nh cho phÐp x©y dùng c¸c ch­¬ng
tr×nh hÖ thèng nh­ hÖ ®iÒu hµnh UNIX, c¸c ch­¬ng tr×nh dÞch vµ c¸c c«ng cô tiÖn Ých kh¸c.
§iÓm m¹nh ®¸ng chó ý cña ng«n ng÷ C chÝnh lµ sù mÒm dÎo vµ kh¶ n¨ng trao
chuyÓn cao gi÷a c¸c hÖ thèng tÝnh to¸n. Trªn c¬ së ng«n ng÷ C ng­êi ta ®· tiÕn
hµnh x©y dùng mét phiªn b¶n h­íng ®èi t­îng gäi lµ C++ nh»m thõa kÕ c¸c ®iÓm
m¹nh vèn cã cña C. ViÖc t×m hiÓu ng«n ng÷ C++ ®ang lµ mét xu thÕ ®­îc quan t©m bëi
c¸c nhµ lËp tr×nh nh»m ph¸t triÓn c¸c phÇn mÒm øng dông ë ViÖt nam.
HiÖn nay, trªn thÞ tr­êng ®· cã mét sè tµi liÖu tham kh¶o giíi thiÖu vÒ C++.
Tuy nhiªn, c¸c tµi liÖu nµy chØ míi dõng l¹i ë møc giíi thiÖu vµ m« t¶ c¸c khÝa c¹nh
có ph¸p cña ng«n ng÷. Trong cuèn s¸ch nµy, nh÷ng tr×nh bµy vÒ c¸c khÝa c¹nh lËp
tr×nh h­íng ®èi t­îng cã tÝnh s­ ph¹m cao, ®i tõ møc ®é dÔ ®Õn khã nh»m gióp
ng­êi ®äc cã thÓ lÜnh héi
c¸c kiÕn thøc c¬ b¶n kh«ng chØ lÖ thuéc vµo mét ng«n
ng÷ lËp tr×nh cô thÓ nh­ C++ ®· ®­îc quan t©m thÝch ®¸ng.
Trong ch­¬ng tr×nh gi¶ng d¹y cö nh©n, kü s­ chuyªn ngµnh C«ng nghÖ Th«ng
tin, ng«n ng÷ lËp tr×nh C++ ®­îc chän ®Ó minh ho¹ cho lËp tr×nh h­íng ®èi t­îng nhê c¸c ­u ®iÓm
trong kh¶ n¨ng biÓu diÔn d÷ liÖu vµ thÓ hiÖn c¸c khÝa c¹nh lËp
tr×nh. ViÖc n¾m b¾t c¸c khÝa c¹nh ®éc ®¸o cña ng«n ng÷ vµ lµm chñ c¸c yÕu tè c¬
b¶n khi lËp tr×nh trong ng«n ng÷ C++ sÏ lµ c¬ së ®Ó n©ng cao hiÓu biÕt vµ kü n¨ng
lËp tr×nh b»ng ng«n ng÷ JAVA, mét c«ng cô kh«ng thÓ thiÕu ®­îc trong viÖc ph¸t
triÓn c¸c øng dông trªn m¹ng.
Chóng t«i biªn so¹n tµi liÖu nµy víi hy väng r»ng nã sÏ rÊt bæ Ých vµ cÇn thiÕt
®èi víi c¸c sinh viªn cao ®¼ng vµ ®¹i häc kh«ng chØ trong chuyªn ngµnh C«ng nghÖ
Th«ng tin mµ c¶ c¸c ngµnh kü thuËt, c«ng nghÖ kh¸c nh­ §iÖn tö ViÔn Th«ng, Tù
®éng ho¸ ®iÒu khiÓn v.v...
Khi biªn so¹n, chóng t«i ®· cè g¾ng ®­a ra mét bè côc cña cuèn s¸ch sao cho
b¸m s¸t ®­îc c¸c néi dung c¬ b¶n xung quanh c¸c khÝa c¹nh có ph¸p cña ng«n ng÷
vµ nh÷ng kü n¨ng lËp tr×nh trªn ®ã. C¸c kiÕn thøc ®­îc tr×nh bµy c« ®äng nh»m
gióp ng­êi häc vµ tù häc dÔ tiÕp thu c¸c kiÕn thøc ®­îc truyÒn thô.
Trong qu¸ tr×nh biªn so¹n cuèn s¸ch, chóng t«i ®· nhËn ®­îc nhiÒu ý kiÕn
®ãng gãp quÝ b¸u cña GS. NguyÔn V¨n Ba, GS. Vò Lôc, GS §ç Xu©n L«i, Ths. §ç
V¨n Uy vµ c¸c thÇy c« trong khoa C«ng nghÖ Th«ng tin, tr­êng §¹i häc B¸ch khoa
Hµ néi. Chóng t«i xin ch©n thµnh c¸m ¬n sù gióp ®ì quÝ gi¸ ®ã. Nh©n dÞp nµy
chóng t«i còng xin bµy tá sù biÕt ¬n tíi GS NguyÔn Thóc H¶i vµ Ban chñ nhiÖm
khoa C«ng nghÖ Th«ng tin vµ Nhµ xuÊt b¶n Gi¸o dôc ®· t¹o ®iÒu kiÖn vËt chÊt vµ
tinh thÇn ®Ó cuèn s¸ch sím ra m¾t b¹n ®äc.
Tuy ®· hÕt søc cè g¾ng nh­ng chóng t«i nghÜ r»ng sÏ kh«ng tr¸nh khái nh÷ng
thiÕu sãt, rÊt mong nhËn ®­îc c¸c ý kiÕn ®ãng gãp ®Ó n©ng cao chÊt l­îng trong c¸c lÇn t¸i b¶n sau.
Hµ néi, ngµy 1 th¸ng 5 n¨m 1999 C¸c t¸c gi¶
LËp tr×nh h­íng ®èi t­îng
ph­¬ng ph¸p gi¶i quyÕt bµi to¸n míi Ch­¬ng 1 1.
Ph­¬ng ph¸p lËp tr×nh
lËp tr×nh tuyÕn tÝnh lËp tr×nh cÊu tróc
lËp tr×nh h­íng ®èi t­îng Ch­¬ng n 1 LËp tr t ×nh n h­í ­ ng n ®è ® i t­î ­ ng n ph­¬ ­ ng n ph¸p gi g ¶i qu q y u Õt bµi to t ¸n míi 1. Ph P ­¬ ­ ng n ph p ¸p lËp tr×nh n
Tõ nhiÒu n¨m nay chóng ta ®· nghe nhiÒu ®Õn thuËt ng÷ “LËp tr×nh h­íng ®èi
t­îng” (OOP - Object Oriented Programming). VËy thùc chÊt nã lµ g×? §Ó hiÓu
®­îc vÊn ®Ò nµy chóng ta b¾t ®Çu nh×n l¹i mét chót lÞch sö ph¸t triÓn c¸c ph­¬ng
ph¸p lËp tr×nh. Vµo nh÷ng ngµy ®Çu ph¸t triÓn cña m¸y tÝnh, khi c¸c phÇn mÒm cßn
rÊt ®¬n gi¶n chØ cì vµi chôc dßng lÖnh, ch­¬ng tr×nh ®­îc viÕt tuÇn tù víi c¸c c©u
lÖnh thùc hiÖn tõ ®Çu ®Õn cuèi. C¸ch viÕt ch­¬ng tr×nh nh­ thÕ nµy gäi lµ ph­¬ng ph¸p lËp tr t ×nh n tu t y u Õn tÝnh
n . Khoa häc m¸y tÝnh ngµy cµng ph¸t triÓn, c¸c phÇn mÒm
®ßi hái ngµy cµng phøc t¹p vµ lín h¬n rÊt nhiÒu. §Õn lóc nµy ph­¬ng ph¸p lËp tr×nh
tuyÕn tÝnh tá ra kÐm hiÖu qu¶ vµ cã nh÷ng tr­êng hîp ng­êi lËp tr×nh kh«ng thÓ
kiÓm so¸t ®­îc ch­¬ng tr×nh. ThÕ lµ ph­¬ng ph¸p lËp tr t ×nh n cÊu tr t óc (LTCT) ra ®êi.
Theo c¸ch tiÕp cËn nµy, ch­¬ng tr×nh ®­îc tæ chøc thµnh c¸c ch­¬ng tr×nh con.
Mçi ch­¬ng tr×nh con ®¶m nhËn xö lý mét c«ng viÖc nhá trong toµn bé hÖ thèng.
Mçi ch­¬ng tr×nh con nµy l¹i cã thÓ chia nhá thµnh c¸c ch­¬ng tr×nh con nhá h¬n.
Qu¸ tr×nh ph©n chia nh­ vËy tiÕp tôc diÔn ra cho ®Õn c¸c ch­¬ng tr×nh con nhá nhËn
®­îc ®ñ ®¬n gi¶n. Ng­êi ta gäi ®ã lµ qu¸ tr×nh lµm mÞn dÇn. C¸c ch­¬ng tr×nh con
t­¬ng ®èi ®éc lËp víi nhau, do ®ã cã thÓ ph©n c«ng cho tõng nhãm ®¶m nhËn viÕt
c¸c ch­¬ng tr×nh con kh¸c nhau. Ng«n ng÷ lËp tr×nh thÓ hiÖn râ nÐt nhÊt ph­¬ng
ph¸p lËp tr×nh cÊu tróc chÝnh lµ Pascal. Tuy nhiªn, khi sö dông ph­¬ng ph¸p lËp
tr×nh nµy vÉn cßn gÆp mét khã kh¨n lín lµ tæ chøc d÷ liÖu cña hÖ thèng nh­ thÕ nµo
trong m¸y tÝnh. Bëi v× theo quan ®iÓm cña LTCT th× Ch­¬ng tr×nh = CÊu tróc d÷
liÖu + Gi¶i thuËt
. §Ó lµm ®­îc viÖc nµy ®ßi hái ng­êi lËp tr×nh ph¶i cã kiÕn rÊt
v÷ng vÒ cÊu tróc d÷ liÖu. Mét khã kh¨n n÷a gÆp ph¶i lµ gi¶i thuËt cña ch­¬ng tr×nh
phô thuéc rÊt chÆt chÏ vµo cÊu tróc d÷ liÖu, do vËy chØ cÇn mét sù thay ®æi nhá ë
cÊu tróc d÷ liÖu còng cã thÓ lµm thay ®æi gi¶i thuËt vµ nh­ vËy ph¶i viÕt l¹i ch­¬ng
tr×nh. §iÒu nµy râ rµng kh«ng thÓ thÝch hîp khi ph¶i x©y dùng mét dù ¸n phÇn mÒm
rÊt lín. Mét ph­¬ng ph¸p lËp tr×nh míi ra ®êi ®Ó kh¾c phôc nh­îc ®iÓm nµy vµ ®ã
chÝnh lµ ph­¬ng ph¸p lËp tr t ×nh n h­íng n ®è ® i t­î ­ ng
n (LTH§T). §iÓm c¨n b¶n cña
ph­¬ng ph¸p nµy lµ thiÕt kÕ ch­¬ng tr×nh xoay quanh d÷ liÖu cña hÖ thèng. NghÜa
lµ lóc nµy 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 mét
sù thay ®æi nhá cña d÷ liÖu chØ ¶nh h­ëng ®Õn c¸c mét sè nhá c¸c hµm xö lý liªn
quan. Sù g¾n kÕt gi÷a d÷ liÖu vµ c¸c hµm xö lý trªn chóng t¹o ra ®èi t­îng. Mét ­u
®iÓm n÷a cã ë ph­¬ng ph¸p LTH§T lµ c¸ch tiÕp cËn bµi to¸n trë nªn gÇn gòi víi
thùc tÕ h¬n. §Ó hiÓu râ h¬n vÒ ph­¬ng ph¸p lËp tr×nh nµy, kh«ng g× tèt h¬n lµ
chóng ta ®i vµo mét bµi to¸n cô thÓ, ch¼ng h¹n bµi to¸n quan hÖ gia ®×nh. ë ®©y yªu -1-
Bµi to¸n quan hÖ gia ®×nh Mr. Th¾ng Ms. Nga Mr. Quang Ms. V©n Mr. TuÊn Ms. H»ng Mr. H­ng Miss. Trang Miss. Mai Ng«n ng÷ C++
cÇu lµm thÕ nµo ®Ó thÓ hiÖn ®­îc c¸c mèi quan hÖ gi÷a c¸c thµnh viªn trong mét
gia ®×nh trªn m¸y tÝnh vµ cã thÓ tr¶ lêi ®­îc c©u hái d¹ng kh¸ tæng qu¸t: “A vµ B cã
quan hÖ nh­ thÕ nµo trong gia ®×nh ?” víi A vµ B lµ hai c¸ thÓ bÊt kú. Chóng ta sÏ
ph©n tÝch xem c¸ch gi¶i quyÕt bµi to¸n nµy nh­ thÕ nµo. 2. Bµi to t ¸n qua u n a hÖ gia ®× ® nh n
Trong x· héi, mçi ng­êi ®Òu cã mét gia ®×nh, trong ®ã tån t¹i nhiÒu mèi quan
hÖ gia ®×nh kh¸ phøc t¹p nh­ «ng, bµ, cha, mÑ, c«, chó, b¸c, v.v. Th«ng th­êng, ®Ó
thÓ hiÖn c¸c mèi quan hÖ nµy ng­êi ta biÓu diÔn b»ng mét s¬ ®å c©y quan hÖ. D­íi
®©y lµ mét vÝ dô biÓu diÔn mét gia ®×nh ba thÕ hÖ b»ng h×nh 1.1. Mr M . Th T ¾ng n Ms M . Nga N Mr M . Qu Q an u g an Ms M . V©n Mr M . Tu T Ên Ms M . H»ng n Mr M . H­ng n Mi M s i s. Tr T an a g n Mi M s i s. Mai M H×nh 1.1
C©y quan hÖ trong mét gia ®×nh
§Ó gi¶i quyÕt bµi to¸n nµy theo ph­¬ng ph¸p LTCT, c«ng viÖc ®Çu tiªn lµ ph¶i
x©y dùng mét cÊu tróc d÷ liÖu thÓ hiÖn ®­îc c©y quan hÖ trªn. Tr«ng qua cã vÎ lµ
®¬n gi¶n nh­ng nÕu thö lµm xem sÏ thÊy kh«ng ®¬n gi¶n chót nµo, thËm chÝ cßn
khã. Bëi v× nã ®ßi hái ng­êi lËp tr×nh ph¶i rÊt thµnh th¹o sö dông con trá, ph¶i x©y
dùng ®­îc gi¶i thuËt cËp nhËt th«ng tin trªn c©y quan hÖ. C¸c gi¶i thuËt nµy t­¬ng
®èi phøc t¹p ®èi víi mét cÊu tróc d÷ liÖu nh­ trong bµi to¸n. Yªu cÇu cña bµi to¸n
lµ tr¶ lêi ®­îc c©u hái d¹ng nh­ “H­ng vµ Mai cã quan hÖ nh­ thÕ nµo ?”. C©u tr¶
lêi cña ch­¬ng tr×nh ph¶i lµ “H­ng lµ anh hä cña Mai”. §Ó cã thÓ thùc hiÖn ®­îc
nh­ vËy, râ rµng chóng ta ph¶i x©y dùng ®­îc gi¶i thuËt t×m ®­îc mèi quan hÖ gi÷a
hai nót trªn c©y quan hÖ. Mét vÊn ®Ò phøc t¹p vµ tÕ nhÞ h¬n lµ tªn gäi cho c¸c mèi
quan hÖ gia ®×nh ë ViÖt nam rÊt phong phó! Mét khã kh¨n lµ ph¶i vÐt c¹n hÕt c¸c
mèi quan hÖ cã thÓ cã trªn mét c©y quan hÖ. Mét khã kh¨n n÷a gÆp ph¶i lµ khi cÇn
ph¸t triÓn, ch­¬ng tr×nh ph¶i qu¶n lý ®­îc nhiÒu gia ®×nh cïng mét lóc vµ c¸c gia
®×nh nµy cã mèi quan hÖ th«ng gia víi nhau. H×nh 1.2 lµ s¬ ®å quan hÖ ®­îc ph¸t
triÓn tõ s¬ ®å vÝ dô trªn minh ho¹ cho vÊn ®Ò nµy. -2- Con ng­êi Con ng­êi Mr. Th¾ng Ms. Nga Mr. Thµnh Ms. Lan Mr. Quang Ms. V©n Mr. TuÊn Ms. H»ng Mr. H­ng Miss. Trang Miss. Mai
LËp tr×nh h­íng ®èi t­îng - - - - Mr M . Th T ¾ng n Ms M . Nga N Mr M . Th T µnh n Ms M . Lan L - - - - - - - - - - Mr M . Qu Q an u g an Ms M . V©n Mr M . Tu T Ên Ms M . H»ng n - - - - - - Mr M . H­ng n Mi M s i s. Tr T an a g n Mi M s i s. Mai M H×nh 1.2
Më réng quan hÖ gi÷a c¸c gia ®×nh
Mét c©u hái ®Æt ra: “LiÖu víi cÊu tróc d÷ liÖu cò cã ®¶m b¶o gi¶i quyÕt ®­îc
vÊn ®Ò nµy kh«ng ?”. Râ rµng c©u tr¶ lêi lµ kh«ng. S¬ ®å quan hÖ trªn h×nh vÏ sÏ
ph¶i m« t¶ quan hÖ cña mét gia ®×nh. ChØ víi chót Ýt sù thay ®æi vÒ cÊu tróc d÷ liÖu
còng dÉn ®Õn mét lo¹t vÊn ®Ò ®ßi hái ph¶i viÕt l¹i c¸c gi¶i thuËt cña ch­¬ng tr×nh.
Ph­¬ng ph¸p lËp tr×nh míi h­íng ®èi t­îng cho phÐp chóng ta kh¾c phôc ®­îc c¸c
vÊn ®Ò ®· nªu ra. Trong suèt c¸c tr×nh bµy cña cuèn s¸ch nµy sÏ cè g¾ng nªu bËt
®­îc c¸ch gi¶i quyÕt vÊn ®Ò nhê LTH§T.
Theo c¸ch tiÕp cËn LTH§T, bµi to¸n quan hÖ gia ®×nh ®­îc xem xÐt d­íi gãc
®é qu¶n lý tËp c¸c ®èi t­îng Con C ng
n ­êi. §Ó biÕt mèi quan hÖ gia ®×nh cña mçi c¸
thÓ, cÇn thÓ hiÖn mét sè quan hÖ c¬ b¶n nh­ cha, mÑ, anh em, con c¸i, vî chång cña
c¸ thÓ ®ã. Nh­ vËy, mçi ®èi t­îng con ng­êi cña bµi to¸n cã c¸c thuéc tÝnh riªng,
nãi lªn r»ng cha mÑ, anh em, v.v.. cña hä lµ ai. Ngoµi ra còng cÇn cã mét thuéc tÝnh
n÷a cho biÕt tªn c¸ thÓ lµ g×. Cã thÓ m« t¶ mét líp c¸c ®èi t­îng con ng­êi nh­ h×nh 1.3. Con C ng n ­ê ­ i Tªn ? Cha ? MÑ ? Anh em ? Con c¸i ? Vî / Chång ? H×nh 1.3
M« t¶ mét líp c¸c ®èi t­îng con ng­êi
NÕu chØ cã nh­ vËy th× ch¼ng kh¸c g× mét cÊu tróc hay b¶n ghi trong cÊu tróc
d÷ diÖu ®­îc sö dông ë ph­¬ng ph¸p LTCT. VÊn ®Ò ë ®©y lµ ph­¬ng ph¸p LTH§T
xem c¸c mèi quan hÖ trong gia ®×nh ®­îc h×nh thµnh mét c¸ch tù nhiªn do c¸c sù
kiÖn cô thÓ trong cuéc sèng t¹o nªn. VÝ dô, khi ng­êi phô n÷ sinh con, ®øa con c« -3- §èi t­îng, Líp Con ng­êi Mr. Th¾ng Ms. Mai Miss. Nga Mr. TuÊn Ng«n ng÷ C++
ta sinh ra sÏ cã mÑ lµ c« ta vµ cha lµ chång c« ta, ®ång thêi anh chång ph¶i ®­îc
cËp nhËt ®Ó cã thªm ®øa con nµy. Nh÷ng ®øa con tr­íc cña c« ta sÏ cã thªm ®øa em
nµy vµ ®øa bÐ cã thªm nh÷ng ng­êi anh hoÆc ng­êi chÞ ®ã. DÔ dµng thÊy r»ng cã
hai sù kiÖn chÝnh t¸c ®éng ®Õn mèi quan hÖ gia ®×nh lµ sù sinh con cña ng­êi phô
n÷ vµ h«n nh©n gi÷a hai c¸ thÓ kh¸c giíi trong x· héi. C¸c sù kiÖn nµy g¾n liÒn víi
tõng con ng­êi trong bµi to¸n. §iÒu nµy cã nghÜa lµ khi nãi ®Õn mét sù kiÖn nµo th×
ph¶i chØ ra nã ®­îc ph¸t sinh bëi ng­êi nµo. VÝ dô, khi nãi sù kiÖn sinh con th× ph¶i
biÕt ng­êi nµo sinh. Khi mét sù kiÖn cña mét con ng­êi nµo ®ã x¶y ra (vÝ dô nh­
sinh con) th× c¸c thuéc tÝnh cña chÝnh anh ta sÏ bÞ thay ®æi, ®ång thêi thuéc tÝnh cña
mét sè ®èi t­îng liªn quan còng cã thÓ thay ®æi theo. Qu¸ tr×nh ®ãng gãi gi÷a c¸c
sù kiÖn vµ thuéc tÝnh sÏ t¹o ra §è § i t­î ­ ng, n
kh¸i niÖm c¬ b¶n cña ph­¬ng ph¸p
LTH§T. Mét m« t¶ chung cho c¸c ®èi t­îng con ng­êi cña bµi to¸n ®­îc gäi lµ
mét Líp. H×nh 1.4 minh ho¹ mét líp Con ng­êi cã thªm c¸c sù kiÖn cña bµi to¸n. Con C ng n ­ê ­ i Tªn ? Cha ? MÑ ? Anh em ? Con c¸i ? Vî / Chång ? Sinh con C­íi H×nh 1.4
C¸c sù kiÖn bæ sung g¾n víi con ng­êi.
Sau khi ®· g¾n kÕt c¸c sù kiÖn vµo ®èi t­îng nh­ trªn, vÊn ®Ò lµ t¹o mét s¬ ®å
quan hÖ gia ®×nh nh­ thÕ nµo. D­íi ®©y lµ mét vÝ dô minh ho¹ viÖc t¹o ra mét quan
hÖ gia ®×nh dùa trªn c¸c sù kiÖn cuéc sèng. Gi¶ thiÕt lµ ®· cã hai ®èi t­îng lµ «ng Th¾ng vµ bµ Mai. Mr M . Th T ¾ng n Ms M . Mai M Mi M s i s. Nga N Mr M . Tu T Ên -4- Con ng­êi
LËp tr×nh h­íng ®èi t­îng
C¸c sù kiÖn ®Ó t¹o ra c©y quan hÖ trªn cã thÓ viÕt theo trËt tù nh­ sau: Th¾ng.C­íi (Mai) Mai.Sinh con (g¸i, Nga) Mai.Sinh con (trai,TuÊn)
§èi t­îng t¹o sù kiÖn . Sù kiÖn ( th«ng sè kÌm theo sù kiÖn )
C¸c sù kiÖn viÕt theo có ph¸p:
Nh­ vËy c¸c b¹n ®· thÊy r»ng chóng ta kh«ng cÇn ph¶i quan t©m ®Õn c¸ch t¹o
mét cÊu tróc c©y quan hÖ nh­ thÕ nµo bªn trong d÷ liÖu cña ch­¬ng tr×nh mµ vÉn cã
thÓ cung cÊp d÷ liÖu bµi to¸n cho ch­¬ng tr×nh th«ng qua c¸c sù kiÖn nh­ trªn.
Chóng ta quay l¹i vÊn ®Ò chÝnh cña bµi to¸n lµ tr¶ lêi c¸c c©u hái vÒ mèi quan hÖ
gia ®×nh nh­ thÕ nµo khi tiÕp cËn bµi to¸n theo ph­¬ng ph¸p nµy. §Ó tr¶ lêi ®­îc
c©u hái tæng qu¸t “X vµ Y cã quan hÖ gia ®×nh nh­ thÕ nµo ?” ta cÇn ph¶i tr¶ lêi c¸c
c©u hái nhá nh­ “X cã ph¶i lµ anh cña Y kh«ng ?”, “X cã ph¶i lµ «ng néi cña Y
kh«ng ?”, v.v.. C©u hái cã thÓ nh×n tõ gãc ®é ®èi t­îng X nh­ : “§èi t­îng cã ph¶i
lµ anh cña Y kh«ng ?”, “cã ph¶i lµ «ng néi cña Y kh«ng ?”, v.v.. Nh­ vËy c©u hái
lóc nµy ®· giao vÒ cho ®èi t­îng ®Ó tr¶ lêi. C¸c ®èi t­îng lóc nµy cÇn ph¶i cã c¸c
ph­¬ng thøc ®Ó tr¶ lêi c¸c c©u hái nh­ vËy. Vµ b©y giê mét líp ®èi t­îng Con
ng­êi ®­îc minh ho¹ nh­ h×nh 1.5. Con C ng n ­ê ­ i Tªn ? Cha ? MÑ ? Anh em ? Con c¸i ? Vî / Chång ? Sinh con C­íi Lµ anh Lµ «ng néi ....... H×nh 1.5
Thªm c¸c ph­¬ng thøc tr¶ lêi c©u hái
Ta xem xÐt c¸c ®èi t­îng tr¶ lêi c¸c c©u hái nh­ thÕ nµo? Ch¼ng h¹n X tr¶ lêi
c©u hái “§èi t­îng cã ph¶i lµ anh cña Y kh«ng ?” hoµn toµn ®¬n gi¶n. Nã chØ cÇn
kiÓm tra xem Y cã ph¶i lµ anh em mµ trong thuéc tÝnh cña nã l­u gi÷ kh«ng. Hoµn -5- 3.
LËp tr×nh h­íng ®èi t­îng §èi t­îng A §èi t­îng B §èi t­îng C Ng«n ng÷ C++
toµn t­¬ng tù ®èi víi c¸c c©u hái quan hÖ gÇn nh­ lµ em, lµ chÞ, lµ bè, lµ mÑ,... Cßn
c©u hái nh­ “§èi t­îng cã ph¶i lµ «ng néi cña Y kh«ng ?” phøc t¹p h¬n chót Ýt. §Ó
tr¶ lêi ®­îc c¸c c©u hái cã quan hÖ xa nh­ thÕ ta ph¶i dùa vµo kÕt qu¶ tr¶ lêi cña
c¸c c©u hái vÒ c¸c quan hÖ gÇn gòi h¬n. §Ó biÕt ®­îc X ®óng lµ «ng néi cña Y th×
ph¶i chØ ra mét ng­êi Z nµo ®ã mµ X lµ bè cña Z vµ Z lµ bè cña Y. NÕu kh«ng chØ
ra ®­îc Z th× X kh«ng ph¶i lµ «ng néi cña Y. ViÖc t×m kiÕm Z hoµn toµn ®¬n gi¶n
bëi v× ch­¬ng tr×nh qu¶n lý tËp c¸c ®èi t­îng con ng­êi. H·y t×m Z trong tËp ®èi
t­îng Con ng­êi. Cã thÓ thÊy c©u hái ban ®Çu ®· ®­îc ph©n chia thµnh hai c©u hái
®¬n gi¶n víi chóng mµ ®· cã c¸ch tr¶ lêi. Tãm l¹i, c¸c vÊn ®Ò cña bµi to¸n ®· ®­îc
gi¶i quyÕt khi tiÕp cËn theo ph­¬ng ph¸p LTH§T. Mét lîi ®iÓm cã thÓ thÊy ngay lµ
bµi to¸n ®­îc ph©n tÝch rÊt gÇn víi thùc tÕ vµ tù nhiªn.
Trªn ®©y míi chØ lµ sù ph©n tÝch s¬ khai bµi to¸n dùa theo ph­¬ng ph¸p
LTH§T. §Ó lµm hoµn chØnh ®­îc bµi to¸n cßn cÇn mét sè kÜ thuËt cña LTH§T nh­
tÝnh kÕ thõa, tÝnh ®a h×nh, ... Chóng t«i hy väng r»ng qua sù ph©n tÝch mét bµi to¸n
nhá trªn ®· chøng tá ®­îc lîi Ých cña ph­¬ng ph¸p LTH§T. Trong môc tiÕp theo
chóng t«i sÏ tãm t¾t vµ ®­a ra tæng quan s¬ bé vÒ LTH§T. 3. LËp tr×nh n h­í ­ ng n ®è ® i t­î ­ ng n
LËp tr×nh h­íng ®èi t­îng ®Æt träng t©m vµo ®èi t­îng, yÕu tè quan träng
trong qu¸ tr×nh ph¸t triÓn ch­¬ng tr×nh vµ kh«ng cho phÐp d÷ liÖu biÕn ®éng tù do
trong hÖ thèng. D÷ liÖu ®­îc g¾n chÆt víi c¸c hµm thµnh c¸c vïng riªng mµ chØ cã
c¸c hµm ®ã t¸c ®éng lªn vµ cÊm c¸c hµm bªn ngoµi truy nhËp tíi mét c¸ch tuú tiÖn.
LTH§T cho phÐp chóng ta ph©n tÝch bµi to¸n thµnh 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 c¸c hµm xung quanh c¸c ®èi t­îng ®ã.
C¸c ®èi t­îng cã thÓ t¸c ®éng, trao ®æi th«ng tin víi nhau th«ng qua c¬ chÕ th«ng
b¸o (message). Tæ chøc mét ch­¬ng tr×nh h­íng ®èi t­îng cã thÓ m« t¶ nh­ trong h×nh 1.6. §è § i t­î ­ ng n A §è § i t­î ­ ng n B message D÷ liÖu D÷ liÖu Hµm Hµm §è § i t­î ­ ng n C D÷ liÖu Hµm H×nh 1.6
C¸c ®èi t­îng trao ®æi qua th«ng b¸o
LTH§T cã c¸c ®Æc tÝnh chñ yÕu sau:
1. TËp trung vµo d÷ liÖu thay cho c¸c hµm -6-
§èi t­îng = D÷ liÖu + Ph­¬ng thøc 3.1 Mét sè kh¸i niÖm
§èi t­îng (object) Líp (class)
Nguyªn t¾c ®ãng gãi d÷ liÖu
LËp tr×nh h­íng ®èi t­îng
2. Ch­¬ng tr×nh ®­îc chia thµnh c¸c ®èi t­îng.
3. C¸c cÊu tróc d÷ liÖu ®­îc thiÕt kÕ sao cho ®Æc t¶ ®­îc ®èi t­îng.
4. C¸c hµm thao t¸c trªn c¸c vïng d÷ liÖu cña ®èi t­îng ®­îc g¾n víi cÊu tróc d÷ liÖu ®ã.
5. D÷ liÖu ®­îc ®ãng gãi l¹i, ®­îc che giÊu vµ kh«ng cho phÐp c¸c hµm ngo¹i lai truy nhËp tù do.
6. C¸c ®èi t­îng t¸c ®éng vµ trao ®æi th«ng tin víi nhau qua c¸c hµm
7. Cã thÓ dÔ dµng bæ sung d÷ liÖu vµ c¸c hµm míi 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 tõ d­íi lªn (bottom-up).
Sau ®©y lµ mét sè kh¸i niÖm ®­îc sö dông trong LTH§T. 3.1 3. Mét sè kh k ¸i ni n Öm §è § i t­î ­ ng n (obj ( e obj ct) t
§èi t­îng lµ sù kÕt hîp gi÷a d÷ liÖu vµ thñ tôc (hay cßn gäi lµ c¸c ph­¬ng thøc
- method) thao t¸c trªn d÷ liÖu ®ã. Cã thÓ ®­a ra c«ng thøc ph¶n ¸nh b¶n chÊt kü thuËt cña LTH§T nh­ sau: §è § i t­î ­ ng n = D÷ liÖu + Ph P ­¬ng n th t øc Líp (c ( las l s)
Líp lµ mét kh¸i niÖm míi trong LTH§T so víi c¸c kü thuËt lËp tr×nh kh¸c. §ã
lµ mét tËp c¸c ®èi t­îng cã cÊu tróc d÷ liÖu vµ c¸c ph­¬ng thøc gièng nhau (hay nãi
c¸ch kh¸c lµ mét tËp c¸c ®èi t­îng cïng lo¹i). Nh­ vËy khi cã mét líp th× chóng ta
sÏ biÕt ®­îc mét m« t¶ cÊu tróc d÷ liÖu vµ ph­¬ng thøc cña c¸c ®èi t­îng thuéc líp
®ã. Mçi ®èi t­îng sÏ lµ mét thÓ hiÖn cô thÓ (instance) cña líp ®ã. Trong lËp tr×nh,
chóng ta cã thÓ coi mét líp nh­ lµ mét kiÓu, cßn c¸c ®èi t­îng sÏ lµ c¸c biÕn cã kiÓu cña líp. Ngu N y
gu ªn t¾c ®ãng n gãi d÷ li l Öu
Trong LTCT ta ®· thÊy lµ c¸c hµm hay thñ tôc ®­îc sö dông mµ kh«ng cÇn
biÕt ®Õn néi dung cô thÓ cña nã. Ng­êi sö dông chØ cÇn biÕt chøc n¨ng cña hµm
còng nh­ c¸c tham sè cÇn truyÒn vµo ®Ó gäi hµm ch¹y mµ kh«ng cÇn quan t©m ®Õn
nh÷ng lÖnh cô thÓ bªn trong nã. Ng­êi ta gäi ®ã lµ sù ®ãng gãi vÒ chøc n¨ng.
Trong LTH§T, kh«ng nh÷ng c¸c chøc n¨ng ®­îc ®ãng gãi mµ c¶ d÷ liÖu còng
nh­ vËy. Víi mçi ®èi t­îng ng­êi ta kh«ng thÓ truy nhËp trùc tiÕp vµo c¸c thµnh
phÇn d÷ liÖu c¶u nã mµ ph¶i th«ng qua c¸c thµnh phÇn chøc n¨ng (c¸c ph­¬ng thøc) ®Ó lµm viÖc ®ã.
Chóng ta sÏ thÊy sù ®ãng gãi thùc sù vÒ d÷ liÖu chØ cã trong mét ng«n ng÷
LTH§T “thuÇn khiÕt” (pure) theo nghÜa c¸c ng«n ng÷ ®­îc thiÕt kÕ ngay tõ ®Çu chØ -7-
TÝnh kÕ thõa (inheritance)
TÝnh ®a h×nh (polymorphime) 3.2
C¸c ­u ®iÓm cña LTH§T Ng«n ng÷ C++
cho LTH§T. Cßn ®èi víi c¸c ng«n ng÷ “lai” (hybrid) ®­îc x©y dùng trªn c¸c ng«n
ng÷ kh¸c ban ®Çu ch­a ph¶i lµ H§T nh­ C++ ®­îc nãi ®Õn trong cuèn s¸ch nµy,
vÉn cã nh÷ng ngo¹i lÖ nhÊt ®Þnh vi ph¹m nguyªn t¾c ®ãng gãi d÷ liÖu. TÝnh n kÕ th t õa (i ( nh n e h r e it i an t c an e)
Mét kh¸i niÖm quan träng cña LTH§T lµ sù kÕ thõa. Sù kÕ thõa cho phÐp
chóng ta ®Þnh nghÜa mét líp míi trªn c¬ së c¸c líp ®· tån t¹i, tÊt nhiªn cã bæ sung
nh÷ng ph­¬ng thøc hay c¸c thµnh phÇn d÷ liÖu míi. Kh¶ n¨ng kÕ thõa cho phÐp
chóng ta sö dông l¹i mét c¸ch dÔ dµng c¸c module ch­¬ng tr×nh mµ kh«ng cÇn mét
thay ®æi c¸c module ®ã. Râ rµng ®©y lµ mét ®iÓm m¹nh cña LTH§T so víi LTCT. TÝnh n ®a h×nh n (pol p y ol mor m phi ph m i e m )
TÝnh ®a h×nh xuÊt hiÖn khi cã kh¸i niÖm kÕ thõa. Gi¶ sö chóng ta cã mét kÕ
thõa líp h×nh tø gi¸c vµ líp h×nh tam gi¸c kÕ thõa tõ líp h×nh ®a gi¸c (h×nh tam gi¸c
vµ tø gi¸c sÏ cã ®Çy ®ñ c¸c thuéc tÝnh vµ tÝnh chÊt cña mét h×nh ®a gi¸c). Lóc nµy
mét ®èi t­îng thuéc líp h×nh tam gi¸c hay tø gi¸c ®Òu cã thÓ hiÓu r»ng nã lµ mét
h×nh ®a gi¸c. MÆt kh¸c víi mçi ®a gi¸c ta cã thÓ tÝnh diÖn tÝch cña nã. Nh­ vËy lµm
thÕ nµo mµ mét ®a gi¸c cã thÓ sö dông ®óng c«ng thøc ®Ó tÝnh diÖn tÝch phï hîp víi
nã lµ h×nh tam gi¸c hay tø gi¸c. Ta gäi ®ã lµ tÝnh ®a h×nh. 3.2 3. C¸c ­u ®iÓm cña LT L H T §T
LTH§T ®em l¹i mét sè lîi thÕ cho ng­êi thiÕt kÕ lÉn ng­êi lËp tr×nh. C¸ch tiÕp
cËn h­íng ®èi t­îng gi¶i quyÕt ®­îc nhiÒu vÊn ®Ò tån t¹i trong qu¸ tr×nh ph¸t triÓn
phÇn mÒm vµ t¹o ra ®­îc nh÷ng phÇn mÒm cã ®é phøc t¹p vµ chÊt l­îng cao.
Ph­¬ng ph¸p nµy më ra mét triÓn väng to lín cho ng­êi lËp tr×nh. Nh÷ng ­u ®iÓm chÝnh cña LTH§T lµ:
1. Th«ng qua nguyªn lý kÕ thõa, chóng ta cã thÓ lo¹i bá ®­îc nh÷ng ®o¹n
ch­¬ng tr×nh lÆp l¹i trong qu¸ tr×nh m« t¶ c¸c líp vµ cã thÓ më réng kh¶
n¨ng sö dông cña c¸c líp ®· x©y dùng mµ kh«ng cÇn ph¶i viÕt l¹i.
2. Ch­¬ng tr×nh ®­îc x©y dùng tõ nh÷ng ®¬n thÓ (®èi t­îng) trao ®æi víi
nhau nªn viÖc thiÕt kÕ vµ lËp tr×nh sÏ ®­îc thùc hiÖn theo quy tr×nh nhÊt
®Þnh chø kh«ng ph¶i dùa vµo kinh nghiÖm vµ kü thuËt nh­ tr­íc n÷a. §iÒu
nµy ®¶m b¶o rót ng¾n ®­îc thêi gian x©y dùng hÖ thèng vµ t¨ng n¨ng suÊt lao ®éng.
3. Nguyªn lý ®ãng gãi hay che giÊu th«ng tin gióp ng­êi lËp tr×nh t¹o ra ®­îc
nh÷ng ch­¬ng tr×nh an toµn kh«ng bÞ thay ®æi bëi nh÷ng ®o¹n ch­¬ng tr×nh kh¸c.
4. Cã thÓ x©y dùng ®­îc ¸nh x¹ c¸c ®èi t­îng cña bµi to¸n vµo ®èi t­îng ch­¬ng tr×nh.
5. C¸ch tiÕp cËn thiÕt kÕ ®Æt träng t©m vµo d÷ liÖu, gióp chóng ta x©y dùng
®­îc m« h×nh chi tiÕt vµ dÔ dµng cµi ®Æt h¬n. -8- 4.
C¸c ng«n ng÷ lËp tr×nh h­íng ®èi t­îng 3.3
Nh÷ng øng dông cña LTH§T
LËp tr×nh h­íng ®èi t­îng
6. C¸c hÖ thèng h­íng ®èi t­îng dÔ më réng, n©ng cÊp thµnh nh÷ng hÖ lín h¬n.
7. Kü thuËt truyÒn th«ng b¸o trong viÖc trao ®æi th«ng tin gi÷a c¸c ®èi t­îng
lµm cho viÖc m« t¶ giao diÖn víi c¸c hÖ thèng bªn ngoµi trë nªn ®¬n gi¶n h¬n.
8. Cã thÓ qu¶n lý ®­îc ®é phøc t¹p cña nh÷ng s¶n phÈm phÇn mÒm. 3.3 3. Nh N ÷ng n øng n dông n cña LT L H T §T
LTH§T lµ mét trong nh÷ng thuËt ng÷ ®­îc nh¾c ®Õn nhiÒu nhÊt hiÖn nay
trong c«ng nghÖ phÇn mÒm vµ nã ®­îc øng dông ®Ó ph¸t triÓn phÇn mÒm trong
nhiÒu lÜnh vùc kh¸c nhau. Trong sè ®ã, øng dông quan träng vµ næi tiÕng nhÊt hiÖn
nay lµ thiÕt kÕ giao diÖn víi ng­êi sö dông, kiÓu nh­ Windows. C¸c hÖ th«ng tin
qu¶n lý trong thùc tÕ th­êng rÊt phøc t¹p, chøa nhiÒu ®èi t­îng víi c¸c thuéc tÝnh
vµ hµm phøc t¹p. §Ó gi¶i quyÕt nh÷ng hÖ th«ng tin phøc t¹p nh­ thÕ, LTH§T tá ra
rÊt hiÖu qu¶. C¸c lÜnh vùc øng dông phï hîp víi kü thuËt LTH§T cã thÓ liÖt kª nh­ d­íi ®©y:
*C¸c hÖ thèng lµm viÖc theo thêi gian thùc.
*C¸c hÖ m« h×nh ho¸ hoÆc m« pháng c¸c qu¸ tr×nh.
*C¸c hÖ c¬ së d÷ liÖu h­íng ®èi t­îng.
*C¸c hÖ siªu v¨n b¶n (hypertext), ®a ph­¬ng tiÖn (multimedia).
*C¸c hÖ thèng trÝ tuÖ nh©n t¹o vµ c¸c hÖ chuyªn gia.
*C¸c hÖ thèng song song vµ m¹ng n¬-ron.
*C¸c hÖ tù ®éng ho¸ v¨n phßng hoÆc trî gióp quyÕt ®Þnh. *C¸c hÖ CAD/CAM.
Víi nhiÒu ®Æc tÝnh phong phó cña LTH§T nãi riªng, cña ph­¬ng ph¸p ph©n
tÝch thiÕt kÕ vµ ph¸t triÓn h­íng ®èi t­îng nãi chung chóng ta hy väng c«ng nghiÖp
phÇn mÒm sÏ cã nh÷ng c¶i tiÕn nh¶y vät kh«ng nh÷ng vÒ chÊt l­îng, mµ cßn gia
t¨ng nhanh vÒ sè l­îng trong t­¬ng lai. 4. C¸c ng n «n ng n ÷ lËp tr×nh n h­í ­ ng n ®è ® i t­î ­ ng n
LTH§T kh«ng ph¶i lµ ®Æc quyÒn cña mét ng«n ng÷ ®Æc biÖt nµo. Còng gièng
nh­ kü thuËt lËp tr×nh cã cÊu tróc, c¸c kh¸i niÖm trong LTH§T ®­îc thÓ hiÖn trong
nhiÒu ng«n ng÷ lËp tr×nh kh¸c nhau. Nh÷ng ng«n ng÷ cung cÊp ®­îc nh÷ng kh¶
n¨ng LTH§T ®­îc gäi lµ ng«n ng÷ lËp tr×nh h­íng ®èi t­îng. Tuy vÉn cã nh÷ng
ng«n ng÷ chØ cung cÊp kh¶ n¨ng t¹o líp vµ ®èi t­îng mµ kh«ng cho phÐp kÕ thõa,
do ®ã h¹n chÕ kh¶ n¨ng LTH§T. H×nh 1.7 cho chóng ta mét c¸i nh×n tæng quan vÒ
sù ph¸t triÓn c¸c ng«n ng÷ LTH§T. -9- 5.
Ng«n ng÷ lËp tr×nh C++ Ng«n ng÷ C++ SIMULA (66) SMALLTALK (71) SMALLTALK (80) ADA (83) C++ (86) EIFFEL (90) ADA (95) JAVA (95)
H×nh 1.7 Sù ph¸t triÓn cña c¸c ng«n ng÷ LTH§T
C¸c ng«n ng÷ SIMULA, SMALLTALK, JAVA thuéc hä ng«n ng÷ LTH§T
thuÇn khiÕt, nghÜa lµ nã kh«ng cho phÐp ph¸t triÓn c¸c ch­¬ng tr×nh cÊu tróc trªn
c¸c ng«n ng÷ lo¹i nµy. Cßn ng«n ng÷ C++ thuéc lo¹i ng«n ng÷ “lai” bëi v× nã ®­îc
ph¸t triÓn tõ ng«n ng÷ C. Do ®ã trªn C++ vÉn cã thÓ sö dông tÝnh cÊu tróc vµ ®èi
t­îng cña ch­¬ng tr×nh. §iÒu nµy tá ra rÊt phï hîp khi chóng ta míi b¾t ®Çu häc
mét ng«n ng÷ lËp tr×nh. §ã chÝnh lµ lý do mµ chóng t«i sö dông ng«n ng÷ C++ ®Ó
giíi thiÖu ph­¬ng ph¸p LTH§T trong cuèn s¸ch nµy. Mét lý do kh¸c n÷a lµ C++ sö
dông có ph¸p cña ng«n ng÷ C lµ ng«n ng÷ rÊt th«ng dông trong lËp tr×nh chuyªn nghiÖp. 5. Ng N «n ng n ÷ lËp tr×nh n C+ C + +
Vµo n¨m 1983, gi¸o s­ Bjarne Stroustrap b¾t ®Çu nghiªn cøu vµ ph¸t triÓn viÖc
cµi ®Æt kh¶ n¨ng LTH§T vµo ng«n ng÷ C t¹o ra mét ng«n ng÷ míi gäi lµ C++. Tªn
gäi nµy cã thÓ ph©n tÝch ý nghÜa r»ng nã lµ ng«n ng÷ C mµ cã hai ®Æc ®iÓm míi
t­¬ng øng víi hai dÊu céng. §Æc ®iÓm thø nhÊt lµ mét sè kh¶ n¨ng më réng so víi
C nh­ tham chiÕu, chång hµm, tham sè mÆc ®Þnh... §Æc ®iÓm thø hai chÝnh lµ kh¶
n¨ng LTH§T. HiÖn nay C++ ch­a ph¶i lµ mét ng«n ng÷ hoµn toµn æn ®Þnh. KÓ tõ
khi phiªn b¶n ®Çu tiªn ra ®êi vµo n¨m 1986 ®· cã rÊt nhiÒu thay ®æi trong c¸c phiªn
b¶n C++ kh¸c nhau: b¶n 1.1 ra ®êi vµo n¨m 1986, 2.0 vµo n¨m 1989 vµ 3.0 vµo
n¨m 1991. Phiªn b¶n 3.0 nµy ®­îc sö dông ®Ó lµm c¬ së cho viÖc ®Þnh nghÜa mét
ng«n ng÷ C++ chuÈn (kiÓu nh­ Ansi C). -10-
C¸c ®Æc ®iÓm më réng trong C++ LTH§T trong C++
LËp tr×nh h­íng ®èi t­îng
Trªn thùc tÕ hiÖn nay tÊt c¶ c¸c ch­¬ng tr×nh dÞch C++ ®Òu t­¬ng thÝch víi
phiªn b¶n 3.0. V× vËy C++ hÇu nh­ kh«ng g©y bÊt kú mét khã kh¨n nµo khi chuyÓn
®æi tõ mét m«i tr­êng nµy sang m«i tr­êng kh¸c, nh­ chóng ta ®· biÕt C++ nh­ lµ
mét sù bæ sung kh¶ n¨ng LTH§T vµo ng«n ng÷ C. SÏ cã nhiÒu ng­êi nghÜ r»ng
ng«n ng÷ C nãi ë ®©y lµ C theo chuÈn ANSI. Thùc ra kh«ng ph¶i hoµn toµn nh­ vËy.
Tªn thùc tÕ vÉn tån t¹i mét vµi ®iÓm kh«ng t­¬ng thÝch gi÷a ANSI C vµ C++.
MÆt kh¸c còng cÇn thÊy r»ng nh÷ng më réng cã trong C++ so víi Ansi C
kh«ng chØ lµ ®Ó phôc vô cho môc ®Ých t¹o cho ng«n ng÷ kh¶ n¨ng LTH§T. Cã
nh÷ng thay ®æi chØ víi môc ®Ých ®¬n thuÇn lµ t¨ng søc m¹nh cho ng«n ng÷ C hiÖn thêi.
Ngoµi ra cã mét vµi thay ®æi nhá ë C++ so víi ANSI C nh­ sau: *
§Þnh nghÜa c¸c hµm: khai b¸o, truyÒn tham sè vµ gi¸ trÞ tr¶ l¹i. *
Sù t­¬ng thÝch gi÷a c¸c con trá. *
TÝnh linh ho¹t cña c¸c h»ng (const).
C¸c ®Æc ®iÓm më réng n tr t ong on C+ C + +
Nh­ ®· ®Ò cËp ë trªn C++ chøa c¶ nh÷ng më réng so víi C mµ kh«ng liªn
quan ®Õn kü thuËt h­íng ®èi t­îng. Nh÷ng më réng nµy sÏ ®­îc m« t¶ cô thÓ trong
ch­¬ng sau, ë ®©y chóng ta chØ tãm t¾t l¹i mét vµi ®iÓm chÝnh. *
Kh¶ n¨ng viÕt c¸c dßng chó thÝch míi. *
Kh¶ n¨ng khai b¸o linh ho¹t h¬n. *
Kh¶ n¨ng ®Þnh nghÜa l¹i c¸c hµm: c¸c hµm cïng tªn cã thÓ
thùc hiÖn theo nh÷ng thao t¸c kh¸c nhau. C¸c lêi gäi hµm sÏ dïng kiÓu
vµ sè tham sè ®Ó x¸c ®Þnh ®óng hµm nµo cÇn thùc hiÖn. *
Cã thªm c¸c to¸n tö ®Þnh nghÜa bé nhí ®éng míi: new vµ delete. *
Kh¶ n¨ng ®Þnh nghÜa c¸c hµm inline ®Ó t¨ng tèc ®é thùc hiÖn ch­¬ng tr×nh. *
T¹o c¸c biÕn tham chiÕu ®Õn c¸c biÕn kh¸c. LT L H T §T tr t ong on C+ C + +
C++ chøa ®ùng kh¸i niÖm líp. Mét líp bao gåm c¸c thµnh phÇn d÷ liÖu hay lµ
thuéc tÝnh vµ c¸c ph­¬ng thøc hay lµ hµm thµnh phÇn. Tõ mét líp ta cã thÓ t¹o ra
c¸c ®èi t­îng hoÆc b»ng c¸ch khai b¸o th«ng th­êng mét biÕn cã kiÓu lµ líp ®ã
hoÆc b»ng c¸ch cÊp ph¸t bé nhí ®éng nhê sö dông to¸n tö new. C++ cho phÐp
chóng ta ®ãng gãi d÷ liÖu nh­ng nã kh«ng b¾t buéc chóng ta thùc hiÖn ®iÒu ®ã.
§©y lµ mét nh­îc ®iÓm cña C++. Tuy nhiªn còng cÇn thÊy r»ng b¶n th©n C++ chØ
lµ sù më réng cña C nªn nã kh«ng thÓ lµ mét ng«n ng÷ LTH§T thuÇn khiÕt ®­îc. -11- Ng«n ng÷ C++
C++ cho phÐp ta ®Þnh nghÜa c¸c hµm thiÕt lËp (constructor) cho mét líp. Hµm
thiÕt lËp lµ mét ph­¬ng thøc ®Æc biÖt ®­îc gäi ®Õn t¹i thêi ®iÓm mét ®èi t­îng cña
líp ®­îc t¹o ra. hµm thiÕt lËp cã nhiÖm vô khëi t¹o mét ®èi t­îng: cÊp ph¸t bé nhí,
g¸n c¸c gi¸ trÞ cho c¸c thµnh phÇn d÷ liÖu còng nh­ viÖc chuÈn bÞ chç cho c¸c ®èi
t­îng míi. Mét líp cã thÓ cã mét hay nhiÒu hµm thiÕt lËp. §Ó x¸c ®Þnh hµm thiÕt
lËp nµo cÇn gäi ®Õn, ch­¬ng tr×nh biªn dÞch sÏ so s¸nh c¸c ®èi sè víi c¸c tham sè
truyÒn vµo. T­¬ng tù nh­ hµm thiÕt lËp, mét líp cã thÓ cã mét hµm huû bá
(destructor), mét ph­¬ng thøc ®Æc biÖt ®­îc gäi ®Õn khi ®èi t­îng ®­îc gi¶i phãng khái bé nhí.
Líp trong C++ thùc chÊt lµ mét kiÓu d÷ liÖu do ng­êi sö dông ®Þnh nghÜa.
Kh¸i niÖm ®Þnh nghÜa chång to¸n tö cho phÐp ®Þnh nghÜa c¸c phÐp to¸n trªn mét
líp gièng nh­ c¸c kiÓu d÷ liÖu chuÈn cña C. VÝ dô ta cã thÓ ®Þnh nghÜa mét líp sè
phøc víi c¸c phÐp to¸n céng, trõ, nh©n, chia.
Còng gièng nh­ C, C++ cã kh¶ n¨ng chuyÓn ®æi kiÓu. Kh«ng nh÷ng thÕ, C++
cßn cho phÐp më réng sù chuyÓn ®æi nµy sang c¸c kiÓu do ng­êi sö dông tù ®Þnh
nghÜa (c¸c líp). VÝ dô, ta cã thÓ chuyÓn ®æi tõ kiÓu chuÈn int cña C sang kiÓu sè
phøc mµ ta ®Þnh nghÜa ch¼ng h¹n.
C++ cho phÐp thùc hiÖn kÕ thõa c¸c líp ®· x©y dùng. Tõ phiªn b¶n 2.0 trë ®i,
C++ cßn cho phÐp mét líp kÕ thõa cïng mét lóc tõ nhiÒu nhiÒu líp kh¸c nhau (gäi lµ sù ®a kÕ thõa).
Cuèi cïng C++ cung cÊp nh÷ng thao t¸c vµo ra míi dùa trªn c¬ së kh¸i niÖm
luång d÷ liÖu (flow). Sù ­u viÖt cña c¸c thao t¸c nµy ë chç: * Sö dông ®¬n gi¶n. *
KÝch th­íc bé nhí ®­îc rót gän. *
Kh¶ n¨ng ¸p dông trªn c¸c kiÓu do ng­êi sö dông ®Þnh
nghÜa b»ng c¸ch sö dông c¬ chÕ ®Þnh nghÜa chång to¸n tö. -12-
LËp tr×nh h­íng ®èi t­îng
1.Ph­¬ng ph¸p lËp tr×nh..................................................................................... 1
2.Bµi to¸n quan hÖ gia ®×nh................................................................................ 2
3.LËp tr×nh h­íng ®èi t­îng...............................................................................6
3.1Mét sè kh¸i niÖm......................................................................................7
3.2C¸c ­u ®iÓm cña LTH§T......................................................................... 8
3.3Nh÷ng øng dông cña LTH§T...................................................................9
4.C¸c ng«n ng÷ lËp tr×nh h­íng ®èi t­îng......................................................... 9
5.Ng«n ng÷ lËp tr×nh C++................................................................................ 10 -13-