Ngày tải lên :
05/07/2014, 19:20
... NgônngữC++
-41-
dữliệukhôngquantrọngđốivớingờisửdụng.Vớimộtđốitợngđiểm,
ngờitachỉquantâmđếnviệccóthểthựchiệnđợcthaotácgìtrênnómà
khôngcầnbiếtcácthaotácđóđợcthựchiệnnhthếnào,cũngnhđiềugì
xảyrabêntrongbảnthânđốitợngđó.Tathờngnóiđólàsựtrừutợng
hoádữliệu(khicácchitiếtcàiđặtcụthểđợcgiấuđi).
Đónggóicónhiềulợiíchgópphầnnângcaochấtlợngcủachơng
trình. Nólàmchocôngviệcbảotrìchơngtrìnhthuậnlơihơnrấtnhiều:một
sựthayđổicấutrúccủamộtđốitợngchỉảnhhởngtớibảnthânđốitợng;
ngờisửdụngđốitợngkhôngcầnbiếtđếnthayđổinày(vớilậptrìnhcấu
trúcthìngờilậptrìnhphảitựquảnlýsựthayđổiđó).Chẳnghạncóthể
biểudiễntoạđộmộtđiểmdớidạngsốthực,khiđóchỉcóngờithiếtkế
đốitợngphảiquantâmđểsửalạiđịnhnghĩacủađốitợngtrongkhiđó
ngờisửdụngkhôngcầnhaybiếtvềđiềuđó,miễnlànhữngthayđổiđó
khôngtácđộngđếnviệcsửdụngđốitợngđiểm.
Tơngtựnhvậy,tacóthểbổsungthêmthuộctínhmàuvàmộtsốthao
táclênmộtđốitợngđiểm,đểcóđợcmộtđốitợngđiểmmàu.Rõrànglà
đónggóichophépđơngiảnhoáviệcsửdụngmộtđốitợng.
Tronglậptrìnhhớngđốitợng,đónggóichophépdữliệucủađối
tợngđợcchelấpkhinhìntừbênngoài,nghĩalànếungờidùngmuốntác
độnglêndữliệucủađốitợngthìphảigửiđếnđốitợngcácthông
điệp(message).ởđâycácphơngthứcđóngvaitròlàgiaodiệnbắtbuộc
giữacácđốitợngvàngờisửdụng.Tacónhậnxét:
Lờigọiđếnmột
phơngthứclàtruyềnmộtthôngbáođếnchođốitợng
.
Cácthôngđiệpgửitớiđốitợngnàosẽgắnchặtvớiđốitợngđóvàchỉ
đốitợngnàonhậnđợcthôngđiệpmớiphảithựchiệntheothôngđiệpđó;
chẳnghạncácđốitợngđiểmđộclậpvớinhau,vìvậythôngđiệpthayđổi
toạđộđốitợngđiểmpchỉlàmảnhhởngđếncácthànhphầntoạđộtrong
pchứkhôngthểthayđổiđợcnộidungcủamộtđốitợngđiểmqkhác.
Môtảđố
i
tợngđ
i
ểm{
//dữliệu
intx,y;
//phơngthức
voidinit(intox,intoy);
voidmove(intdx,intdy);
voiddisplay();
};
Hình3.1Môtảcácđốitợngđiểm
... NgônngữC++
-42-
Sovớilậptrìnhhớngđốitợngthuầntuý,cáccàiđặtcụthểcủađối
tợngtrongC++linhđộnghơnmộtchút,bằngcáchchophépchỉchedấu
mộtbộphậndữliệucủađốitợngvàmởrộnghơnkhảnăngtruynhậpđến
cácthànhphầnriêngcủađốitợng.Kháiniệmlớpchínhlàcơsởchocác
linhđộngnày.
Lớplàmộtmôtảtrừutợngcủanhómcácđốitợngcócùngbảnchất.
Trongmộtlớpngờitađaracácmôtảvềtínhchấtcủacácthànhphầndữ
liệu,cáchthứcthaotáctrêncácthànhphầnnày(hànhvicủacácđốitợng),
ngợclạimỗimộtđốitợnglàmộtthểhiệncụthểchonhữngmôtảtrừu
tợngđó.Trongcácngônngữlậptrình,lớpđóngvaitròmộtkiểudữliệu
đợcngờidùngđịnhnghĩavàviệctạoramộtđốitợngđợcvínhkhai
báomộtbiếncókiểulớp.
2.
2.
2.
2.
L
L
L
L
ớ
ớ
ớ
ớ
p
p
p
p
2.1
2.1
2.1
2.1
Khai
Khai
Khai
Khai
b
b
b
b
á
á
á
á
o
o
o
o
l
l
l
l
ớ
ớ
ớ
ớ
p
p
p
p
Từquanđiểmcủalậptrìnhcấutrúc,lớplàmộtkiểudữliệutựđịnh
nghĩa.Tronglậptrìnhhớngđốitợng,chơngtrìnhnguồnđợcphânbố
trongkhaibáovàđịnhnghiÃcủacáclớp.
Sauđâylàmộtvídụđiểnhìnhvềcúphápkhaibáolớp.Kinhnghiệm
chothấymọikiểukhaibáokhácđềucóthểchuẩnhoáđểđavềdạngnày.
Cácchitiếtliênquanđếnkhaibáolớpsẽlầnlợtđợcđềcậpđếntrong
cácphầnsau.Đểdễhìnhdungxétmộtvídụvềkhaibáolớpđiểmtrongmặt
phẳng.Trongvídụnàytacóđềcậpđếnmộtvàikhíacạnhliênquanđến
khaibáolớp,đốitợngvàsửdụngchúng.
class
class
class
class
<tênlớp>{
private:
private:
private:
private:
<khaibáocácthànhphầnriêngtrongtừngđốitợng>
public:
public:
public:
public:
<khaibáocácthànhphầncôngcộngcủatừngđối
tợng>
};
<địnhnghiÃcủacáchàmthànhphầnchađợcđịnh
nghĩabêntrongkhaibáolớp>
... NgônngữC++
-51-
Tấtnhiên,theonguyêntắcđónggói,khônggántrịchocácthànhphần
dữliệucủađốitợngmộtcáchtrựctiếp.
p.x
=
2;
p.y
=
4;
Hơnnữa,khôngthểthựchiệnlờigọitớihàmthànhphầnnếukhôngchỉ
rõđốitợngđợcthamchiếu.Chỉthị:
init(5,2);
tronghàm
main
sẽcóthểgâylỗibiêndịchnếutrongchơngtrình
khôngcóhàmtựdovớitên
init
.
2.1.5
2.1.5
2.1.5
2.1.5
Ph
Ph
Ph
Ph
ạ
ạ
ạ
ạ
m
m
m
m
vi
vi
vi
vi
l
l
l
l
ớ
ớ
ớ
ớ
p
p
p
p
Phạmvichỉraphầnchơngtrìnhtrongđócóthểtruyxuấtđếnmộtđối
tợngnàođó.TrongCcóbốnkiểuphạmviliênquanđếncáchthứcvàvịtrí
khaibáobiến:phạmvikhốilệnh,phạmvitệp,phạmvichơngtrìnhvà
phạmvihàmnguyênmẫu,trongđóthờngdùngnhấtlàphạmvitoàncục
(tệp,chơngtrình)vàphạmvicụcbộ(khốilệnh,hàm).Mụcđíchcủaphạm
vilàđểkiểmsoátviệctruyxuấtđếncácbiến/hằng/hàm.
Đểkiểmsoáttruynhậpđếncácthànhphần(dữliệu,hàm)củacáclớp,
C++đarakháiniệmphạmvilớp.Tấtcảcácthànhphầncủamộtlớpsẽ
đợccoilàthuộcphạmvilớp;trongđịnhnghĩahàmthànhphầncủalớpcó
thểthamchiếuđếnbấtkỳmộtthànhphầnnàokháccủacùnglớpđó.Tuân
theoýtởngđónggói,C++coitấtcảcácthànhphầncủamộtlớpcóliênhệ
vớinhau.Ngoàira,C++cònchophépmởrộngphạmvilớpđếncáclớpcon
cháu,bạnbèvàhọhàng(Xemthêmchơng5-Kếthừavàcácmụctiếpsau
đểhiểurõhơn).
2.1.6
2.1.6
2.1.6
2.1.6
T
T
T
T
ừ
ừ
ừ
ừ
kho
kho
kho
kho
á
á
á
á
x
x
x
x
á
á
á
á
c
c
c
c
đị
đị
đị
đị
nh
nh
nh
nh
thu
thu
thu
thu
ộ
ộ
ộ
ộ
c
c
c
c
t
t
t
t
í
í
í
í
nh
nh
nh
nh
truy
truy
truy
truy
xu
xu
xu
xu
ấ
ấ
ấ
ấ
t
t
t
t
Trongphầnnàytanóitớivaitròcủahaitừkhoáprivate
private
private
private
vàpublic
public
public
public
-
dùngđểxácđịnhthuộctínhtruyxuấtcủacácthànhphầnlớp.
Trongđịnhnghĩacủalớptacóthểxácđịnhkhảnăngtruyxuấtthành
phầncủamộtlớpnàođótừbênngoàiphạmvilớp.Tronglớppointcóhai
thànhphầndữliệuvàbathànhphầnhàm.Cácthànhphầndữliệuđợckhai
báovớinhÃnlàprivate,
private,
private,
private,
còncáchàmthànhvớinhÃnpublic
public
public
public
.private
private
private
private
và
public
public
public
public
làcáctừkhoáxácđịnhthuộctínhtruyxuất.Mọithànhphầnđợc
liệtkêtrongphầnpublic
public
public
public
đềucóthểtruyxuấttrongbấtkỳhàmnào.Những
...