Bài giảng Phương pháp lập trình hướng đối tượng: Đa hình
lượt xem 4
download
Trong bài giảng này sẽ trình bày về tính đa hình trong lập trình hướng đối tượng. Các nội dung chính trong chương gồm có: Hàm ảo, hàm thuần ảo, hàm hủy ảo. Cuối bài giảng còn có các bài tập để người học có thể tự kiểm tra lại các kiến thức đã học trong bài giảng. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Phương pháp lập trình hướng đối tượng: Đa hình
- Đa hình Phương pháp lập trình hướng đối tượng. 1
- Nội dung Hàm ảo. Hàm thuần ảo. Hàm hủy ảo. Bài tập. Phương pháp lập trình hướng đối tượng. 2
- Nội dung Hàm ảo. Hàm thuần ảo. Hàm hủy ảo. Bài tập. Phương pháp lập trình hướng đối tượng. 3
- Hàm ảo Con trỏ đối tượng trong kế thừa: Truy xuất đối tượng bằng con trỏ => linh động. Truy xuất đối tượng kế thừa bằng con trỏ lớp cơ sở. Kiểu con trỏ quyết định phương thức được gọi liên kết tĩnh. Đối tượng kế thừa truyền vào hàm nhận tham số kiểu cơ sở. Đối tượng kế thừa có thể đóng vai trò đối tượng cơ sở. A obj; // B kế thừa A. // B kế thừa A. A *p; B obj; void func(A obj) { } p = &obj; A *p = &obj; B obj; p = new A; p->func(); func(obj); Phương pháp lập trình hướng đối tượng. 4
- Hàm ảo Ví dụ: class Animal { public: Anim al void talk() { cout
- Hàm ảo Ví dụ: void giveATalk(Animal *p) void main() { { p->talk(); Animal a; } Cat c; Dog d; void main() Animal *p; { Animal Cat c; p = &a; Animaltalks!! talks!! p->talk(); Dog d; Animal Animaltalks!! talks!! p = &c; Animal Animaltalks!! talks!! giveATalk(&c); p->talk(); giveATalk(&d); } Animal Animaltalks!! talks!! p = &d; Animal Animaltalks!! talks!! p->talk(); } Phương pháp lập trình hướng đối tượng. 6
- Hàm ảo Khái niệm hàm ảo: Một phương thức của lớp. Mang tính ảo. Chuyển lời gọi hàm cho đúng đối tượng con trỏ đang trỏ đến. Liên kết động. Chỉ có ý nghĩa khi gọi thông qua con trỏ. Khai báo hàm ảo trong C++: virtual ; Phương pháp lập trình hướng đối tượng. 7
- Hàm ảo Ví dụ: class Animal { public: virtual void talk() { cout
- Hàm ảo Ví dụ: void giveATalk(Animal *p) void main() { { p->talk(); Animal a; } Cat c; Dog d; void main() Animal *p; { Animal Cat c; p = &a; Animaltalks!! talks!! p->Talk(); Dog d; Cat Cattalks!! talks!! p = &c; Cat Cattalks!! talks!! giveATalk(&c); p->Talk(); giveATalk(&d); } Dog Dogtalks!! talks!! p = &d; Dog Dogtalks!! talks!! p->Talk(); } Phương pháp lập trình hướng đối tượng. 9
- Hàm ảo Sử dụng hàm ảo để làm gì? Gọn gàng, đơn giản, uyển chuyển, linh động. Chương trình có tính dễ mở rộng, nâng cấp. void giveATalk(Animal *p) void giveATalk(Animal obj, int iType) { { p->talk(); if (iType == 0) } { Cat c = (Cat)obj; c.talk(); } else if (iType == 1) { Dog d = (Dog)obj; d.talk(); } } Phương pháp lập trình hướng đối tượng. 10
- Nội dung Hàm ảo. Hàm thuần ảo. Hàm hủy ảo. Bài tập. Phương pháp lập trình hướng đối tượng. 11
- Hàm thuần ảo Có một số hàm ảo không thể cài đặt hoặc không có ý nghĩa khi cài đặt trong lớp cơ sở. class Animal { public: virtual void talk() { cout
- Hàm thuần ảo Khái niệm hàm thuần ảo: Hàm ảo chỉ có khai báo mà không có cài đặt. Phần cài đặt do lớp kế thừa đảm nhận. Khai báo trong C++: virtual = 0; Lớp trừu tượng (abstract class): Lớp chứa hàm thuần ảo. Không thể tạo đối tượng từ lớp trừu tượng. Chỉ dùng để kế thừa. Phương pháp lập trình hướng đối tượng. 13
- Hàm thuần ảo Ví dụ: class Animal void main() { { public: Animal a; // Sai. virtual void talk() = 0; Animal *p = new Animal; // Sai. }; Animal *q = new Cat; // Đúng. class Cat: public Animal { q->talk(); public: } Cat Cattalks!! talks!! void talk() { cout
- Nội dung Hàm ảo. Hàm thuần ảo. Hàm hủy ảo. Bài tập. Phương pháp lập trình hướng đối tượng. 15
- Hàm hủy ảo Ví dụ: class GiaoVien void main() { { private: GiaoVien *p1 = new GiaoVien; char *m_strHoTen; ~GiaoVien() ~GiaoVien() delete p1; public: ~GiaoVien() { delete m_strHoTen; } GVCN *p2 = new GVCN; }; delete p2; class GVCN : public GiaoVien ~GVCN() { ~GVCN() GiaoVien *p3 = new GVCN; ~GiaoVien() ~GiaoVien() private: delete p3; char *m_strLopCN; } public: ~GVCN() { delete m_strLopCN; } ~GiaoVien() ~GiaoVien() }; Phương pháp lập trình hướng đối tượng. 16
- Hàm hủy ảo Dr. Guru khuyên: Hàm hủy của lớp phải luôn là hàm ảo. Chuyển lời gọi đến hàm hủy của lớp kế thừa. class GiaoVien { private: char *m_strHoTen; public: virtual ~GiaoVien() { delete m_strHoTen; } }; GiaoVien *p3 = new GVCN; delete p3; ~GVCN() ~GVCN() ~GiaoVien() ~GiaoVien() Phương pháp lập trình hướng đối tượng. 17
- Tóm tắt Hàm ảo: Chuyển lời gọi hàm đến đúng đối tượng. Chỉ có ý nghĩa khi gọi từ con trỏ. Hàm thuần ảo: Hàm ảo chỉ có khai báo mà không có cài đặt. Lớp kế thừa đảm nhận việc cài đặt. Lớp có chứa hàm thuần ảo lớp trừu tượng Lớp trừu tượng chỉ dùng để kế thừa. Hàm hủy ảo: Hàm hủy phải luôn luôn là hàm ảo. Phương pháp lập trình hướng đối tượng. 18
- Nội dung Hàm ảo. Hàm thuần ảo. Hàm hủy ảo. Bài tập. Phương pháp lập trình hướng đối tượng. 19
- Bài tập Bài tập 12.1: class A Cho biết những gì xuất hiện { public: trên màn hình trong các [yyy] void f1() { cout
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Phương pháp lập trình: Chương 1 - GV. Từ Thị Xuân Hiền
18 p | 132 | 17
-
Bài giảng Phương pháp lập trình: Chương 2 - GV. Từ Thị Xuân Hiền
50 p | 107 | 15
-
Bài giảng Phương pháp lập trình: Chương 6 - GV. Từ Thị Xuân Hiền
39 p | 105 | 15
-
Bài giảng Phương pháp lập trình: Chương 3 - GV. Từ Thị Xuân Hiền
29 p | 117 | 12
-
Bài giảng Phương pháp lập trình: Chương 5 - GV. Từ Thị Xuân Hiền
37 p | 114 | 12
-
Bài giảng Phương pháp lập trình: Chương 4 - GV. Từ Thị Xuân Hiền
19 p | 104 | 11
-
Bài giảng Phương pháp lập trình: Chương 7 - GV. Từ Thị Xuân Hiền
18 p | 117 | 11
-
Bài giảng Phương pháp lập trình: Chương 9 - GV. Từ Thị Xuân Hiền
36 p | 101 | 10
-
Bài giảng Phương pháp lập trình: Chương 3
23 p | 115 | 10
-
Bài giảng Phương pháp lập trình: Chương 8 - GV. Từ Thị Xuân Hiền
25 p | 102 | 10
-
Bài giảng Phương pháp lập trình: Chương 6 (tiếp theo)
43 p | 85 | 9
-
Bài giảng Phương pháp lập trình: Chương 4
9 p | 96 | 6
-
Bài giảng Phương pháp lập trình hướng đối tượng: Bài tập 5 - Trần Phước Tuấn
4 p | 114 | 6
-
Bài giảng Phương pháp lập trình: Chương 7
16 p | 71 | 4
-
Bài giảng Phương pháp lập trình - Chương 1: Phương pháp lập trình (2016)
64 p | 73 | 4
-
Bài giảng Phương pháp lập trình: Bài 2 - TS. Ngô Hữu Dũng
45 p | 73 | 4
-
Bài giảng Phương pháp lập trình: Bài 4 - TS. Ngô Hữu Dũng
51 p | 92 | 4
-
Bài giảng Phương pháp lập trình: Bài 11 - TS. Ngô Hữu Dũng
42 p | 62 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn