Tài liệu học OPP bằng C++| Môn Lập trình hướng đối tượng| Trường Đại học Bách Khoa Hà Nội

Tài liệu học OPP bằng C++| Môn Lập trình hướng đối tượng| Trường Đại học Bách Khoa Hà Nội. Tài liệu gồm 378 trang giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kỳ thi sắp tới. Mời bạn đọc đón xem.

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
| 1/378

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-