Ngôn ngữ lập trình - Chương 3 (HUST)

LI
lienhejb
다운로드 0회
52
0

자료 내용

1쪽

goupee.vn goupee.com Phần 2: Ngôn ngữ lập trình C++ Chương 3: Lớp và đối tượng cuu duong than cong . com fb.com/goupee.vn 1 CuuDuongThanCong.com https://fb.com/tailieudientucntt

2쪽

goupee.vnCác nội dung chính goupee.com  Lớp và các thao tác đối với lớp  Sử dụng các đối tượng  Hàm thành viên  Con trỏ this  Hàm bạn (friend function)  Định nghĩa lại các toán tử trong lớp  Cấp phát động bộ nhớcuu duong than cong . com  Các thành phần kiểu static fb.com/goupee.vn 2/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

3쪽

goupee.vnLớp và các thao tác cơ bản goupee.com  Các thao tác cơ bản  Định nghĩa: Tương tự như định nghĩa 1 kiểu dữ liệu mới. Mỗi đối tượng đều phải thuộc về một lớp nào đó. Nên định nghĩa 1 lớp mới là xây dựng lớp đó để chuẩn bị tạo ra các đối tượng của lớp đó.  Khai báo: tương tự như khai báo dữ liệu hay hàm con. Tuy nhiên việc khai báo lớp thường chỉ được dùng khi việc định nghĩa lớp này cần phải làm sau đó (như khi định nghĩa các lớp có sử dụng cáccuu duong than cong . com thành phần của nhau) fb.com/goupee.vn 3/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

4쪽

