Bài giảng "Ngôn ngữ lập trình - Bài 8: Đa hình và hàm ảo" có nội dung trình bày về đa hình (Polymorphism), hàm ảo (Virtual function), hàm ảo và con trỏ. nội dung chi tiết của tài liệu. | Ngôn ngữ lập trình Bài 8: Đa Hình và Hàm Ảo Giảng viên: Lê Nguyễn Tuấn Thành Email:thanhlnt@ Bộ Môn Công Nghệ Phần Mềm – Khoa CNTT Trường Đại Học Thủy Lợi Nội dung 1. 2. 3. Đa hình (Polymorphism) Hàm ảo (Virtual function) Gắn kết muộn (Late binding) Cài đặt hàm ảo Khi nào sử dụng hàm ảo? Hàm ảo thuần (Pure Virtual Function) và Lớp trừu tượng (Abstract Class) Hàm ảo và Con trỏ Mở rộng tương thích kiểu Ép kiểu lên (Upcasting) Ép kiểu xuống (Downcasting) Bài giảng có sử dụng hình vẽ trong cuốn sách “Absolute C++. W. Savitch, Addison Wesley, 2002” 2 Đa hình (Polymorphism) Xét ví dụ: với cùng là thông điệp “nhảy”, một con kangaroo và một con cóc sẽ nhảy hai kiểu khác nhau. Chúng có cùng hành vi “nhảy” nhưng nội dung của hành vi này là khác nhau Đa hình (Polymorphism) là hiện tượng các đối tượng thuộc các lớp khác nhau hiểu cùng một thông điệp theo các cách khác nhau Đa hình là một trong ba trụ cột quan trọng trong OOP 3 Hàm ảo Hàm ảo cung cấp khả năng đa hình này Hàm có thể được “sử dụng” trước khi thực sự được định nghĩa 4 Ví dụ 1: Các lớp mô tả hình vẽ (1/5) Hàm thành viên draw() Xây dựng các lớp cho nhiều kiểu hình vẽ khác nhau Ví dụ: Hình chữ nhật (Rectangle), hình tròn (Circle), hình oval (Oval) Mỗi hình cụ thể là đối tượng của những lớp này Dữ liệu cho hình chữ nhật:chiều cao, chiều rộng Dữ liệu cho hình tròn: tâm, bán kính Tất cả các lớp này đều kế thừa từ một lớp cha: Figure Các lớp này đều có hàm draw() Mục đích là vẽ một hình cụ thể trên màn hình Mỗi lớp có cài đặt khác nhau tương ứng với mỗi loại hình .