Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Chương 7. Lớp và đối tượng doc
MIỄN PHÍ
Số trang
46
Kích thước
356.4 KB
Định dạng
PDF
Lượt xem
1347

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

Nội dung xem thử

Mô tả chi tiết

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

Tải ngay đi em, còn do dự, trời tối mất!