goupee.vn Định nghĩa một lớp mgoupee.comới  Định nghĩa một lớp mới cho phép tạo ra một lớp mới, bao gồm các thành phần dữ liệu và các hàm thành viên cần thiết.  Cú pháp: E: từ khóa xác định mức độ che dấu (hay thuộc tính truy xuất): private, public hoặc class <Tên lớp> protected { Type: kiểu dữ liệu hoặc kiểu hàm và có thể //Đn các thành phần dữ liệu là tên lớp <E:> <type> d1; … //Đn các hàm thành viêncuu duong than cong . comVị trí đặt đ/n lớp: có thể trước hoặc sauhàm main(). <E:> <type> f1();… }; Không được đ/n một lớp trong một lớp khác fb.com/goupee.vn 4/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

5쪽

goupee.vnVí dụ về đ/n lớp: Program 2.2 goupee.com class Circle { private: static const float PI=3.1415; //Hằng số tĩnh, hằng số của lớp float r; //Bán kính, thành phần dữ liệu của từng đối tượng public: void setRadius(float re){ r=re; } float getRadius(){ return r; } float area(){ cuu duong than cong . com return PI*r*r; } }; fb.com/goupee.vn 5/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

6쪽

goupee.vn Khai báo lớgoupee.comp class Circle; //Khai báo lớp int main() { Circle c; //Khai báo đối tượng thuộc lớp c.setRadius(10); … } class Circle {…cuu duong than cong . com//Định nghĩa lớp đưa ra sau hàm main }; fb.com/goupee.vn 6/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

7쪽

goupee.vnSử dụng các đối tượng goupee.com  Các thao tác cơ bản cho đối tượng:  Khai báo: là thao tác đầu tiên để sử dụng được một đối tượng  Truy nhập vào các thành phần: sử dụng toán tử “.” cho đối tượng thông thường, “->” cho đối tượng kiểu con trỏ. cuu duong than cong . com fb.com/goupee.vn 7/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

8쪽

goupee.vnProgram 3.2, mở rộng Program 2.2 goupee.com //Đ/n lớp Circle int main() { Circle c; //Khai báo và sử dụng đối tượng thông thường c.setRadius(10); cout<<"Area of circle with r = "<<c.getRadius()<< " is "<<c.area()<<endl; Circle *pc = &c; //Khai báo và sử dụng đối tượng kiểu con trỏ pc->setRadius(20); cout<<"Area of circle with r = "<<pc->getRadius()<<" is "<< pc->area()<<endl; system("PAUSE");cuu duong than cong . com return EXIT_SUCCESS; } fb.com/goupee.vn 8/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

9쪽

goupee.vnHàm thành viên (member functions)goupee.com  Phân biệt giữa hàm thành viên và hàm tự do  Các thao tác cơ bản cho hàm thành viên  Hàm tự thiết lập và hàm tự hủy cuu duong than cong . com fb.com/goupee.vn 9/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

10쪽

goupee.vn Hàm thành viên và hàm tự goupee.comdo  Hàm thành viên: là hàm thuộc một lớp, và cũng sẽ thuộc về các đối tượng của lớp đó  Hàm tự do: là các hàm được định nghĩa bên ngoài các lớp, chính là hàm con trong C. cuu duong than cong . com fb.com/goupee.vn 10/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

11쪽

goupee.vnCác thao tác cơ bản cho hàm thành viêngoupee.com  Tương tự như hàm tự do, cũng có 2 thao tác cơ bản cho hàm thành viên:  Khai báo: chỉ khai báo phần đầu của hàm. Có sự khác biệt cơ bản trong việc khai báo giữa hàm thành viên và hàm tự do. Mục đích của việc khai báo hàm tự do là để chuẩn bị sử dụng (gọi) hàm đó. Còn việc khai báo hàm thành viên chỉ để chuẩn bị cho việc định nghĩa hàm này. Định nghĩacuu duong than cong . com: trong C++, định nghĩa hàm có thể  được đặt bên trong lớp hoặc đưa ra ngoài. fb.com/goupee.vn 11/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

12쪽

goupee.vnProgram 3.1: Xây dựng và sử dụng lớp goupee.com Point class Point { //Đ/n lớp Point float _x, _y; public: void setXY(float x, float y); //Khai báo hàm tv float getX(){ return _x; } //Đ/n hàm tv float getY(){ return _y; } //Đ/n hàm tv float distanceTo(Point p);cuu duong than cong . com//Khai báo hàm tv }; fb.com/goupee.vn 12/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

13쪽

goupee.vnProgram 3.1 (tiếp) goupee.com //Đ/n các hàm tv bên ngoài lớp void Point::setXY(float x, float y){ _x = x; _y = y; } float Point::distanceTo(Point p){ float d = (p._x-_x)*(p._x-_x) + (p._y-_y)*(p._y-_y); return sqrt(d);cuu duong than cong . com } fb.com/goupee.vn 13/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

14쪽

goupee.vnProgram 3.1 (tiếp và hết) goupee.com int main() { Point p1, p2; p1.setXY(10,10); p2.setXY(20,20); cout<<"D="<<p1.distanceTo(p2)<<endl; system("PAUSE"); return EXIT_SUCCESS;cuu duong than cong . com } fb.com/goupee.vn 14/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

15쪽

goupee.vnKết quả chạy Program 3.1 goupee.com cuu duong than cong . com fb.com/goupee.vn 15/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

16쪽

goupee.vn Hàm tự thiết lập (constructor)goupee.com  Khái niệm: hay còn được gọi ngắn gọn là “hàm tạo” của một lớp, là hàm sẽ tự động được gọi sau khi ta khai báo một đối tượng phù hợp của lớp đó  Vai trò: dùng để khởi tạo các giá trị ban đầu cần thiết cho các đối tượng  Một số tính chất:  Có tên trùng với tên lớp  Không có kiểu hàm (không phải hàm kiểu void)  Mức độ che dấu làcuu duong than cong . compublic  Có thể định nghĩa chồng hàm tạo cho một lớp fb.com/goupee.vn 16/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

17쪽

goupee.vn Hàm tự hủy (destructor)goupee.com  Khái niệm: còn được gọi là “hàm hủy” của một lớp, là hàm sẽ tự động được gọi ngay trước khi giải phóng một đối tượng thuộc lớp đó.  Vai trò: dùng để giải phóng các tài nguyên mà đối tượng đã dùng, nhất là các vùng nhớ cấp phát động.  Một số tính chất:  Tên có dạng: ~<tên lớp>()  Không có kiểu hàm (không phải hàm kiểu void)  Hàm không có tham sốcuu duong than cong . com  Mức độ che dấu là public  Chỉ có thể định nghĩa 1 hàm hủy cho một lớp fb.com/goupee.vn 17/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

18쪽

goupee.vnProgram 3.3: mở rộng Program 3.1 với cácgoupee.com hàm tạo và hàm hủy class Point { float _x, _y; public: Point(float x=0, float y=0){ //Hàm tạo với tham số mặc định _x=x; _y=y; cout<<"Goi ham tao"<<endl; } ~Point(){ //Hàm hủy cout<<"Goi ham huy"<<endl; } void setXY(float x, float y); float getX(){ return _x; }cuu duong than cong . com float getY(){ return _y; } float distanceTo(Point p); }; fb.com/goupee.vn 18/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

19쪽

goupee.vnProgram 3.3 (tiếp và hết) goupee.com int main() { { Point p1; Point p2(10); Point p3(20,20); cout<<"D12="<<p1.distanceTo(p2)<<endl; cout<<"D23="<<p2.distanceTo(p3)<<endl; } return EXIT_SUCCESS; } cuu duong than cong . com fb.com/goupee.vn 19/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

20쪽

goupee.vnKết quả chạy goupee.com cuu duong than cong . com fb.com/goupee.vn 20/52 CuuDuongThanCong.com https://fb.com/tailieudientucntt

앞 20페이지만 표시됩니다. 전체를 보려면 자료를 다운로드하세요.

댓글 (0)

로그인 하여 토론에 참여하기

댓글이 없습니다. 첫 댓글을 남겨보세요!