... Ngônng C++ -4 1- 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ợnghoá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ộtsự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ấutrú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ốthaotá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đốitợ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ộcgiữacácđốitợngvàngờisửdụng.Tacónhậnxét:Lờigọiđếnmộtphơ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đổitoạđộđốitợngđiểmpchỉlàmảnhhởngđếncácthànhphầntoạđộtrongpchứkhôngthểthayđổiđợcnộidungcủamộtđốitợngđiểmqkhác.Môtảđốitợngđiểm{//dữliệuintx,y;//phơngthứcvoidinit(intox,intoy);voidmove(intdx,intdy);voiddisplay();};Hình3.1MôtảcácđốitợngđiểmNgônng C++ -5 1- Tấtnhiên,theonguyêntắcđónggói,khônggántrịchocácthànhphầndữ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àmmainsẽcóthểgâylỗibiêndịchnếutrongchơngtrìnhkhôngcóhàmtựdovớitêninit.2.1.52.1.52.1.52.1.5PhPhPhPhạạạạmmmmvivivivillllớớớớppppPhạmvichỉraphầnchơngtrìnhtrongđócóthểtruyxuấtđếnmộtđốitợ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ạmvilàđể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ântheoý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ớpconcháu,bạnbèvàhọhàng(Xemthêmchơng5-Kếthừavàcácmụctiếpsauđểhiểurõhơn).2.1.62.1.62.1.62.1.6TTTTừừừừkhokhokhokhoááááxxxxááááccccđịđịđịđịnhnhnhnhthuthuthuthuộộộộccccttttíííínhnhnhnhtruytruytruytruyxuxuxuxuấấấấttttTrongphầnnàytanóitớivaitròcủahaitừkhoáprivateprivateprivateprivatevàpublicpublicpublicpublic - 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ànhphầncủamộtlớpnàođótừbênngoàiphạmvilớp.Tronglớppointcóhaithànhphầndữliệuvàbathànhphầnhàm.CácthànhphầndữliệuđợckhaibáovớinhÃnlàprivate,private,private,private,còncáchàmthànhvớinhÃnpublicpublicpublicpublic.privateprivateprivateprivatevàpublicpublicpublicpubliclàcáctừkhoáxácđịnhthuộctínhtruyxuất.Mọithànhphầnđợcliệtkêtrongphầnpublicpublicpublicpublicđềucóthểtruyxuấttrongbấtkỳhàmnào.NhữngNgônng C++ -8 3- Ngợclại,hàmthiếtlậpthựchiệnđồngthờihainhiệmvụ:tạođốitợngvàsaochépnộidungtừmộtđốitợngđÃcósangđốitợngmớitạorađó.Ngoàitìnhhuốngtrênđây,còncóhaitrờnghợpcầndùnghàmthiếtlậpsaochép:truyềnđốitợngchohàmbằngthamtrịhoặchàmtrảvềmộtđốitợngnhằmtạomộtđốitợnggiốnghệtmộtđốitợngcùnglớpđÃcótrớcđó.Trongphầnsauchúngtasẽcóvídụminhhoạchocáctrìnhbàynày.4.4.24.4.24.4.24.4.2HHHHààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppngngngngầầầầmmmmđịđịđịđịnhnhnhnhGiốngnhhàmthiếtlậpngầmđịnh(hàmthiếtlậpkhôngthamsố),nếukhôngđợcmôtảtờngminh,sẽcómộthàmthiếtlậpsaochépngầmđịnhdochơngtrìnhdịchcungcấpnhằmđảmbảotínhđúngđắncủachơngtrìnhtrongcáctìnhhuốngcầnđếnhàmthiếtlập.Nhvậy,trongkhaibáocủamộtlớpcóítnhấthaihàmthiếtlậpngầmđịnh:hàmthiếtlậpngầmđịnhvàhàmthiếtlậpsaochépngầmđịnh.Dolàmộthàmđợctạoratựđộngnênhàmthiếtlậpsaochépngầmđịnhcũngchỉthựchiệnnhữngthaotáctốithiểu(ngầmđịnh):tạogiátrịcủacácthuộctínhtrongđốitợngmớibằngcácgiátrịcủacácthuộctínhtơngứngtrongđốitợngcũ.Bạnđọccóthểxemlạiphần3củachơngđểhiểurõhơn.Nóichung,vớicáclớpkhôngkhaibáocácthànhphầndữliệuđộngthìchỉcầndùnghàmthiếtlậpsaochépngầmđịnhlàđủ.Vấnđềsẽkhácđikhicầnđếncácthaotácquảnlýbộnhớđộngtrongcácđốitợng.Trongtrờnghợpnàykhôngđợcdùnghàmthiếtlậpsaochépngầmđịnhmàphảigọihàmthiếtlậpsaochéptờngminh.4.4.34.4.34.4.34.4.3KhaiKhaiKhaiKhaibbbbááááoooovvvvààààđịđịđịđịnhnhnhnhnghnghnghnghĩĩĩĩaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppttttờờờờngngngngminhminhminhminhDDDDạạạạngngngngccccủủủủaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppXétcácđốitợngthuộclớppoint.Câulệnhpointq=p;sẽgọiđếnhàmthiếtlậpsaochép.Nhnhậnxéttrongphầntrêntacóthểviếttheocáchkhácnhsau:pointq(p);Từcáchviếttrêncóthểchorằngdạngcủahàmthiếtlậpsaochépcholớppointcóthểlà:Ngônng C++ -6 5- VVVVííííddddụụụụ3.73.73.73.7/*point5.cpp*//*point5.cpp*//*point5.cpp*//*point5.cpp*/#include<iostream.h>#include<conio.h>/*địnhnghĩalớppoint*/classpoint{/*khaibáocácthànhphầndữliệu*/intx;inty;public:/*khaibáocácthànhphầnhàm*/point(intox,intoy){x=ox;y=oy;}/*hàmthiếtlập*/voidmove(intdx,intdy);voiddisplay();};voidpoint::move(intdx,intdy){x+=dx;y+=dy;}voidpoint::display(){cout<<Toado:<<x<<""<<y<<"\n";}voidmain(){clrscr();pointa(5,2);/*Sửdụnghàmthiếtlập*/a.display();a.move (-2 ,4);a.display();Ngônng C++ -6 7- };pointa(1);/*Lỗivìthamsốkhôngphùhợpvớihàmthiếtlập*/pointb;/*Đúng,thamsốphùhợpvớihàmthiếtlậpkhôngthamsố*/pointc(2,3);/*Đúng,thamsốphùhợpvớihàmthiếtlậpthứhai,cóhaithamsố*/16.Hàmthiếtlậpcóthểđợckhaibáovớicácthamsốcógiátrịngầmđịnh.Xétvídụsau:/*Địnhnghĩalạilớppoint*/classpoint{intx,y;public:point(intox,intoy=0){x=ox;y=oy;}/*hàmthiếtlậpcóhaithamsố*/voidmove(int,int);voiddisplay();};pointa;/*Lỗi:khôngcóhàmthiếtlậpngầmđịnhhoặchàmthiếtlậpvớicácthamsốcógiátrịngầmđịnh*/pointb(1);//Đốisốthứhainhậngiátrị0pointc(2,3);//ĐúngNhậnxétTrongvídụtrên,chỉthị:pointb(1);cóthểđợcthaythếbằngcáchviếtkhácnhsau:pointb=1;Ngônng C++ -5 8- #include<iostream.h>#include<conio.h>classpoint{intx,y;public:/*địnhnghĩachồngcáchàmthànhphầninitvàdisplay*/voidinit();voidinit(int);voidinit(int,int);voiddisplay();voiddisplay(char*);};voidpoint::init(){x=y=0;}voidpoint::init(intabs){x=abs;y=0;}voidpoint::int(intabs,intord){x=abs;y=ord;}voidpoint::display(){cout<<"Toado:"<<x<<""<<y<<"\n";}voidpoint::display(char*mesg){cout<<mesg;Ng«nng C++ -5 4- cout<<"Dientichtamgiac:"<<dientich()<<"\n";switch(loaitg()){case1:cout<<"Tamgiacdeu\n";break;case2:cout<<"Tamgiacvuongcan\n";break;case3:cout<<"Tamgiaccan\n";break;case4:cout<<"Tamgiacvuong\n";break;default:cout<<"Tamgiacthuong\n";break;}}floattamgiac::dientich(){return(0.25*sqrt((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c)));}inttamgiac::loaitg(){if(a==b||b==c||c==a)if(a==b&&b==c)return1;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return2;elsereturn3;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return4;elsereturn5;}voidmain(){clrscr();tamgiactg;tg.nhap();tg.in();Ngônng C++ -4 2- Sovớilậptrìnhhớngđốitợngthuầntuý,cáccàiđặtcụthểcủađốitợngtrongC++linhđộnghơnmộtchút,bằngcáchchophépchỉchedấumộtbộphậndữliệucủađốitợngvàmởrộnghơnkhảnăngtruynhậpđếncácthànhphầnriêngcủađốitợng.Kháiniệmlớpchínhlàcơsởchocáclinhđộ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ừutợ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ínhkhaibáomộtbiếncókiểulớp.2.2.2.2.LLLLớớớớpppp2.12.12.12.1KhaiKhaiKhaiKhaibbbbááááoooollllớớớớppppTừquanđiểmcủalậptrìnhcấutrúc,lớplàmộtkiểudữliệutựđịnhnghĩ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ệmchothấ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đếntrongcácphầnsau.Đểdễhìnhdungxétmộtvídụvềkhaibáolớpđiểmtrongmặtphẳng.Trongvídụnàytacóđềcậpđếnmộtvàikhíacạnhliênquanđếnkhaibáolớp,đốitợngvàsửdụngchúng.classclassclassclass<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đốitợng>};<địnhnghiÃcủacáchàmthànhphầnchađợcđịnhnghĩabêntrongkhaibáolớp> ... Ngônng C++ -4 1- 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ợnghoá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ộtsự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ấutrú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ốthaotá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đốitợ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ộcgiữacácđốitợngvàngờisửdụng.Tacónhậnxét:Lờigọiđếnmộtphơ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đổitoạđộđốitợngđiểmpchỉlàmảnhhởngđếncácthànhphầntoạđộtrongpchứkhôngthểthayđổiđợcnộidungcủamộtđốitợngđiểmqkhác.Môtảđốitợngđiểm{//dữliệuintx,y;//phơngthứcvoidinit(intox,intoy);voidmove(intdx,intdy);voiddisplay();};Hình3.1MôtảcácđốitợngđiểmNgônng C++ -5 1- Tấtnhiên,theonguyêntắcđónggói,khônggántrịchocácthànhphầndữ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àmmainsẽcóthểgâylỗibiêndịchnếutrongchơngtrìnhkhôngcóhàmtựdovớitêninit.2.1.52.1.52.1.52.1.5PhPhPhPhạạạạmmmmvivivivillllớớớớppppPhạmvichỉraphầnchơngtrìnhtrongđócóthểtruyxuấtđếnmộtđốitợ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ạmvilàđể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ântheoý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ớpconcháu,bạnbèvàhọhàng(Xemthêmchơng5-Kếthừavàcácmụctiếpsauđểhiểurõhơn).2.1.62.1.62.1.62.1.6TTTTừừừừkhokhokhokhoááááxxxxááááccccđịđịđịđịnhnhnhnhthuthuthuthuộộộộccccttttíííínhnhnhnhtruytruytruytruyxuxuxuxuấấấấttttTrongphầnnàytanóitớivaitròcủahaitừkhoáprivateprivateprivateprivatevàpublicpublicpublicpublic - 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ànhphầncủamộtlớpnàođótừbênngoàiphạmvilớp.Tronglớppointcóhaithànhphầndữliệuvàbathànhphầnhàm.CácthànhphầndữliệuđợckhaibáovớinhÃnlàprivate,private,private,private,còncáchàmthànhvớinhÃnpublicpublicpublicpublic.privateprivateprivateprivatevàpublicpublicpublicpubliclàcáctừkhoáxácđịnhthuộctínhtruyxuất.Mọithànhphầnđợcliệtkêtrongphầnpublicpublicpublicpublicđềucóthểtruyxuấttrongbấtkỳhàmnào.NhữngNgônng C++ -8 3- Ngợclại,hàmthiếtlậpthựchiệnđồngthờihainhiệmvụ:tạođốitợngvàsaochépnộidungtừmộtđốitợngđÃcósangđốitợngmớitạorađó.Ngoàitìnhhuốngtrênđây,còncóhaitrờnghợpcầndùnghàmthiếtlậpsaochép:truyềnđốitợngchohàmbằngthamtrịhoặchàmtrảvềmộtđốitợngnhằmtạomộtđốitợnggiốnghệtmộtđốitợngcùnglớpđÃcótrớcđó.Trongphầnsauchúngtasẽcóvídụminhhoạchocáctrìnhbàynày.4.4.24.4.24.4.24.4.2HHHHààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppngngngngầầầầmmmmđịđịđịđịnhnhnhnhGiốngnhhàmthiếtlậpngầmđịnh(hàmthiếtlậpkhôngthamsố),nếukhôngđợcmôtảtờngminh,sẽcómộthàmthiếtlậpsaochépngầmđịnhdochơngtrìnhdịchcungcấpnhằmđảmbảotínhđúngđắncủachơngtrìnhtrongcáctìnhhuốngcầnđếnhàmthiếtlập.Nhvậy,trongkhaibáocủamộtlớpcóítnhấthaihàmthiếtlậpngầmđịnh:hàmthiếtlậpngầmđịnhvàhàmthiếtlậpsaochépngầmđịnh.Dolàmộthàmđợctạoratựđộngnênhàmthiếtlậpsaochépngầmđịnhcũngchỉthựchiệnnhữngthaotáctốithiểu(ngầmđịnh):tạogiátrịcủacácthuộctínhtrongđốitợngmớibằngcácgiátrịcủacácthuộctínhtơngứngtrongđốitợngcũ.Bạnđọccóthểxemlạiphần3củachơngđểhiểurõhơn.Nóichung,vớicáclớpkhôngkhaibáocácthànhphầndữliệuđộngthìchỉcầndùnghàmthiếtlậpsaochépngầmđịnhlàđủ.Vấnđềsẽkhácđikhicầnđếncácthaotácquảnlýbộnhớđộngtrongcácđốitợng.Trongtrờnghợpnàykhôngđợcdùnghàmthiếtlậpsaochépngầmđịnhmàphảigọihàmthiếtlậpsaochéptờngminh.4.4.34.4.34.4.34.4.3KhaiKhaiKhaiKhaibbbbááááoooovvvvààààđịđịđịđịnhnhnhnhnghnghnghnghĩĩĩĩaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppttttờờờờngngngngminhminhminhminhDDDDạạạạngngngngccccủủủủaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppXétcácđốitợngthuộclớppoint.Câulệnhpointq=p;sẽgọiđếnhàmthiếtlậpsaochép.Nhnhậnxéttrongphầntrêntacóthểviếttheocáchkhácnhsau:pointq(p);Từcáchviếttrêncóthểchorằngdạngcủahàmthiếtlậpsaochépcholớppointcóthểlà:Ngônng C++ -6 5- VVVVííííddddụụụụ3.73.73.73.7/*point5.cpp*//*point5.cpp*//*point5.cpp*//*point5.cpp*/#include<iostream.h>#include<conio.h>/*địnhnghĩalớppoint*/classpoint{/*khaibáocácthànhphầndữliệu*/intx;inty;public:/*khaibáocácthànhphầnhàm*/point(intox,intoy){x=ox;y=oy;}/*hàmthiếtlập*/voidmove(intdx,intdy);voiddisplay();};voidpoint::move(intdx,intdy){x+=dx;y+=dy;}voidpoint::display(){cout<<Toado:<<x<<""<<y<<"\n";}voidmain(){clrscr();pointa(5,2);/*Sửdụnghàmthiếtlập*/a.display();a.move (-2 ,4);a.display();Ngônng C++ -6 7- };pointa(1);/*Lỗivìthamsốkhôngphùhợpvớihàmthiếtlập*/pointb;/*Đúng,thamsốphùhợpvớihàmthiếtlậpkhôngthamsố*/pointc(2,3);/*Đúng,thamsốphùhợpvớihàmthiếtlậpthứhai,cóhaithamsố*/16.Hàmthiếtlậpcóthểđợckhaibáovớicácthamsốcógiátrịngầmđịnh.Xétvídụsau:/*Địnhnghĩalạilớppoint*/classpoint{intx,y;public:point(intox,intoy=0){x=ox;y=oy;}/*hàmthiếtlậpcóhaithamsố*/voidmove(int,int);voiddisplay();};pointa;/*Lỗi:khôngcóhàmthiếtlậpngầmđịnhhoặchàmthiếtlậpvớicácthamsốcógiátrịngầmđịnh*/pointb(1);//Đốisốthứhainhậngiátrị0pointc(2,3);//ĐúngNhậnxétTrongvídụtrên,chỉthị:pointb(1);cóthểđợcthaythếbằngcáchviếtkhácnhsau:pointb=1;Ngônng C++ -5 8- #include<iostream.h>#include<conio.h>classpoint{intx,y;public:/*địnhnghĩachồngcáchàmthànhphầninitvàdisplay*/voidinit();voidinit(int);voidinit(int,int);voiddisplay();voiddisplay(char*);};voidpoint::init(){x=y=0;}voidpoint::init(intabs){x=abs;y=0;}voidpoint::int(intabs,intord){x=abs;y=ord;}voidpoint::display(){cout<<"Toado:"<<x<<""<<y<<"\n";}voidpoint::display(char*mesg){cout<<mesg;Ng«nng C++ -5 4- cout<<"Dientichtamgiac:"<<dientich()<<"\n";switch(loaitg()){case1:cout<<"Tamgiacdeu\n";break;case2:cout<<"Tamgiacvuongcan\n";break;case3:cout<<"Tamgiaccan\n";break;case4:cout<<"Tamgiacvuong\n";break;default:cout<<"Tamgiacthuong\n";break;}}floattamgiac::dientich(){return(0.25*sqrt((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c)));}inttamgiac::loaitg(){if(a==b||b==c||c==a)if(a==b&&b==c)return1;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return2;elsereturn3;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return4;elsereturn5;}voidmain(){clrscr();tamgiactg;tg.nhap();tg.in();Ngônng C++ -4 2- Sovớilậptrìnhhớngđốitợngthuầntuý,cáccàiđặtcụthểcủađốitợngtrongC++linhđộnghơnmộtchút,bằngcáchchophépchỉchedấumộtbộphậndữliệucủađốitợngvàmởrộnghơnkhảnăngtruynhậpđếncácthànhphầnriêngcủađốitợng.Kháiniệmlớpchínhlàcơsởchocáclinhđộ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ừutợ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ínhkhaibáomộtbiếncókiểulớp.2.2.2.2.LLLLớớớớpppp2.12.12.12.1KhaiKhaiKhaiKhaibbbbááááoooollllớớớớppppTừquanđiểmcủalậptrìnhcấutrúc,lớplàmộtkiểudữliệutựđịnhnghĩ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ệmchothấ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đếntrongcácphầnsau.Đểdễhìnhdungxétmộtvídụvềkhaibáolớpđiểmtrongmặtphẳng.Trongvídụnàytacóđềcậpđếnmộtvàikhíacạnhliênquanđếnkhaibáolớp,đốitợngvàsửdụngchúng.classclassclassclass<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đốitợng>};<địnhnghiÃcủacáchàmthànhphầnchađợcđịnhnghĩabêntrongkhaibáolớp> ... Ngônng C++ -4 1- 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ợnghoá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ộtsự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ấutrú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ốthaotá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đốitợ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ộcgiữacácđốitợngvàngờisửdụng.Tacónhậnxét:Lờigọiđếnmộtphơ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đổitoạđộđốitợngđiểmpchỉlàmảnhhởngđếncácthànhphầntoạđộtrongpchứkhôngthểthayđổiđợcnộidungcủamộtđốitợngđiểmqkhác.Môtảđốitợngđiểm{//dữliệuintx,y;//phơngthứcvoidinit(intox,intoy);voidmove(intdx,intdy);voiddisplay();};Hình3.1MôtảcácđốitợngđiểmNgônng C++ -5 1- Tấtnhiên,theonguyêntắcđónggói,khônggántrịchocácthànhphầndữ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àmmainsẽcóthểgâylỗibiêndịchnếutrongchơngtrìnhkhôngcóhàmtựdovớitêninit.2.1.52.1.52.1.52.1.5PhPhPhPhạạạạmmmmvivivivillllớớớớppppPhạmvichỉraphầnchơngtrìnhtrongđócóthểtruyxuấtđếnmộtđốitợ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ạmvilàđể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ântheoý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ớpconcháu,bạnbèvàhọhàng(Xemthêmchơng5-Kếthừavàcácmụctiếpsauđểhiểurõhơn).2.1.62.1.62.1.62.1.6TTTTừừừừkhokhokhokhoááááxxxxááááccccđịđịđịđịnhnhnhnhthuthuthuthuộộộộccccttttíííínhnhnhnhtruytruytruytruyxuxuxuxuấấấấttttTrongphầnnàytanóitớivaitròcủahaitừkhoáprivateprivateprivateprivatevàpublicpublicpublicpublic - 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ànhphầncủamộtlớpnàođótừbênngoàiphạmvilớp.Tronglớppointcóhaithànhphầndữliệuvàbathànhphầnhàm.CácthànhphầndữliệuđợckhaibáovớinhÃnlàprivate,private,private,private,còncáchàmthànhvớinhÃnpublicpublicpublicpublic.privateprivateprivateprivatevàpublicpublicpublicpubliclàcáctừkhoáxácđịnhthuộctínhtruyxuất.Mọithànhphầnđợcliệtkêtrongphầnpublicpublicpublicpublicđềucóthểtruyxuấttrongbấtkỳhàmnào.NhữngNgônng C++ -8 3- Ngợclại,hàmthiếtlậpthựchiệnđồngthờihainhiệmvụ:tạođốitợngvàsaochépnộidungtừmộtđốitợngđÃcósangđốitợngmớitạorađó.Ngoàitìnhhuốngtrênđây,còncóhaitrờnghợpcầndùnghàmthiếtlậpsaochép:truyềnđốitợngchohàmbằngthamtrịhoặchàmtrảvềmộtđốitợngnhằmtạomộtđốitợnggiốnghệtmộtđốitợngcùnglớpđÃcótrớcđó.Trongphầnsauchúngtasẽcóvídụminhhoạchocáctrìnhbàynày.4.4.24.4.24.4.24.4.2HHHHààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppngngngngầầầầmmmmđịđịđịđịnhnhnhnhGiốngnhhàmthiếtlậpngầmđịnh(hàmthiếtlậpkhôngthamsố),nếukhôngđợcmôtảtờngminh,sẽcómộthàmthiếtlậpsaochépngầmđịnhdochơngtrìnhdịchcungcấpnhằmđảmbảotínhđúngđắncủachơngtrìnhtrongcáctìnhhuốngcầnđếnhàmthiếtlập.Nhvậy,trongkhaibáocủamộtlớpcóítnhấthaihàmthiếtlậpngầmđịnh:hàmthiếtlậpngầmđịnhvàhàmthiếtlậpsaochépngầmđịnh.Dolàmộthàmđợctạoratựđộngnênhàmthiếtlậpsaochépngầmđịnhcũngchỉthựchiệnnhữngthaotáctốithiểu(ngầmđịnh):tạogiátrịcủacácthuộctínhtrongđốitợngmớibằngcácgiátrịcủacácthuộctínhtơngứngtrongđốitợngcũ.Bạnđọccóthểxemlạiphần3củachơngđểhiểurõhơn.Nóichung,vớicáclớpkhôngkhaibáocácthànhphầndữliệuđộngthìchỉcầndùnghàmthiếtlậpsaochépngầmđịnhlàđủ.Vấnđềsẽkhácđikhicầnđếncácthaotácquảnlýbộnhớđộngtrongcácđốitợng.Trongtrờnghợpnàykhôngđợcdùnghàmthiếtlậpsaochépngầmđịnhmàphảigọihàmthiếtlậpsaochéptờngminh.4.4.34.4.34.4.34.4.3KhaiKhaiKhaiKhaibbbbááááoooovvvvààààđịđịđịđịnhnhnhnhnghnghnghnghĩĩĩĩaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppttttờờờờngngngngminhminhminhminhDDDDạạạạngngngngccccủủủủaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppXétcácđốitợngthuộclớppoint.Câulệnhpointq=p;sẽgọiđếnhàmthiếtlậpsaochép.Nhnhậnxéttrongphầntrêntacóthểviếttheocáchkhácnhsau:pointq(p);Từcáchviếttrêncóthểchorằngdạngcủahàmthiếtlậpsaochépcholớppointcóthểlà:Ngônng C++ -6 5- VVVVííííddddụụụụ3.73.73.73.7/*point5.cpp*//*point5.cpp*//*point5.cpp*//*point5.cpp*/#include<iostream.h>#include<conio.h>/*địnhnghĩalớppoint*/classpoint{/*khaibáocácthànhphầndữliệu*/intx;inty;public:/*khaibáocácthànhphầnhàm*/point(intox,intoy){x=ox;y=oy;}/*hàmthiếtlập*/voidmove(intdx,intdy);voiddisplay();};voidpoint::move(intdx,intdy){x+=dx;y+=dy;}voidpoint::display(){cout<<Toado:<<x<<""<<y<<"\n";}voidmain(){clrscr();pointa(5,2);/*Sửdụnghàmthiếtlập*/a.display();a.move (-2 ,4);a.display();Ngônng C++ -6 7- };pointa(1);/*Lỗivìthamsốkhôngphùhợpvớihàmthiếtlập*/pointb;/*Đúng,thamsốphùhợpvớihàmthiếtlậpkhôngthamsố*/pointc(2,3);/*Đúng,thamsốphùhợpvớihàmthiếtlậpthứhai,cóhaithamsố*/16.Hàmthiếtlậpcóthểđợckhaibáovớicácthamsốcógiátrịngầmđịnh.Xétvídụsau:/*Địnhnghĩalạilớppoint*/classpoint{intx,y;public:point(intox,intoy=0){x=ox;y=oy;}/*hàmthiếtlậpcóhaithamsố*/voidmove(int,int);voiddisplay();};pointa;/*Lỗi:khôngcóhàmthiếtlậpngầmđịnhhoặchàmthiếtlậpvớicácthamsốcógiátrịngầmđịnh*/pointb(1);//Đốisốthứhainhậngiátrị0pointc(2,3);//ĐúngNhậnxétTrongvídụtrên,chỉthị:pointb(1);cóthểđợcthaythếbằngcáchviếtkhácnhsau:pointb=1;Ngônng C++ -5 8- #include<iostream.h>#include<conio.h>classpoint{intx,y;public:/*địnhnghĩachồngcáchàmthànhphầninitvàdisplay*/voidinit();voidinit(int);voidinit(int,int);voiddisplay();voiddisplay(char*);};voidpoint::init(){x=y=0;}voidpoint::init(intabs){x=abs;y=0;}voidpoint::int(intabs,intord){x=abs;y=ord;}voidpoint::display(){cout<<"Toado:"<<x<<""<<y<<"\n";}voidpoint::display(char*mesg){cout<<mesg;Ng«nng C++ -5 4- cout<<"Dientichtamgiac:"<<dientich()<<"\n";switch(loaitg()){case1:cout<<"Tamgiacdeu\n";break;case2:cout<<"Tamgiacvuongcan\n";break;case3:cout<<"Tamgiaccan\n";break;case4:cout<<"Tamgiacvuong\n";break;default:cout<<"Tamgiacthuong\n";break;}}floattamgiac::dientich(){return(0.25*sqrt((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c)));}inttamgiac::loaitg(){if(a==b||b==c||c==a)if(a==b&&b==c)return1;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return2;elsereturn3;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return4;elsereturn5;}voidmain(){clrscr();tamgiactg;tg.nhap();tg.in();Ngônng C++ -4 2- Sovớilậptrìnhhớngđốitợngthuầntuý,cáccàiđặtcụthểcủađốitợngtrongC++linhđộnghơnmộtchút,bằngcáchchophépchỉchedấumộtbộphậndữliệucủađốitợngvàmởrộnghơnkhảnăngtruynhậpđếncácthànhphầnriêngcủađốitợng.Kháiniệmlớpchínhlàcơsởchocáclinhđộ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ừutợ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ínhkhaibáomộtbiếncókiểulớp.2.2.2.2.LLLLớớớớpppp2.12.12.12.1KhaiKhaiKhaiKhaibbbbááááoooollllớớớớppppTừquanđiểmcủalậptrìnhcấutrúc,lớplàmộtkiểudữliệutựđịnhnghĩ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ệmchothấ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đếntrongcácphầnsau.Đểdễhìnhdungxétmộtvídụvềkhaibáolớpđiểmtrongmặtphẳng.Trongvídụnàytacóđềcậpđếnmộtvàikhíacạnhliênquanđếnkhaibáolớp,đốitợngvàsửdụngchúng.classclassclassclass<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đốitợng>};<địnhnghiÃcủacáchàmthànhphầnchađợcđịnhnghĩabêntrongkhaibáolớp> Ngônng C++ -7 2- a.display();a.move (-2 ,4);a.display();pointb[10];/*Trongtrờnghợpnàycácđốitợngthànhphầncủabđợctạoranhờhàmthiếtlậpđợcgọivớihaithamsốcógiátrịngầmđịnhlà1và0.*/getch();}4.1.44.1.44.1.44.1.4ConConConContrtrtrtrỏỏỏỏđốđốđốđốiiiittttợợợợngngngngContrỏđốitợngđợckhaibáonhsau:point*ptr;Contrỏđốitợngcóthểnhậngiátrịlàđịachỉcủacácđốitợngcócùngkiểulớp:ptr=&a;Khiđócóthểgọicáchàmthànhphầncủalớppointthôngquacontrỏnhsau:ptr->display();ptr->move (-2 ,3);Khidùngtoántửnewnewnewnewcấpphátmộtđốitợngđộng,hàmthiếtlậpcũngđợcgọi,dovậycầncungcấpdanhsáchcácthamsố.Chẳnghạn,giảsửtronglớppointcómộthàmthiếtlậphaithamsố,khiđócâulệnhsau:ptr=newpoint(3,2);sẽxincấpphátmộtđốitợngđộngvớihaithànhphầnxvàynhậngiátrịtơngứnglà2và3.Kếtquảnàyđợcminhchứngqualờigọihàm:ptr->display();Toado:23Ngônng C++ -4 9- classpoint{/*khaibáocácthànhphầndữliệuprivate*/private:intx,y;/*khaibáocáchàmthànhphầnpublic*/public:/*Địnhnghĩahàmthànhphầnbêntrongkhaibáolớp*/voidinit(intox,intoy);voidmove(intdx,intdy);voiddisplay();};#endifTệpchơngtrìnhnguồn/*point2.cpp*//*point2.cpp*//*point2.cpp*//*point2.cpp*//*Tậptinchơngtrình,địnhnghĩavàsửdụngcáchàmthànhphầntronglớppointđợckhaibáotrongtậptintiêuđềpoint.h*/#includepoint.h/*chènđịnhnghĩalớppointvàochơngtrình*/#include<conio.h>/*địnhnghĩacáchàmthànhphầnbênngoàikhaibáolớp*/voidpoint::init(intox,intoy){cout<<"Hamthanhphaninit\n";x=ox;y=oy;/*x,ylàcácthànhphầncủađốitợnggọihàmthànhphần*/}voidpoint::move(intdx,intdy){cout<<"Hamthanhphanmove\n";x+=dx;y+=dy;}Ngônng C++ -4 8- pointp;p.init(2,4);/*gọihàmthànhphầntừđốitợng*/p.display();p.move(1,2);p.display();getch();}HamthanhphaninitHamthanhphandisplayToado:24HamthanhphanmoveHamthanhphandisplayToado:36Khiđịnhnghĩahàmthànhphầnởngoàilớp,dòngtiêuđềcủahàmthànhphầnphảichứatêncủalớpcóhàmlàthànhviêntiếptheolàtoántửđịnhphạmvi::.Đólàcáchđểphânbiệthàmthànhphầnvớicáchàmtựdo,đồngthờicònchophéphailớpkhácnhaucóthểcócáchàmthànhphầncùngtên.Cóthểđặtđịnhnghĩahàmthànhphầntrongcùngtậptinkhaibáolớphoặctrongmộttậptinkhác.Vídụsauđâysauđâylàmộtcảibiênkháctừpoint.cpp,trongđótađặtriêngkhaibáolớppointtrongmộttệptiêuđề.Tệptiêuđềsẽđợcthamchiếutớitrongtệpchơngtrìnhpoint2.cppchứađịnhnghĩacáchàmthànhphầncủalớppoint.VVVVííííddddụụụụ3.33.33.33.3Tệptiêuđề/*point.h*//*point.h*//*point.h*//*point.h*//*đâylàtậptintiêuđềkhaibáolớppointđợcgộpvàotệppoint2.cpp*/#ifndefpoint_h#definepoint_h#include<iostream.h>Ngônng C++ -5 0- voidpoint::display(){cout<<"Hamthanhphandisplay\n";cout<<"Toado:"<<x<<""<<y<<"\n";}voidmain(){clrscr();pointp;p.init(2,4);/*gọihàmthànhphầntừđốitợng*/p.display();p.move(1,2);p.display();getch();}HamthanhphaninitHamthanhphandisplayToado:24HamthanhphanmoveHamthanhphandisplayToado:362.1.42.1.42.1.42.1.4ThamThamThamThamssssốốốốngngngngầầầầmmmmđịđịđịđịnhnhnhnhtrongtrongtrongtrongllllờờờờiiiiggggọọọọiiiihhhhààààmmmmththththàààànhnhnhnhphphphphầầầầnnnnởđâykhôngnênnhầmlẫnkháiniệmnàyvớilờigọihàmvớithamsốcógiátrịngầmđịnh.Lờigọihàmthànhphầnluôncómộtvàchỉmộtthamsốngầmđịnhlàđốitợngthựchiệnlờigọihàm.Nhthếcácbiếnx,ytrongđịnhnghĩacủacáchàmpoint::init(),point::display(),haypoint::move()chínhlàcácbiếnthểhiệncủađốitợngdùnglàmthamsốngầmđịnhtronglờigọihàm.Dovậylờigọihàmthànhphần:p.init(2,4)sẽgán2chop.xcònp.ysẽcógiátrị4.Ngônng C++ -8 4- point(point);hoặcpoint(point&);Tanhậnthấydạngthứnhấtkhôngdùngđợcvìviệcgọinóđòihỏiphảitruyềnchohàmmộtđốitợngnhmộtthamtrị,dođógâyrađệquyvôhạnlần.VớidạngthứhaitađÃthiếtlậpmộtthamchiếutớiđốitợngnhmộtthamsốhìnhthứctruyềnchohàm,nêncóthểchấpnhậnđợc.Dạngkhaibáocủahàmthiếtlậplà:trongđótừkhoáconsttrongkhaibáothamsốhìnhthứcchỉnhằmngăncấmmọithayđổinộidungcủathamsốtruyềnchohàm.Chơngtrìnhpoint10.cppsauđâybổsungthêmhàmthiếtlậpsaochépvàolớppoint.VVVVííííddddụụụụ3.143.143.143.14/*point10.cpp*//*point10.cpp*//*point10.cpp*//*point10.cpp*/#include<conio.h>#include<iostream.h>/*địnhnghĩalớppoint*/classpoint{/*khaibáocácthànhphầndữliệu*/intx;inty;public:/*khaibáocácthànhphầnhàm*/point(intox=1,intoy=0){cout<<"Taodoituong:"<<this<<endl;cout<<"Dunghamthietlaphaithamso\n";point(point&);hoặcpoint(constpoint&);Ng«nng C++ -8 5- x=ox;y=oy;}/*HµmthiÕtlËpsaochÐp*/point(point&p){cout<<"Taodoituong:"<<this<<endl;cout<<"Dunghamthietlapsaochep\n";x=p.x;y=p.y;}voidmove(intdx,intdy){x+=dx;y+=dy;}voiddisplay();};voidpoint::display(){cout<<"Toado:"<<x<<""<<y<<"\n";}pointfct(pointa){pointb=a;b.move(2,3);returnb;}voidmain(){clrscr();pointa(5,2);a.display();pointb=fct(a);b.display();getch();Ng«nng C++ -7 9- for(i=0;i<n;i++){cout<<"Toadothu"<<i+1<<":";cin>>v[i];}}vector::vector(intsize){inti;cout<<"Sudunghamthietlap1thamso\n";cout<<"Taodoituongtai"<<this<<endl;n=size;cout<<"Sochieu:"<<size<<endl;v=newfloat[n];cout<<"Xincapphatvungbonho"<<n<<"sothuctai"<<v<<endl;for(i=0;i<n;i++){cout<<"Toadothu"<<i+1<<":";cin>>v[i];}}vector::vector(intsize,float*a){inti;cout<<"Sudunghamthietlap2thamso\n";cout<<"Taodoituongtai"<<this<<endl;n=size;cout<<"Sochieu:"<<n<<endl;v=newfloat[n];cout<<"Xincapphatvungbonho"<<n<<"sothuctai"<<v<<endl;for(i=0;i<n;i++)Ngônng C++ -7 8- 4.34.34.34.3SSSSựựựựccccầầầầnnnnthithithithiếếếếttttccccủủủủaaaaccccáááácccchhhhààààmmmmthithithithiếếếếttttllllậậậậppppvvvvààààhuhuhuhuỷỷỷỷbbbbỏỏỏỏ-l-l-l-lớớớớppppvectorvectorvectorvectortrongtrongtrongtrongkhkhkhkhôôôôngngngnggiangiangiangiannnnnchichichichiềềềềuuuuTrênthựctế,vớicáclớpkhôngcócácthànhphầndữliệuđộngchỉcầnsửdụnghàmthiếtlậpvàhuỷbỏngầmđịnhlàđủ.Hàmthiếtlậpvàhuỷbỏdongờilậptrìnhtạorarấtcầnthiếtkhicáclớpchứacácthànhphầndữliệuđộng.KhitạođốitợnghàmthiếtlậpđÃxincấpphátmộtkhốibộnhớđộng,dođóhàmhuỷbỏphảigiảiphóngvùngnhớđÃđợccấppháttrớcđó.Vídụsauđâyminhhoạvaitròcủahàmhuỷbỏtrongtrờnghợplớpcócácthànhphầncấpphátđộng.VVVVííííddddụụụụ3.133.133.133.13/*vector.cpp*//*vector.cpp*//*vector.cpp*//*vector.cpp*/#include<iostream.h>#include<conio.h>classvector{intn;//sốchiềufloat*v;//vùngnhớtoạđộpublic:vector();//Hàmthiếtlậpkhôngthamsốvector(intsize);//Hàmthiếtlậpmộtthamsốvector(intsize,float*a);~vector();//Hàmhuỷbỏ,luônluônkhôngcóthamsốvoiddisplay();};vector::vector(){inti;cout<<"Taodoituongtai"<<this<<endl;cout<<"Sochieu:";cin>>n;v=newfloat[n];cout<<"Xincapphatvungbonho"<<n<<"sothuctai"<<v<<endl;ChChChChơơơơngngngng3333đốđốđốđốiiiittttợợợợngngngngvvvvààààllllớớớớpppp(Object(Object(Object(Object&&&&Class)Class)Class)Class)Mụcđíchchơngnày:1.Kháiniệmvềđónggóidữliệu.2.Khaibáovàsửdụngmộtlớp.3.Khaibáovàsửdụngđốitợng,contrỏđốitợng,thamchiếuđốitợng.4.Hàmthiếtlậpvàhàmhuỷbỏ.5.Khaibáovàsửdụnghàmthiếtlậpsaochép.6.Vaitròcủahàmthiếtlậpngầmđịnh.1.1.1.1.ĐốĐốĐốĐốiiiittttợợợợngngngngĐốitợnglàmộtkháiniệmtronglậptrìnhhớngđốitợngbiểuthịsựliênkếtgiữadữliệuvàcácthủtục(gọilàcácphơngthức)thaotáctrêndữliệuđó.Tacócôngthứcsau:ởđâychúngtahiểurằngđốitợngchínhlàcôngcụhỗtrợchosựđónggói.Sựđónggóilàcơchếliênkếtcáclệnhthaotácvàdữliệucóliênquan,giúpchocảhaiđợcantoàntránhđợcsựcanthiệptừbênngoàivàviệcsửdụngsai.Nhìnchungđịnhnghĩamộtđốitợngphứctạphơnsovớiđịnhnghĩacácbiếncấutrúcthôngthờng,bởilẽngoàiviệcmôtảcácthànhphầndữliệu,tacònphảixácđịnhđợccácthaotáctácđộnglênđốitợngđó.Hình2.1môtảcácđốitợngđiểmtrênmặtphẳng:Mỗiđốitợngđợcxácđịnhbởihaithànhphầntoạđộđợcbiểudiễnbởihaibiếnnguyên.Cácthaotáctácđộnglênđiểmbaogồmviệcxácđịnhtoạđộmộtđiểmtrênmặtphẳngtoạđộ(thểhiệnbằngviệcgángiátrịchohaithànhphầntoạđộ),thayđổitoạđộvàhiểnthịkếtquảlêntrênmặtphẳngtoạđộ(tơngtựnhviệcchấmđiểmtrênmặtphẳngđó).Lợiíchcủaviệcđónggóilàkhinhìntừbênngoài,mộtđốitợngchỉđợcbiếttớibởicácmôtảvềcácphơngthứccủanó,cáchthứccàiđặtcácĐốĐốĐốĐốiiiittttợợợợngngngng====DDDDữữữữlilililiệệệệu+Phu+Phu+Phu+PhơơơơngngngngththththứứứứccccNg«nng C++ -8 9- inti;cout<<"Doituongtai:"<<this<<endl;cout<<"Sochieu:"<<n<<endl;for(i=0;i<n;i++)cout<<v[i]<<"";cout<<"\n";}voidmain(){clrscr();vectors1;//gäihµmthiÕtlËpkh«ngthamsès1.display();vectors2(4);//4gi¸trÞs2.display();floata[3]={1,2,3};vectors3(3,a);s3.display();vectors4=s1;//hµmthiÕtlËpsaochÐps4.display();getch();}Taodoituongtai0xfff2Sochieu:3Xincapphatvungbonho3sothuctai0x142cToadothu1:1Toadothu2:2Toadothu3:3Doituongtai:0xfff2Sochieu:3123Ng«nng C++ -8 1- Toadothu1:2Toadothu2:3Toadothu3:2Doituongtai:0xfff2Sochieu:3232Sudunghamthietlap1thamsoTaodoituongtai0xffeeSochieu:4Xincapphatvungbonho4sothuctai0x13dcToadothu1:3Toadothu2:2Toadothu3:3Toadothu4:2Doituongtai:0xffeeSochieu:43232Sudunghamthietlap2thamsoTaodoituongtai0xffeaSochieu:3Xincapphatvungbonho3sothuctai0x13f0Doituongtai:0xffeaSochieu:3123Doituongtai:0xfff2Sochieu:3232Giaiphong0x13f0cuadoituongtai0xffeaNgônng C++ -6 9- voiddisplay();};/*phânbiệtcáchàmthànhphầnvớicáchàmthôngthờngnhờtênlớpvàtoántử::*/voidpoint::move(intdx,intdy){x+=dx;y+=dy;}voidpoint::display(){cout<<Toado:<<x<<""<<y<<"\n";}voidmain(){pointa(5,2);//OKa.display();a.move (-2 ,4);a.display();pointb[10];//lỗivìkhôngcungcấpthôngsốcầnthiếtchohàmthiếtlập}Trongchơngtrìnhpoint6.cpp,lỗixảyravìtamuốntạotamờiđốitợngnhngkhôngcungcấpđủcácthamsốchohàmthiếtlậpcónhđÃđịnhnghĩa(ởđâytachađềcậpđếnhàmthiếtlậpsaochépngầmđịnh,nósẽđợctrìnhbàytrongphầnsau).Giảiquyếttìnhhuốngnàybằnghaicách:hoặcbỏluônhàmthiếtlậphaithamsốtrongkhaibáolớpnhngkhiđó,khaibáocủađốitợngasẽkhôngcònđúngnữa.Dovậytathờngsửdụnggiảiphápđịnhnghĩathêmmộthàmthiếtlậpkhôngthamsố:b.ĐịnhnghiÃhàmthiếtlậpkhôngthamsốVVVVííííddddụụụụ3.93.93.93.9/*point7.cpp*//*point7.cpp*//*point7.cpp*//*point7.cpp*/#include<iostream.h>#include<conio.h>classpoint{Ngônng C++ -7 6- };test::test(intn){num=n;cout<<line++<<.;cout<<"++Goihamthietlapvoinum="<<num<<"\n";}test::~test(){cout<<line++<<.;cout<<"...