CHươNG 1
CáC KHáI NIệM Cơ Sở
của LậP TRìNH HướNG ĐốI TượNG
Ch ng 1 trình b y nh ng v n sau:ươ à ữ ấ đề
Th o lu n v cách ti p c n h ng i t ng,ả ậ ề ế ậ ướ đố ượ
nh ng nh c i m c a l p trình truy n th ngữ ượ đ ể ủ ậ ề ố
v các c i m c a l p trình h ng ià đặ đ ể ủ ậ ướ đố
t ng.ượ
Các khái ni m c s c a ph ng phápệ ơ ở ủ ươ
h ng i t ng: ướ đố ượ
• i t ng Đố ượ
• L p ớ
• Tr u t ng hóa d li u v bao gói thông tinừ ượ ữ ệ à
• K th aế ừ
• T ng ng b i ươ ứ ộ
• Liên k t ngế độ
• Truy n thông báoề
Các b c c n thi t thi t k ch ngướ ầ ế để ế ế ươ
trình theo h ng i t ngướ đố ượ
1
Các u i m c a l p trình h ng iư đ ể ủ ậ ướ đố
t ngượ
Các ngôn ng h ng i t ngữ ướ đố ượ
M t s ng d ng c a l p trình h ng iộ ố ứ ụ ủ ậ ướ đố
t ngượ
1.1. Gi i thi uớ ệ
1.1.1. Ti p c n h ng i t ngế ậ ướ đố ượ
Trong th gi i th c, chung quanh chúng ta lế ớ ự à
nh ng i t ng, ó l các th c th có m iữ đố ượ đ à ự ể ố
quan h v i nhau. Ví d các ệ ớ ụ phòng trong m tộ
công ty kinh doanh c xem nh nh ng iđượ ư ữ đố
t ng. Các ượ phòng ây có th l : phòng qu nở đ ể à ả
lý, phòng bán h ng, phòng k toán, phòng ti pà ế ế
th , M i ị ỗ phòng ngo i nh ng cán b m nhi mà ữ ộ đả ệ
nh ng công vi c c th , còn có nh ng d li uữ ệ ụ ể ữ ữ ệ
riêng nh thông tin v nhân viên, doanh s bánư ề ố
h ng, ho c các d li u khác có liên quan n bà ặ ữ ệ đế ộ
ph n ó. Vi c phân chia các phòng ch c n ngậ đ ệ ứ ă
trong công ty s t o i u ki n d d ng cho vi cẽ ạ đ ề ệ ễ à ệ
qu n lý các ho t ng. M i nhân viên trongả ạ độ ỗ
phòng s i u khi n v x lý d li u c a phòngẽ đ ề ể à ử ữ ệ ủ
ó. Ví d phòng k toán ph trách v l ngđ ụ ế ụ ề ươ
2
b ng nhân viên trong công ty. N u b n ang ổ ế ạ đ ở
b ph n ti p th v c n tìm thông tin chi ti t vộ ậ ế ị à ầ ế ề
l ng c a n v mình thì s g i yêu c u vươ ủ đơ ị ẽ ở ầ ề
phòng k toán. V i cách l m n y b n cế ớ à à ạ đượ
m b o l ch có nhân viên c a b ph n kđả ả à ỉ ủ ộ ậ ế
toán c quy n truy c p d li u v cung c pđượ ề ậ ữ ệ à ấ
thông tin cho b n. i u n y c ng cho th y r ng,ạ Đ ề à ũ ấ ằ
không có ng i n o thu c b ph n khác có thườ à ộ ộ ậ ể
truy c p v thay i d li u c a b ph n kậ à đổ ữ ệ ủ ộ ậ ế
toán. Khái ni m nh th v i t ng h u nhệ ư ế ề đố ượ ầ ư
có th c m r ng i v i m i l nh v c trongể đượ ở ộ đố ớ ọ ĩ ự
i s ng xã h i v h n n a - i v i vi c tđờ ố ộ à ơ ữ đố ớ ệ ổ
ch c ch ng trình. M i ng d ng có th cứ ươ ọ ứ ụ ể đượ
nh ngh a nh m t t p các th c th - ho c cácđị ĩ ư ộ ậ ự ể ặ
i t ng, sao cho quá trình tái t o nh ng suyđố ượ ạ ữ
ngh a c a chúng ta l g n sát nh t v th gi iĩ ủ à ầ ấ ề ế ớ
th c.ự
Trong ph n ti p theo chúng ta s xem xétầ ế ẽ
ph ng pháp l p trình truy n th ng t óươ ậ ề ố để ừ đ
th y r ng vì sao chúng ta c n chuy n sangấ ằ ầ ể
ph ng pháp l p trình h ng i t ng.ươ ậ ướ đố ượ
3
1.1.2. Nh ng nh c i m c a l p trình h ngữ ượ đ ể ủ ậ ướ
th t c ủ ụ
Cách ti p c n l p trình truy n th ng l l pế ậ ậ ề ố à ậ
trình h ng th t c (LTHTT). Theo cách ti pướ ủ ụ ế
c n n y thì m t h th ng ph n m m c xemậ à ộ ệ ố ầ ề đượ
nh l dãy các công vi c c n th c hi n nh cư à ệ ầ ự ệ ư đọ
d li u, tính toán, x lý, l p báo cáo v in nữ ệ ử ậ à ấ
k t qu v.v M i công vi c ó s c th cế ả ỗ ệ đ ẽ đượ ự
hi n b i m t s h m nh t nh. Nh v y tr ngệ ở ộ ố à ấ đị ư ậ ọ
tâm c a cách ti p c n n y l các h m ch củ ế ậ à à à ứ
n ng. LTHTT s d ng k thu t phân rã h mă ử ụ ỹ ậ à
ch c n ng theo cách ti p c n trên xu ng (top-ứ ă ế ậ ố
down) t o ra c u trúc phân c p. Các ngôn ngđể ạ ấ ấ ữ
l p trình b c cao nh COBOL, FORTRAN,ậ ậ ư
PASCAL, C, v.v , l nh ng ngôn ng l p trìnhà ữ ữ ậ
h ng th t c. ướ ủ ụ Nh ng nh c i m chính c aữ ượ đ ể ủ
LTHTT l :à
Ch ng trình khó ki m soát v khó kh n trongươ ể à ă
vi c b sung, nâng c p ch ng trình. Ch ngệ ổ ấ ươ ươ
trình c xây d ng theo cách TCHTT th cđượ ự ự
ch t l danh sách các câu l nh m theo ó máyấ à ệ à đ
tính c n th c hi n. Danh sách các l nh óầ ự ệ ệ đ
4
c t ch c th nh t ng nhóm theo n vđượ ổ ứ à ừ đơ ị
c u trúc c a ngôn ng l p trình v c g iấ ủ ữ ậ à đượ ọ
l h m/th t c. Trong ch ng trình có nhi uà à ủ ụ ươ ề
h m/th t c, th ng thì có nhi u th nh ph nà ủ ụ ườ ề à ầ
d li u quan tr ng s c khai báo t ng thữ ệ ọ ẽ đượ ổ ể
(global) các h m/th t c có th truy nh p,để à ủ ụ ể ậ
c v l m thay i giá tr c a bi n t ng th .đọ à à đổ ị ủ ế ổ ể
i u n y s l m cho ch ng trình r t khóĐ ề à ẽ à ươ ấ
ki m soát, nh t l i v i các ch ng trìnhể ấ à đố ớ ươ
l n, ph c t p thì v n c ng tr nên khóớ ứ ạ ấ đề à ở
kh n h n. Khi ta mu n thay i, b sung c uă ơ ố đổ ổ ấ
trúc d li u dùng chung cho m t s h m/thữ ệ ộ ố à ủ
t c thì ph i thay i h u nh t t c cácụ ả đổ ầ ư ấ ả
h m/th t c liên quan n d li u ó. à ủ ụ đế ữ ệ đ
Mô hình c xây d ng theo cách ti p c nđượ ự ế ậ
h ng th t c không mô t c y ,ướ ủ ụ ả đượ đầ đủ
trung th c h th ng trong th c t .ự ệ ố ự ế
Ph ng pháp TCHTT t tr ng tâm v o h mươ đặ ọ à à
l h ng t i ho t ng s không th c sà ướ ớ ạ độ ẽ ự ự
t ng ng v i các th c th trong h th ng c aươ ứ ớ ự ể ệ ố ủ
th gi i th c.ế ớ ự
5
1.1.3. L p trình h ng i t ngậ ướ đố ượ
L p trình h ng i t ng (Object Orientedậ ướ đố ượ
Programming - LTH T) l ph ng pháp l pĐ à ươ ậ
trình l y i t ng l m n n t ng xây d ngấ đố ượ à ề ả để ự
thu t gi i, xây d ng ch ng trình. i t ngậ ả ự ươ Đố ượ
c xây d ng trên c s g n c u trúc d li uđượ ự ơ ở ắ ấ ữ ệ
v i các ph ng th c (các h m/th t c) s thớ ươ ứ à ủ ụ ẽ ể
hi n c úng cách m chúng ta suy ngh , baoệ đượ đ à ĩ
quát v th gi i th c. LTH T cho phép ta k tề ế ớ ự Đ ế
h p nh ng tri th c bao quát v các quá trình v iợ ữ ứ ề ớ
nh ng khái ni m tr u t ng c s d ng trongữ ệ ừ ượ đượ ử ụ
máy tính.
i m c n b n c a ph ng pháp LTH T lĐ ể ă ả ủ ươ Đ à
thi t k ch ng trình xoay quanh d li u c a hế ế ươ ữ ệ ủ ệ
th ng. Ngh a l các thao tác x lý c a h th ngố ĩ à ử ủ ệ ố
c g n li n v i d li u v nh v y khi có sđượ ắ ề ớ ữ ệ à ư ậ ự
thay i c a c u trúc d li u thì ch nh h ngđổ ủ ấ ữ ệ ỉ ả ưở
n m t s ít các ph ng th c x lý liên quan.đế ộ ố ươ ứ ử
LTH T không cho phép d li u chuy n ngĐ ữ ệ ể độ
t do trong h th ng. D li u c g n ch t v iự ệ ố ữ ệ đượ ắ ặ ớ
t ng ph ng th c th nh các vùng riêng m cácừ ươ ứ à à
ph ng th c ó tác ng lên v nó c b o vươ ứ đ độ à đượ ả ệ
6
c m vi c truy nh p tùy ti n t bên ngo i.để ấ ệ ậ ệ ừ à
LTH T cho phép phân tích b i toán th nh t pĐ à à ậ
các th c th c g i l các i t ng v sauự ể đượ ọ à đố ượ à
ó xây d ng các d li u cùng v i các ph ngđ ự ữ ệ ớ ươ
th c xung quanh các i t ng ó. ứ đố ượ đ
Tóm l i LTH T có nh ng c tính ch y uạ Đ ữ đặ ủ ế
nh sau:ư
1. T p trung v o d li u thay cho các ph ngậ à ữ ệ ươ
th c.ứ
2. Ch ng trình c chia th nh các l p iươ đượ à ớ đố
t ng.ượ
3. Các c u trúc d li u c thi t k sao choấ ữ ệ đượ ế ế
c t c các i t ng.đặ ả đượ đố ượ
4. Các ph ng th c xác nh trên các vùng dươ ứ đị ữ
li u c a i t ng c g n v i nhau trên c uệ ủ đố ượ đượ ắ ớ ấ
trúc d li u ó.ữ ệ đ
5. D li u c bao b c, che d u v khôngữ ệ đượ ọ ấ à
cho phép các th nh ph n bên ngo i truy nh p tà ầ à ậ ự
do.
6. Các i t ng trao i v i nhau thông quađố ượ đổ ớ
các ph ng th c.ươ ứ
7
7. D li u v các ph ng th c m i có th dữ ệ à ươ ứ ớ ể ễ
d ng b sung v o i t ng n o ó khi c nà ổ à đố ượ à đ ầ
thi t.ế
8. Ch ng trình c thi t k theo cách ti pươ đượ ế ế ế
c n bottom-up (d i -lên).ậ ướ
1.2. Các khái ni m c b n c a l p trình h ng ệ ơ ả ủ ậ ướ
i t ngđố ượ
Nh ng khái ni m c b n trong LTH T baoữ ệ ơ ả Đ
g m:ồ i t ng; L p; Tr u t ng hóa d li u,Đố ượ ớ ừ ượ ữ ệ
bao gói thông tin; K th a; T ng ng b i; Liênế ừ ươ ứ ộ
k t ng; Truy n thông báo.ế độ ề
1.2.1. i t ngĐố ượ
Trong th gi i th c, khái ni m i t ngế ớ ự ệ đố ượ
c hi u nh l m t th c th , nó có th lđượ ể ư à ộ ự ể ể à
ng i, v t ho c m t b ng d li u c n x lýườ ậ ặ ộ ả ữ ệ ầ ử
trong ch ng trình, Trong LTH T thì iươ Đ đố
t ng l bi n th hi n c a ượ à ế ể ệ ủ l pớ .
1.2.2. L p ớ
L pớ l m t khái ni m m i trong LTH T soà ộ ệ ớ Đ
v i k thu t LTHTT. Nó l m t b n m u mô tớ ỹ ậ à ộ ả ẫ ả
các thông tin c u trúc d li u v các thao tác h pấ ữ ệ à ợ
8
l c a các ph n t d li u. Khi m t ph n t dệ ủ ầ ử ữ ệ ộ ầ ử ữ
li u c khai báo l ph n t c a m t l p thìệ đượ à ầ ử ủ ộ ớ
nó c g i l đượ ọ à i t ngđố ượ . Các h m c nhà đượ đị
ngh a h p l trong m t l p c g i l cácĩ ợ ệ ộ ớ đượ ọ à
ph ng th cươ ứ (method) v chúng l các h m duyà à à
nh t có th x lý d li u c a các i t ng c aấ ể ử ữ ệ ủ đố ượ ủ
l p ó. M i i t ng có riêng cho mình m tớ đ ỗ đố ượ ộ
b n sao các ph n t d li u c a l p. M i l pả ầ ử ữ ệ ủ ớ ỗ ớ
bao g m: danh sách các thu c tính (attribute) vồ ộ à
danh sách các ph ng th c x lý các thu cươ ứ để ử ộ
tính ó. Công th c ph n ánh b n ch t c a kđ ứ ả ả ấ ủ ỹ
thu t LTH T l :ậ Đ à
i t ng = D li u + Ph ngĐố ượ ữ ệ ươ
th cứ
Ch ng h n, chúng ta xét l p HINH_CN baoẳ ạ ớ
g m các thu c tính: (x1,y1) to góc trên bênồ ộ ạ độ
trái, d,r l chi u d i v chi u r ng c a HCN.à ề à à ề ộ ủ
Các ph ng th c nh p s li u cho HCN, h mươ ứ ậ ố ệ à
tính di n tích, chu vi v h m hi n th . L pệ à à ể ị ớ
HINH_CN có th c mô t nh sau:ể đượ ả ư
9
HINH_CN
Thu cộ
tính :
x1,y1
d,r
Ph ngươ
th cứ :
Nh p_slậ
Di n tíchệ
Chu vi
Hi n thể ị
10
Hình 2.2 Mô t l p HINH_CNả ớ
Chú ý: Trong LTH T thì l p l khái ni m t nh,Đ ớ à ệ ĩ
có th nh n bi t ngay t v n b n ch ng trình,ể ậ ế ừ ă ả ươ
ng c l i i t ng l khái ni m ng, nóượ ạ đố ượ à ệ độ
c xác nh trong b nh c a máy tính, n iđượ đị ộ ớ ủ ơ
i t ng chi m m t vùng b nh lúc th c hi nđố ượ ế ộ ộ ớ ự ệ
ch ng trình. i t ng c t o ra x lýươ Đố ượ đượ ạ để ử
thông tin, th c hi n nhi m v c thi t k , sauự ệ ệ ụ đượ ế ế
ó b h y b khi i t ng ó h t vai trò.đ ị ủ ỏ đố ượ đ ế
1.2.3. Tr u t ng hóa d li u v bao gói thôngừ ượ ữ ệ à
tin
Tr u t ng hóaừ ượ l cách bi u di n nh ng cà ể ễ ữ đặ
tính chính v b qua nh ng chi ti t v n v tà ỏ ữ ế ụ ặ
ho c nh ng gi i thích. Khi xây d ng các l p, taặ ữ ả ự ớ
ph i s d ng khái ni m tr u t ng hóa. Ví d taả ử ụ ệ ừ ượ ụ
có th nh ngh a m t l p mô t các iể đị ĩ ộ ớ để ả đố
t ng trong không gian hình h c bao g m cácượ ọ ồ
thu c tính tr u t ng nh l kích th c, hìnhộ ừ ượ ư à ướ
dáng, m u s c v các ph ng th c xác nh trênà ắ à ươ ứ đị
các thu c tính n y. ộ à
11
Vi c óng gói d li u v các ph ng th cệ đ ữ ệ à ươ ứ
v o m t n v c u trúc l p c xem nh m tà ộ đơ ị ấ ớ đượ ư ộ
nguyên t c ắ bao gói thông tin. D li u c tữ ệ đượ ổ
ch c sao cho th gi i bên ngo i (các i t ng ứ ế ớ à đố ượ ở
l p khác) không truy nh p v o, m ch cho phépớ ậ à à ỉ
các ph ng th c trong cùng l p ho c trongươ ứ ớ ặ
nh ng l p có quan h k th a v i nhau m iữ ớ ệ ế ừ ớ ớ
c quy n truy nh p. Chính các ph ng th cđượ ề ậ ươ ứ
c a l p s óng vai trò nh l giao di n gi a dủ ớ ẽ đ ư à ệ ữ ữ
li u c a i t ng v ph n còn l i c a ch ngệ ủ đố ượ à ầ ạ ủ ươ
trình. Nguyên t c bao gói d li u ng n c mắ ữ ệ để ă ấ
s truy nh p tr c ti p trong l p trình c g iự ậ ự ế ậ đượ ọ
l s à ự che gi u thông tinấ .
1.2.4. K th aế ừ
K th aế ừ l quá trình m các i t ng c aà à đố ượ ủ
l p n y c quy n s d ng m t s tính ch tớ à đượ ề ử ụ ộ ố ấ
c a các i t ng c a l p khác. S k th a choủ đố ượ ủ ớ ự ế ừ
phép ta nh ngh a m t l p m i trên c s cácđị ĩ ộ ớ ớ ơ ở
l p ã t n t i. L p m i n y, ngo i nh ng th nhớ đ ồ ạ ớ ớ à à ữ à
ph n c k th a, s có thêm nh ng thu cầ đượ ế ừ ẽ ữ ộ
tính v các h m m i. Nguyên lý k th a h trà à ớ ế ừ ỗ ợ
cho vi c t o ra c u trúc phân c p các l p.ệ ạ ấ ấ ớ
12
1.2.5. T ng ng b iươ ứ ộ
T ng ng b iươ ứ ộ l kh n ng c a m t kháià ả ă ủ ộ
ni m (ch ng h n các phép toán) có th s d ngệ ẳ ạ ể ử ụ
v i nhi u ch c n ng khác nhau. Ví d , phép + cóớ ề ứ ă ụ
th bi u di n cho phép “c ng” các s nguyênể ể ễ ộ ố
(int), s th c (float), s ph c (complex) ho c xâuố ự ố ứ ặ
ký t (string) v.v H nh vi c a phép toán t ngự à ủ ươ
ng b i ph thu c v o ki u d li u m nó sứ ộ ụ ộ à ể ữ ệ à ử
d ng x lý. ụ để ử
T ng ng b i óng vai quan tr ng trong vi cươ ứ ộ đ ọ ệ
t o ra các i t ng có c u trúc bên trong khácạ đố ượ ấ
nhau nh ng cùng dùng chung m t giao di n bênư ộ ệ
ngo i (nh tên g i). à ư ọ
1.2.6. Liên k t ngế độ
Liên k t ngế độ l d ng liên k t các th t c và ạ ế ủ ụ à
h m khi ch ng trình th c hi n l i g i t i cácà ươ ự ệ ờ ọ ớ
h m, th t c ó. Nh v y trong liên k t ng,à ủ ụ đ ư ậ ế độ
n i dung c a o n ch ng trình ng v i thộ ủ đ ạ ươ ứ ớ ủ
t c, h m s không c bi t cho n khi th cụ à ẽ đượ ế đế ự
hi n l i g i t i th t c, h m ó. ệ ờ ọ ớ ủ ụ à đ
13
1.2.7. Truy n thông báoề
Các i t ng g i v nh n thông tin v i nhauđố ượ ử à ậ ớ
gi ng nh con ng i trao i v i nhau. Chínhố ư ườ đổ ớ
nguyên lý trao i thông tin b ng cách truy nđổ ằ ề
thông báo cho phép ta d d ng xây d ng cễ à ự đượ
h th ng mô ph ng g n h n nh ng h th ngệ ố ỏ ầ ơ ữ ệ ố
trong th gi i th c. ế ớ ự Truy n thông báoề cho m tộ
i t ng l yêu c u i t ng th c hi n m tđố ượ à ầ đố ượ ự ệ ộ
vi c gì ó. Cách ng x c a i t ng cệ đ ứ ử ủ đố ượ đượ
mô t bên trong l p thông qua các ph ng th c.ả ớ ươ ứ
Trong ch ng trình, thông báo g i n choươ ử đế
m t i t ng chính l yêu c u th c hi n m tộ đố ượ à ầ ự ệ ộ
công vi c c th , ngh a l s d ng nh ng h mệ ụ ể ĩ à ử ụ ữ à
t ng ng x lý d li u ã c khai báoươ ứ để ử ữ ệ đ đượ
trong i t ng ó. Vì v y, trong thông báo ph iđố ượ đ ậ ả
ch ra c h m c n th c hi n trong i t ngỉ đượ à ầ ự ệ đố ượ
nh n thông báo. Thông báo truy n i c ng ph iậ ề đ ũ ả
xác nh tên i t ng v thông tin truy n i.đị đố ượ à ề đ
Ví d , l p CONGNHAN có th hi n l iụ ớ ể ệ à đố
t ng c th c i di n b i Hoten nh nượ ụ ể đượ đạ ệ ở ậ
c thông báo c n tính l ng thông qua h mđượ ầ ươ à
TINHLUONG ã c xác nh trong l pđ đượ đị ớ
14
CONGNHAN. Thông báo ó s c x lý nhđ ẽ đượ ử ư
sau:
Trong ch ng trình h ng i t ng, m iươ ướ đố ượ ỗ
i t ng ch t n t i trong th i gian nh t nh.đố ượ ỉ ồ ạ ờ ấ đị
i t ng c t o ra khi nó c khai báo vĐố ượ đượ ạ đượ à
s b h y b khi ch ng trình ra kh i mi n xácẽ ị ủ ỏ ươ ỏ ề
nh c a i t ng ó. S trao i thông tin chđị ủ đố ượ đ ự đổ ỉ
có th th c hi n trong th i gian i t ng t nể ự ệ ờ đố ượ ồ
t i.ạ
1.3. Các b c c n thi t thi t k ch ng ướ ầ ế để ế ế ươ
trình theo h ng i t ngướ đố ượ
Ch ng trình theo h ng i t ng bao g mươ ướ đố ượ ồ
m t t p các i t ng v m i quan h gi a cácộ ậ đố ượ à ố ệ ữ
i t ng v i nhau. Vì v y, l p trình trong ngônđố ượ ớ ậ ậ
ng h ng i t ng bao g m các b c sau:ữ ướ đố ượ ồ ướ
1. Xác nh các d ng i t ng (l p) c a b iđị ạ đố ượ ớ ủ à
tóan.
15
CONGNHAN.TINHLUONG (Hoten)
i t ng Đố ượ Thông báo Thông tin
2. Tìm ki m các c tính chung (d li uế đặ ữ ệ
chung) trong các d ng i t ng n y, nh ng gìạ đố ượ à ữ
chúng cùng nhau chia x .ẻ
3. Xác nh l p c s d a trên c s các cđị ớ ơ ở ự ơ ở đặ
tính chung c a các d ng i t ng.ủ ạ đố ượ
4. T l p c s , xây d ng các l p d n xu từ ớ ơ ở ự ớ ẫ ấ
ch a các th nh ph n, nh ng c tính khôngứ à ầ ữ đặ
chung còn l i c a các d ng i t ng. ạ ủ ạ đố ượ Ngo i ra,à
ta còn a ra các l p có quan h v i các l p cđư ớ ệ ớ ớ ơ
s v l p d n xu t.ở à ớ ẫ ấ
1.4. Các u i m c a l p trình h ng i t ngư đ ể ủ ậ ướ đố ượ
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 s n ph mể ầ ề à ạ đượ ữ ả ẩ
ph n m m có ch t l ng cao. ầ ề ấ ượ Nh ng u i mữ ư đ ể
chính c a LTH T l :ủ Đ à
1. Thông qua nguyên lý k th a, 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 m r ng kh n ng sả ớ à ở ộ ả ă ử
d ng các l p ã c xây d ng.ụ ớ đ đượ ự
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đơ ể đố ượ đổ ớ ệ
16
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. 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ý 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 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 c a ch ngượ ủ à à đố ượ ủ ươ
trình.
5. Cách ti p c n thi t k t tr ng tâm v oế ậ ế ế đặ ọ à
i t ng, giúp chúng ta xây d ng c môđố ượ ự đượ
hình chi ti t v g n v i d ng c i t h n.ế à ầ ớ ạ à đặ ơ
6. Nh ng 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 giúp 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.đơ ả ơ
17
8. Có th qu n lý c ph c t p c aể ả đượ độ ứ ạ ủ
nh ng s n ph m ph n m m.ữ ả ẩ ầ ề
Không ph i trong h th ng h ng i t ngả ệ ố ướ đố ượ
n o c ng có t t c các tính ch t nêu trên. Khà ũ ấ ả ấ ả
n ng có các tính ch t ó còn ph thu c v o l nhă ấ đ ụ ộ à ĩ
v c ng d ng c a d án tin h c v v o ph ngự ứ ụ ủ ự ọ à à ươ
pháp th c hi n c a ng i phát tri n ph n m m.ự ệ ủ ườ ể ầ ề
1.5. Các ngôn ng h ng i t ngữ ướ đố ượ
L p trình h ng i t ng không l cậ ướ đố ượ à đặ
quy n c a m t ngôn ng n o c bi t. C ngề ủ ộ ữ à đặ ệ ũ
gi ng nh l p trình có c u trúc, nh ng kháiố ư ậ ấ ữ
ni m trong l p trình h ng i t ng có th c iệ ậ ướ đố ượ ể à
t trong nh ng ngôn ng l p trình nh C ho cđặ ữ ữ ậ ư ặ
Pascal, Tuy nhiên, i v i nh ng ch ng trìnhđố ớ ữ ươ
l n thì v n l p trình s tr nên ph c t p.ớ ấ đề ậ ẽ ở ứ ạ
Nh ng ngôn ng c thi t k c bi t, h trữ ữ đượ ế ế đặ ệ ỗ ợ
cho vi c mô t , c i t các khái ni m c aệ ả à đặ ệ ủ
ph ng pháp h ng i t ng c g i chungươ ướ đố ượ đượ ọ
l ngôn ng i t ng. D a v o kh n ng ápà ữ đố ượ ự à ả ă đ
ng các khái ni m v h ng i t ng, ta cóứ ệ ề ướ đố ượ
th chia ra l m hai lo i:ể à ạ
1. Ngôn ng l p trình d a trên i t ngữ ậ ự đố ượ
18
2. Ngôn ng l p trình h ng i t ngữ ậ ướ đố ượ
L p trình d a trên i t ng l ki u l pậ ự đố ượ à ể ậ
trình h tr chính cho vi c bao gói, che gi uỗ ợ ệ ấ
thông tin v nh danh các i t ng. L p trìnhà đị đố ượ ậ
d a trên i t ng có nh ng c tính sau:ự đố ượ ữ đặ
• Bao gói d li uữ ệ
• C ch che gi u v truy nh p d li uơ ế ấ à ậ ữ ệ
• T ng t o l p v xóa b các iự độ ạ ậ à ỏ đố
t ngượ
• Phép toán t i b iả ộ
Ngôn ng h tr cho ki u l p trình trên cữ ỗ ợ ể ậ đượ
g i l ngôn ng l p trình d a trên i t ng.ọ à ữ ậ ự đố ượ
Ngôn ng trong l p n y không h tr cho vi cữ ớ à ỗ ợ ệ
th c hi n k th a v liên k t ng, ch ng h nự ệ ế ừ à ế độ ẳ ạ
Ada l ngôn ng l p trình d a trên i t ng.à ữ ậ ự đố ượ
L p trình h ng i t ng l ki u l p trìnhậ ướ đố ượ à ể ậ
d a trên i t ng v b sung thêm nhi u c uự đố ượ à ổ ề ấ
trúc c i t nh ng quan h v k th a vđể à đặ ữ ệ ề ế ừ à
liên k t ng. Vì v y c tính c a LTH T cóế độ ậ đặ ủ Đ
th vi t m t cách ng n g n nh sau:ể ế ộ ắ ọ ư
Các c tính d a trên i t ng + kđặ ự đố ượ ế
th a + liên k t ng.ừ ế độ
19
Ngôn ng h tr cho nh ng c tính trênữ ỗ ợ ữ đặ
c g i l ngôn ng LTH T, ví d nh C++,đượ ọ à ữ Đ ụ ư
Smalltalk, Object Pascal v.v
Vi c ch n m t ngôn ng c i t ph nệ ọ ộ ữ để à đặ ầ
m m ph thu c nhi u v o các c tính v yêuề ụ ộ ề à đặ à
c u c a b i toán ng d ng, v o kh n ng sầ ủ à ứ ụ à ả ă ử
d ng l i c a nh ng ch ng trình ã có v v oụ ạ ủ ữ ươ đ à à
t ch c c a nhóm tham gia xây d ng ph n m m. ổ ứ ủ ự ầ ề
1.6. M t s ng d ng c a LTH Tộ ố ứ ụ ủ Đ
LTH T ang c ng d ng phát tri nĐ đ đượ ứ ụ để ể
ph n m m trong nhi u l nh v c khác nhau. Trongầ ề ề ĩ ự
s ó, có ng d ng quan tr ng v n i ti ng nh tố đ ứ ụ ọ à ổ ế ấ
hi n nay l h i u h nh Windows c a hãngệ à ệ đ ề à ủ
Microsoft ã c phát tri n d a trên k thu tđ đượ ể ự ỹ ậ
LTH T. M t s nh ng l nh v c ng d ng chínhĐ ộ ố ữ ĩ ự ứ ụ
c a k thu t LTH T bao g m:ủ ỹ ậ Đ ồ
+ Nh ng h th ng l m vi c theo th i gianữ ệ ố à ệ ờ
th c.ự
+ Trong l nh v c mô hình hóa ho c mô ph ngĩ ự ặ ỏ
các quá trình
+ Các c s d li u h ng i t ng.ơ ở ữ ệ ướ đố ượ
+ Nh ng h siêu v n b n, multimediaữ ệ ă ả
20
+ L nh v c trí tu nhân t o v các h chuyênĩ ự ệ ạ à ệ
gia.
+ L p trình song song v m ng n -ron.ậ à ạ ơ
+ Nh ng h t ng hóa v n phòng v trữ ệ ự độ ă à ợ
giúp quy t nh.ế đị
21
Chương 2
các mở rộng của ngôn ngữ C++
Ch ng 2 trình b y nh ng v n sau ây: ươ à ữ ấ đề đ
Gi i thi u chung v ngôn ng C++ớ ệ ề ữ
M t s m r ng c a ngôn ng C++ so v iộ ố ở ộ ủ ữ ớ
ngôn ng C ữ
Các c tính c a C++ h tr l p trìnhđặ ủ ỗ ợ ậ
h ng i t ngướ đố ượ
V o ra trong C++à
C p phát v gi i phóng b nhấ à ả ộ ớ
Bi n tham chi u, h ng tham chi uế ế ằ ế
Truy n tham s cho h m theo tham chi uề ố à ế
H m tr v giá tr tham chi uà ả ề ị ế
H m v i tham s có giá tr m c nhà ớ ố ị ặ đị
Các h m n i tuy n (inline)à ộ ế
H m t i b ià ả ộ
2.1. Gi i thi u chung v C++ớ ệ ề
C++ l ngôn ng l p trình h ng i t ngà ữ ậ ướ đố ượ
v l s m r ng c a ngôn ng C. Vì v y m ià à ự ở ộ ủ ữ ậ ọ
khái ni m trong C u dùng c trong C++.ệ đề đượ
Ph n l n các ch ng trình C u có th ch yầ ớ ươ đề ể ạ
22
c trong C++. Trong ch ng n y ch t p trungđượ ươ à ỉ ậ
gi i thi u nh ng khái ni m, c tính m i c aớ ệ ữ ệ đặ ớ ủ
C++ h tr cho l p trình h ng i t ng. M tỗ ợ ậ ướ đố ượ ộ
s ki n th c có trong C++ nh ng ã có trongố ế ứ ư đ
ngôn ng C s không c trình b y l i ây.ữ ẽ đượ à ạ ở đ
2.2. M t s m r ng c a C++ so v i Cộ ố ở ộ ủ ớ
2.2.1. t l i chú thích Đặ ờ
Ngo i ki u chú thích trong C b ng /* */ ,à ể ằ
C++ a thêm m t ki u chú thích th hai, ó lđư ộ ể ứ đ à
chú thích b t u b ng //. Ki u chú thích /* */ắ đầ ằ ể
c dùng cho các kh i chú thích l n g mđượ ố ớ ồ
nhi u dòng, còn ki u // c dùng cho các chúề ể đượ
thích trên m t dòng. Ch ng trình d ch s bộ ươ ị ẽ ỏ
qua t t c các chú thích trong ch ng trình.ấ ả ươ
Ví d : /* ây l ụ Đ à
câu chú thích trên nhi u dòng */ề
// ây l chú thích trên m t dòngĐ à ộ
2.2.2. Khai báo bi nế
Trong C t t c các câu l nh khai báo bi n,ấ ả ệ ế
m ng c c b ph i t t i u kh i. Vì v y vả ụ ộ ả đặ ạ đầ ố ậ ị
trí khai báo v v trí s d ng c a bi n có th à ị ử ụ ủ ế ể ở
cách khá xa nhau, i u n y gây khó kh n trongđ ề à ă
23
vi c ki m soát ch ng trình. C++ ã kh c ph cệ ể ươ đ ắ ụ
nh c i m n y b ng cách cho phép các l nhượ đ ể à ằ ệ
khai báo bi n có th t b t k ch n o trongế ể đặ ấ ỳ ỗ à
ch ng trình tr c khi các bi n c s d ng.ươ ướ ế đượ ử ụ
Ph m vi ho t ng c a các bi n ki u n y lạ ạ độ ủ ế ể à à
kh i trong ó bi n c khai báo. ố đ ế đượ
Ví d 2.1ụ Ch ng trình sau ây nh p m t dãyươ đ ậ ộ
s th c r i s p x p theo th t t ng d n:ố ự ồ ắ ế ứ ự ă ầ
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
void main()
{
int n;
printf("\n So phan tu cua day
N=");
scanf("%d",&n);
float
*x=(float*)malloc((n+1)*sizeof(flo
at));
for (int i=0;i<n;i++)
{
24
printf("\n X[%d]=",i);
scanf("%f",x+i);
}
for(i=0;i<n-1;++i)
for (int j=i+1;j<n;++j)
if (x[i]>x[j])
{
float tg=x[i];
x[i]=x[j];
x[j]=tg;
}
printf("\n Day sau khi sap
xep\n");
for (i=0;i<n;++i)
printf("%0.2f ",x[i]);
getch();
}
2.2.3. Phép chuy n ki u b t bu cể ể ắ ộ
Ngo i phép chuy n ki u b t bu c c vi tà ể ể ắ ộ đượ ế
trong C theo cú pháp:
(ki u) bi u th cể ể ứ
25