Bài giảng Phương pháp lập trình hướng đối tượng: Đa hình do Trần Phước Tuấn cung cấp cho người học các kiến thức về hàm ảo, hàm thuần ảo, hàm hủy ảo. Cuối bài giảng là các bài tập vận dụng giúp người học có thể ôn tập và vận dụng lý thuyết.
Đa hình Phương pháp lập trình hướng đối tượng Nội dung Hàm ảo Hàm ảo Hàm hủy ảo Bài tập Phương pháp lập trình hướng đối tượng Nội dung Hàm ảo Hàm ảo Hàm hủy ảo Bài tập Phương pháp lập trình hướng đối tượng Hàm ảo Con trỏ đối tượng kế thừa: Truy xuất đối tượng trỏ => linh động Truy xuất đối tượng kế thừa trỏ lớp sở Kiểu trỏ định phương thứ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 sở Đối tượng kế thừa đóng vai trị đối tượng sở A obj; A *p; p = &obj; p = new A; Phương pháp lập trình hướng đối tượng // B kế thừa A B obj; A *p = &obj; p->func(); // B kế thừa A void func(A obj) { } B obj; func(obj); Hàm ảo Ví dụ: class Animal { public: void talk() { cout talk(); Animal talks!! p = &d; p->talk(); Animal talks!! } Phương pháp lập trình hướng đối tượng Hàm ảo Khái niệm hàm ảo: Một phương thức lớp Mang tính ảo Chuyển lời gọi hàm cho đối tượng trỏ trỏ đến Liên kết động Chỉ có ý nghĩa gọi thông qua trỏ Khai báo hàm ảo C++: virtual ; Phương pháp lập trình hướng đối tượng Hàm ảo Ví dụ: class Animal { public: virtual void talk() { cout Talk(); Cat talks!! p = &d; p->Talk(); Dog talks!! } Phương pháp lập trình hướng đối tượng 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) { p->talk(); } Phương pháp lập trình hướng đối tượng void giveATalk(Animal obj, int iType) { if (iType == 0) { Cat c = (Cat)obj; c.talk(); } else if (iType == 1) { Dog d = (Dog)obj; d.talk(); } } 10 Nội dung Hàm ảo Hàm ả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 ảo Có số hàm ảo khơng thể cài đặt khơng có ý nghĩa cài đặt lớp sở class Animal { public: virtual void talk() { cout