Chương 7. Lớp và đối tượng doc

46 222 1
Chương 7. Lớp và đối tượng doc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ch ng 7. L p và đ i t ngươ ớ ố ượ CH NG 7ƯƠ LỚP VÀ ĐỐI TƯỢNG L p trình có c u trúc và l p trình h ng đ i t ngậ ấ ậ ướ ố ượ L p và đ i t ng ớ ố ượ Đ i c a ph ng th c - Con tr thisố ủ ươ ứ ỏ Hàm t o (contructor)ạ Hàm h y (destructor)ủ Các hàm tr c tuy n (inline)ự ế I. L P TRÌNH CÓ C U TRÚC VÀ L P TRÌNH H NG Đ I T NGẬ Ấ Ậ ƯỚ Ố ƯỢ 1. Ph ng pháp l p trình c u trúcươ ậ ấ − L p trình c u trúc là t ch c ch ng trình thành các ch ng trình con.ậ ấ ổ ứ ươ ươ Trong m t s ngôn ng nh PASCAL có 2 ki u ch ng trình con là thộ ố ữ ư ể ươ ủ t c và hàm, còn trong C++ ch có m t lo i ch ng trình con là hàm.ụ ỉ ộ ạ ươ − Hàm là m t đ n v ch ng trình đ c l p dùng đ th c hi n m t ph nộ ơ ị ươ ộ ậ ể ự ệ ộ ầ vi c nào đó nh : Nh p s li u, in k t qu hay th c hi n m t s côngệ ư ậ ố ệ ế ả ự ệ ộ ố vi c tính toán. Hàm c n có đ i và các bi n, m ng c c b dùng riêng choệ ầ ố ế ả ụ ộ hàm. − Vi c trao đ i d li u gi a các hàm th c hi n thông qua các đ i và cácệ ổ ữ ệ ữ ự ệ ố bi n toàn c c.ế ụ − M t ch ng trình c u trúc g m các c u trúc d li u (nh bi n, m ng,ộ ươ ấ ồ ấ ữ ệ ư ế ả b n ghi) và các hàm, th t c.ả ủ ụ − Nhi m v chính c a vi c t ch c thi t k ch ng trình c u trúc là tệ ụ ủ ệ ổ ứ ế ế ươ ấ ổ ch c ch ng trình thành các hàm, th t c.ứ ươ ủ ụ Ví d , ta xét yêu c u sau: Vi t ch ng trình nh p to đ (ụ ầ ế ươ ậ ạ ộ x,y) c a m t dãyủ ộ đi m, sau đó tìm m t c p đi m cách xa nhau nh t.ể ộ ặ ể ấ Trên t t ng c a l p trình c u trúc có th t ch c ch ng trình nh sau:ư ưở ủ ậ ấ ể ổ ứ ươ ư • S d ng 2 m ng th c toàn b ử ụ ả ự ộ x và y đ ch a to đ dãy đi m.ể ứ ạ ộ ể • Xây d ng 2 hàm:ự Hàm nhapsl dùng đ nh p to đ ể ậ ạ ộ n đi m, hàm này có m t đ i là bi nể ộ ố ế nguyên n và đ c khai báo nh sau:ượ ư void nhapsl(int n); 212 Ch ng 7. L p và đ i t ngươ ớ ố ượ Hàm do_dai dùng đ tính đ dài đo n th ng đi qua 2 đi m có ch s là ể ộ ạ ẳ ể ỉ ố i và j, nó đ c khai báo nh sau:ượ ư float do_dai(int i, int j); Ch ng trình C c a ví d trên đ c vi t nh sau:ươ ủ ụ ượ ế ư #include <stdio.h> #include <conio.h> #include <math.h> float x[100],y[100]; float do_dai(int i, int j) { return sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2)); } void nhapsl(int n) { int i; for (i=1; i<=n; ++i) { printf("\n Nhap toa do x, y cua diem thu %d : ",i); scanf(''%f%f",&x[i],&y[i]); } } void main() { int n, i, j, imax,jmax; float d, dmax; printf(''\n So diem N= ''); scanf(''%d'', &n); nhapsl(n); dmax=do_dai(1,2);imax=1; jmax=2; for(i=1; i<=n-1; ++i) for (j=i+1; j<=n; ++j) { d=do_dai(i,j); 213 Ch ng 7. L p và đ i t ngươ ớ ố ượ if (d>dmax) { dmax=d; imax=i; jmax=j; } } printf(''\nDoan thang lon nhat co do dai bang: %0.2f",dmax); printf(''\n Di qua 2 diem co chi so la %d va %d'',imax,jmax); getch(); } 2. Ph ng pháp l p trình h ng đ i t ngươ ậ ướ ố ượ Là l p trình có c u trúc + tr u t ng hóa d li u. Có nghĩa ch ng trình tậ ấ ừ ượ ữ ệ ươ ổ ch c d i d ng c u trúc. Tuy nhiên vi c thi t k ch ng trình s xoay quanh dứ ướ ạ ấ ệ ế ế ươ ẽ ữ li u, l y d li u làm trung tâm. Nghĩa là tr l i câu h i: Ch ng trình làm vi cệ ấ ữ ệ ả ờ ỏ ươ ệ v i nh ng đ i t ng d li u nào, trên các đ i t ng d li u này c n thao tác, th cớ ữ ố ượ ữ ệ ố ượ ữ ệ ầ ự hi n nh ng gì. T đó g n v i m i đ i t ng d li u m t s thao tác th c hiên cệ ữ ừ ắ ớ ỗ ố ượ ữ ệ ộ ố ự ố đ nh riêng c a đ i t ng d li u đó, đi u này s qui đ nh ch t ch h n nh ngị ủ ố ượ ữ ệ ề ẽ ị ặ ẽ ơ ữ thao tác nào đ c th c hi n trên đ i t ng d li u nào. Khác v i l p trình c uượ ự ệ ố ượ ữ ệ ớ ậ ấ trúc thu n túy, trong đó d li u đ c khai báo riêng r , tách r i v i thao tác x lý,ầ ữ ệ ượ ẽ ờ ớ ử do đó vi c x lý d li u th ng không th ng nh t khi ch ng trình đ c xâyệ ử ữ ệ ườ ố ấ ươ ượ d ng t nhi u l p trình viên khác nhau. ự ừ ề ậ T đó l p trình h ng đ i t ng đ c xây d ng d a trên đ c tr ng chính làừ ậ ướ ố ượ ượ ự ự ặ ư khái ni m đóng gói. Đóng gói là khái ni m trung tâm c a ph ng pháp l p trìnhệ ệ ủ ươ ậ h ng đ i t ng, trong đó d li u và các thao tác x lý nó s đ c qui đ nh tr cướ ố ượ ữ ệ ử ẽ ượ ị ướ và "đóng" thành m t "gói" th ng nh t, riêng bi t v i các d li u khác t o thànhộ ố ấ ệ ớ ữ ệ ạ ki u d li u v i tên g i là các l p. Nh v y m t l p không ch ch a d li u bìnhể ữ ệ ớ ọ ớ ư ậ ộ ớ ỉ ứ ữ ệ th ng nh các ki u d li u khác mà còn ch a các thao tác đ x lý d li u này.ườ ư ể ữ ệ ứ ể ử ữ ệ Các thao tác đ c khai báo trong gói d li u nào ch x lý d li u trong gói đó vàượ ữ ệ ỉ ử ữ ệ ng c l i d li u trong m t gói ch b tác đ ng, x lý b i thao tác đã khai báoượ ạ ữ ệ ộ ỉ ị ộ ử ở trong gói đó. Đi u này t o tính t p trung cao khi l p trình, m i đ i t ng trongề ạ ậ ậ ọ ố ượ m t l p s ch a cùng lo i d li u đ c ch đ nh và cùng đ c x lý b i các thaoộ ớ ẽ ứ ạ ữ ệ ượ ỉ ị ượ ử ở tác nh nhau. M i l p trình viên khi làm vi c v i d li u trong m t gói đ u sư ọ ậ ệ ớ ữ ệ ộ ề ử d ng các thao tác nh nhau đ x lý d li u trong gói đó. C++ cung c p cách th cụ ư ể ử ữ ệ ấ ứ đ t o m t c u trúc d li u m i th hi n các gói nói trên, c u trúc d li u nàyể ạ ộ ấ ữ ệ ớ ể ệ ấ ữ ệ đ c g i là ượ ọ l pớ . Đ minh ho các khái ni m v a nêu v kiêu d li u l p ta tr l i xét bài toánể ạ ệ ừ ề ữ ệ ớ ở ạ tìm đ dài l n nh t đi qua 2 đi m. Trong bài toán này ta g p m t th c th là dãyộ ớ ấ ể ặ ộ ự ể đi m. Các thành ph n d li u c a l p dãy đi m g m: ể ầ ữ ệ ủ ớ ể ồ 214 Ch ng 7. L p và đ i t ngươ ớ ố ượ • Bi n nguyên n là s đi m c a dãy ế ố ể ủ • Con tr ỏ x ki u th c tr đ n vùng nh ch a dãy hoành để ự ỏ ế ớ ứ ộ • Con trỏ y ki u th c tr đ n vùng nh ch a dãy tung đ ể ự ỏ ế ớ ứ ộ Các ph ng th c c n đ a vào theo yêu c u bài toán g m:ươ ứ ầ ư ầ ồ • Nh p to đ m t đi mậ ạ ộ ộ ể • Tính đ dài đo n th ng đi qua 2 đi mộ ạ ẳ ể D i đây là ch ng trình vi t theo thi t k h ng đ i t ng. ướ ươ ế ế ế ướ ố ượ #include <stdio.h> #include <conio.h> #include <math.h> #include <alloc.h> class daydiem { int n; float *x,*y; public: float do_dai(int i, int j) { return sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2)); } void nhapsl(void); }; void daydiem::nhapsl(void) { int i; printf(''\n So diem N= ''); scanf("%d'',&n); x = (float*)malloc((n+1)*sizeof(float)); y = (float*)malloc((n+1)*sizeof(float)); for (i=1; i<=n; ++i) { printf(''\n Nhap toa do x, y cua diem thu %d : '',i); 215 Ch ng 7. L p và đ i t ngươ ớ ố ượ scanf(''%f%f'',&x[i],&y[i]); } } void main() { clrscr(); daydiem p; p.nhapsl(); int n,i,j,imax,jmax; float d,dmax; n = p.n; dmax=p.do_dai(1,2);imax=1; jmax=2; for (i=1;i<=n-1;++i) for (j=i+1;j<=n;++j) { d=p.do_dai(i,j); if (d>dmax) { dmax=d; imax=i; jmax=j; } } printf(''\n Doan thang lon nhat co do dai bang: %0.2f",dmax); printf(''\n Di qua 2 diem co chi so la %d va %d" , imax,jmax); getch(); } II. L P VÀ Đ I T NG Ớ Ố ƯỢ Trong l p trình h ng đ i t ng, l p (class) là m t khái ni m r t quan tr ng,ậ ướ ố ượ ớ ộ ệ ấ ọ nó cho phép gi i quy t các v n đ ph c t p c a vi c l p trình. M t l p đ nả ế ấ ề ứ ạ ủ ệ ậ ộ ớ ơ (đ c đ nh nghĩa nh struct, union, ho c class) bao g m các hàm và d li u có liênượ ị ư ặ ồ ữ ệ quan. Các hàm này là các hàm thành ph n (member functon) hay còn là ph ngầ ươ th c (method), th hi n tác đ ng c a l p có th đ c th c hi n trên d li u c aứ ể ệ ộ ủ ớ ể ượ ự ệ ữ ệ ủ chính l p đó (data member).ớ 216 Ch ng 7. L p và đ i t ngươ ớ ố ượ Cũng gi ng nh c u trúc, l p có th xem nh m t ki u d li u. Vì v y l pố ư ấ ớ ể ư ộ ể ữ ệ ậ ớ còn g i là ki u đ i t ng và l p đ c dùng đ khai báo các bi n, m ng đ i t ngọ ể ố ượ ớ ượ ể ế ả ố ượ (nh th dùng ki u int đ khai báo các bi n m ng nguyên).ư ể ể ể ế ả Nh v y t m t l p có th t o ra (b ng cách khai báo) nhi u đ i t ngư ậ ừ ộ ớ ể ạ ằ ề ố ượ (bi n, m ng) khác nhau. M i đ i t ng có vùng nh riêng c a mình và vì v y taế ả ỗ ố ượ ớ ủ ậ cũng có th quan ni m l p chính là t p h p các đ i t ng cùng ki u.ể ệ ớ ậ ợ ố ượ ể 1. Khai báo l pớ Đ khai báo m t l p, ta s d ng t khoá class nh sau:ể ộ ớ ử ụ ừ ư class tên_l pớ { // Khai báo các thành ph n d li u (thu c tính)ầ ữ ệ ộ // Khai báo các ph ng th c (hàm)ươ ứ }; Chú ý: Vi c khai báo m t l p không chi m gi b nh , ch các đ i t ng c aệ ộ ớ ế ữ ộ ớ ỉ ố ượ ủ l p m i th c s chi m gi b nh .ớ ớ ự ự ế ữ ộ ớ Thu c tínhộ c a l p có th là các bi n, m ng, con tr có ki u chu n (int, float,ủ ớ ể ế ả ỏ ể ẩ char, char*, long, ) ho c ki u ngoài chu n đã đ nh nghĩa tr c (c u trúc, h p,ặ ể ẩ ị ướ ấ ợ l p, ). Thu c tính c a l p không th có ki u c a chính l p đó, nh ng có th làớ ộ ủ ớ ể ể ủ ớ ư ể con tr c a l p này, ví d :ỏ ủ ớ ụ class A { A x; //Không cho phép, vì x có ki u l p Aể ớ A* p ; //Cho phép , vì p là con tr ki u l p Aỏ ể ớ } ; 2. Khai báo các thành ph n c a l p (thu c tính và ph ng th c)ầ ủ ớ ộ ươ ứ 1. Các t khóa private và publicừ Khi khai báo các thành ph n d li u và ph ng th c có th dùng các t khoáầ ữ ệ ươ ứ ể ừ private và public đ quy đ nh ph m vi s d ng c a các thành ph n này. Trong đóể ị ạ ử ụ ủ ầ t khóa ừ private qui đ nh các thành ph n (đ c khai báo v i t khóa này) ch đ cị ầ ượ ớ ừ ỉ ượ s d ng bên trong l p (trong thân các ph ng th c c a l p). Các hàm bên ngoàiử ụ ớ ươ ứ ủ ớ l p (không ph i là ph ng th c c a l p) không đ c phép s d ng các thànhớ ả ươ ứ ủ ớ ượ ử ụ ph n này. Đ c tr ng này th hi n tính che gi u thông tin trong n i b c a l p, đầ ặ ư ể ệ ấ ộ ộ ủ ớ ể đ n đ c các thông tin này c n ph i thông qua chính các thành ph n hàm c a l pế ượ ầ ả ầ ủ ớ đó. Do v y thông tin có tính toàn v n cao và vi c x lý thông tin (d li u) nàyậ ẹ ệ ử ữ ệ mang tính th ng nh t h n và h u nh d li u trong các l p đ u đ c khai báo v iố ấ ơ ầ ư ữ ệ ớ ề ượ ớ 217 Ch ng 7. L p và đ i t ngươ ớ ố ượ t khóa này. Ng c l i v i private, các thành ph n đ c khai báo v i t khóaừ ượ ạ ớ ầ ượ ớ ừ public đ c phép s d ng c bên trong và bên ngoài l p, đi u này cho phép trongượ ử ụ ở ả ớ ề ch ng trình có th s d ng các hàm này đ truy nh p đ n d li u c a l p. Hi nươ ể ử ụ ể ậ ế ữ ệ ủ ớ ể nhiên n u các thành ph n d li u đã khai báo là privte thì các thành ph n hàm ph iế ầ ữ ệ ầ ả có ít nh t m t vài hàm đ c khai báo d ng public đ ch ng trình có th truy c pấ ộ ượ ạ ể ươ ể ậ đ c, n u không toàn b l p s b đóng kín và đi u này không giúp gì cho ch ngượ ế ộ ớ ẽ ị ề ươ trình. Do v y cách khai báo l p t ng đ i ph bi n là các thành ph n d li uậ ớ ươ ố ổ ế ầ ữ ệ đ c d ng private và thành ph n hàm d i d ng public. N u không quy đ nh cượ ở ạ ầ ướ ạ ế ị ụ th (không dùng các t khoá private và public) thì C++ hi u đó là private.ể ừ ể 2. Các thành ph n d li u (thu c tính)ầ ữ ệ ộ Đ c khai báo nh khai báo các thành ph n trong ki u c u trúc hay h p. Bìnhượ ư ầ ể ấ ợ th ng các thành ph n này đ c khai báo là private đ b o đ m tính gi u kín, b oườ ầ ượ ể ả ả ấ ả v an toàn d li u c a l p không cho phép các hàm bên ngoài xâm nh p vào các dệ ữ ệ ủ ớ ậ ữ li u này.ệ 3. Các ph ng th c (hàm thành viên)ươ ứ Th ng khai báo là public đ chúng có th đ c g i t i (s d ng) t cácườ ể ể ượ ọ ớ ử ụ ừ hàm khác trong ch ng trình.ươ Các ph ng th c có th đ c khai báo và đ nh nghĩa bên trong l p ho c chươ ứ ể ượ ị ớ ặ ỉ khai báo bên trong còn đ nh nghĩa c th c a ph ng th c có th đ c vi t bênị ụ ể ủ ươ ứ ể ượ ế ngoài. Thông th ng, các ph ng th c ng n đ c vi t (đ nh nghĩa) bên trong l p,ườ ươ ứ ắ ượ ế ị ớ còn các ph ng th c dài thì vi t bên ngoài l p.ươ ứ ế ớ M t ph ng th c b t kỳ c a m t l p, có th s d ng b t kỳ thành ph nộ ươ ứ ấ ủ ộ ớ ể ử ụ ấ ầ (thu c tính và ph ng th c) nào c a l p đó và b t kỳ hàm nào khác trong ch ngộ ươ ứ ủ ớ ấ ươ trình (vì ph m vi s d ng c a hàm là toàn ch ng trình).ạ ử ụ ủ ươ Giá tr tr v c a ph ng th c có th có ki u b t kỳ (chu n và ngoài chu n)ị ả ề ủ ươ ứ ể ể ấ ẩ ẩ Ví d sau s minh ho các đi u nói trên. Chúng ta s đ nh nghĩa l p đ mô tụ ẽ ạ ề ẽ ị ớ ể ả và x lý các đi m trên màn hình đ ho . L p đ c đ t tên là DIEM.ử ể ồ ạ ớ ượ ặ • Các thu c tính c a l p g m:ộ ủ ớ ồ int x ; // Hoành đ (c t)ộ ộ int y ; // Tung đ (hàng)ộ int m ; // M uầ • Các ph ng th c:ươ ứ Nh p d li u m t đi mậ ữ ệ ộ ể Hi n th m t đi mể ị ộ ể Ẩn m t đi mộ ể L p đi m đ c xây d ng nh sau:ớ ể ượ ự ư 218 Ch ng 7. L p và đ i t ngươ ớ ố ượ #include <iostream.h> #include <graphics.h> class DIEM { private: int x, y, m ; public: void nhapsl() ; void hien() ; void an() { putpixel(x, y, getbkcolor());} }; void DIEM::nhapsl() { cout <<"\n Nhap hoanh do (cot) va tung do (hang) cua diem: ''; cin >> x >> y ; cout << ''\n Nhap ma mau cua diem: ''; cin >> m ; } void DIEM::hien() { int mau_ht ; mau_ht = getcolor(); putpixel(x, y, m); setcolor(mau_ht); } Qua ví d trên có th rút ra m t s chú ý sau:ụ ể ộ ố + Trong c 3 ph ng th c (dù vi t trong hay vi t ngoài đ nh nghĩa l p) đ uả ươ ứ ế ế ị ớ ề đ c phép truy nh p đ n các thu c tính x, y và m c a l p.ượ ậ ế ộ ủ ớ + Các ph ng th c vi t bên trong đ nh nghĩa l p (nh ph ng th c an() )ươ ứ ế ị ớ ư ươ ứ đ c vi t nh m t hàm thông th ng.ượ ế ư ộ ườ + Khi xây d ng các ph ng th c bên ngoài l p, c n dùng thêm tên l p vàự ươ ứ ớ ầ ớ toán t ph m vi :: đ t ngay tr c tên ph ng ph c đ quy đ nh rõ đây làử ạ ặ ướ ươ ứ ể ị ph ng th c c a l p nào.ươ ứ ủ ớ 219 Ch ng 7. L p và đ i t ngươ ớ ố ượ 3. Bi n, m ng và con tr đ i t ng ế ả ỏ ố ượ Nh đã nói trên, m t l p (sau khi đ như ở ộ ớ ị nghĩa) có th xem nh m t ki u đ iể ư ộ ể ố t ng và có th dùng đ khai báo các bi n, m ng đ i t ng. Cách khai báo bi n,ượ ể ể ế ả ố ượ ế m ng đ i t ng cũng gi ng nh khai báo bi n, m ng các ki uả ố ượ ố ư ế ả ể khác (nh int, float,ư c u trúc, h p, ), theo m u sau: ấ ợ ẫ Tên_l p danh sách đ i ; ớ ố Tên_l p danh sách m ng ; ớ ả Ví d s d ng DIEMụ ử ụ trên, ta có th khai báo các bi n, m ng DIEM nhở ể ế ả ư sau: DIEM d1, d2, d3 ; // Khai báo 3 bi n đ i t ng d1, d2, d3ế ố ượ DIEM d[20] ; // Khai báo m ng đ i t ng d g m 20 ph n tả ố ượ ồ ầ ử M i đ i t ng sau khi khai báo s đ c c p phát m t vùng nh riêng đỗ ố ượ ẽ ượ ấ ộ ớ ể ch a các thu c tính c a nó. Chú ý r ng s không có vùng nh riêng đ ch a cácứ ộ ủ ằ ẽ ớ ể ứ ph ng th c cho m i đ i t ng, các ph ng th c s đ c s d ng chung cho t tươ ứ ỗ ố ượ ươ ứ ẽ ượ ử ụ ấ c các đ i t ng cùng l p. Nh v y v b nh đ c c p phát thì đ i t ngả ố ượ ớ ư ậ ề ộ ớ ượ ấ ố ượ gi ng c u trúc. ố ấ Trong tr ng h p này:ườ ợ sizeof(d1) = sizeof(d2) = sizeof(d3) = 3*sizeof(int) = 6 sizeof(d) = 20*6 = 120 a. Thu c tính c a đ i t ngộ ủ ố ượ Trong ví d trên, m i đ i t ng d1, d2, d3 và m i ph n t d[i] đ u có 3ụ ỗ ố ượ ỗ ầ ử ề thu c tính là x, y, m. Chú ý là m i thu c tính đ u thu c v m t đ i t ng, vì v yộ ỗ ộ ề ộ ề ộ ố ượ ậ không th vi t tên thu c tính m t cách riêng r mà bao gi cũng ph i có tên đ iể ế ộ ộ ẽ ờ ả ố t ng điượ kèm, gi ng nh cách vi t trong c u trúc c aố ư ế ấ ủ C. Nói cách khác, cách vi tế thu c tính c a đ i t ng nh sau: ộ ủ ố ượ ư tên_đ i_t ng.Tên_thu c_tínhố ượ ộ V i cácớ đ i t ng d1, d2, d3 và m ng d, có th vi t nh sau:ố ượ ả ể ế ư d1.x; // Thu c tính x c a đ i t ng d1ộ ủ ố ượ d2.x; // Thu c tính x c a đ i t ng d2ộ ủ ố ượ d3.y; // Thu c tính y c a đ i t ng d3ộ ủ ố ượ d[2].m; // Thu c tính m c a ph n t d[2]ộ ủ ầ ử d1.x = 100; // Gán 100 cho d1.x d2.y =d1.x; // Gán d1.x cho d2.y 2. S d ng các ph ng th cử ụ ươ ứ Cũng gi ng nh hàm, m t ph ng th c đ c s d ng thông qua l i g i. Tuyố ư ộ ươ ứ ượ ử ụ ờ ọ 220 Ch ng 7. L p và đ i t ngươ ớ ố ượ nhiên trong l i g i ph ng th c bao gi cũng ph i có tên đ i t ng đ ch rõờ ọ ươ ứ ờ ả ố ượ ể ỉ ph ng th c th c hi n trên các thu c tính c a đ i t ng nào. ươ ứ ự ệ ộ ủ ố ượ Ví d l i g i sau s th c hi n nh p s li u vào các thành ph n d1.x, d1.y vàụ ờ ọ ẽ ự ệ ậ ố ệ ầ d1.m: d1.nhapsl(); Câu l nh sau s th c hi n nh p s li u vào các thành ph nệ ẽ ự ệ ậ ố ệ ầ d[3].x, d[3].y và d[3].m: d[3].nhapsl() ; Chúng ta s minh h a các đi u nói trên b ng m t ch ng trình đ n gi n sẽ ọ ề ằ ộ ươ ơ ả ử d ng l p DIEM đ nh p 3 đi m, hi n r i n các đi m v a nh p. Trong ch ngụ ớ ể ậ ể ệ ồ ẩ ể ừ ậ ươ trình đ a vào hàm ư kd_do_hoa() dùng đ kh i đ ng h đ ho .ể ở ộ ệ ồ ạ #include <conio.h> #include <iostream.h> #include <graphics.h> class DIEM { private: int x, y, m ; public: void nhapsl(); void an() { putpixel(x,y,getbkcolor());} void hien(); }; void DIEM::nhapsl() { cout << "\n Nhap hoanh do (cot) va tung do (hang) cua DIEM: '' ; cin>> x >> y ; cout << " \n Nhap ma tran cua diem: " ; cin >> m ; } void DIEM::hien() { int mau_ht; mau_ht = getcolor() ; putpixel(x,y,m); 221 [...]... 228 Chương 7 Lớp và đối tượng getch(); closegraph(); } Một số nhận xét về đối của phương thức và lời gọi phương thức: + Quan sát nguyên mẫu phương thức: void ve_doan_thang(DIEM d2, int mau) ; sẽ thấy phương thức có 3 đối: Đối thứ nhất là một đối tượng DIEM do this trỏ tới Đối thứ hai là đối tượng DIEM d2 Đối thứ ba là biến nguyên mẫu Nội dung phương thức là vẽ một đoạn thẳng đi qua các điểm *this và. .. >> d; 239 Chương 7 Lớp và đối tượng cout . Ch ng 7. L p và đ i t ngươ ớ ố ượ CH NG 7 Ơ LỚP VÀ ĐỐI TƯỢNG L p trình có c u trúc và l p trình h ng đ i t ngậ ấ ậ ướ ố ượ L p và đ i t ng ớ ố ượ Đ i c a ph ng th. toàn v n cao và vi c x lý thông tin (d li u) nàyậ ẹ ệ ử ữ ệ mang tính th ng nh t h n và h u nh d li u trong các l p đ u đ c khai báo v iố ấ ơ ầ ư ữ ệ ớ ề ượ ớ 2 17 Ch ng 7. L p và đ i t ngươ. a l p (thu c tính và ph ng th c)ầ ủ ớ ộ ươ ứ 1. Các t khóa private và publicừ Khi khai báo các thành ph n d li u và ph ng th c có th dùng các t khoáầ ữ ệ ươ ứ ể ừ private và public đ quy đ nh

Ngày đăng: 05/08/2014, 17:22

Từ khóa liên quan

Mục lục

  • I. LẬP TRÌNH CÓ CẤU TRÚC VÀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

  • II. LỚP VÀ ĐỐI TƯỢNG

  • III. ĐỐI CỦA PHƯƠNG THỨC, CON TRỎ this

  • IV. HÀM TẠO (Constructor)

  • V. HÀM HỦY (Destructor)

  • VI. CÁC HÀM TRỰC TUYẾN (inline)

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan