Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
1,05 MB
Nội dung
Chương Đa hình động, Hàm ảo I Hàm ảo đa hình động II Ứng dụng đa hình động III Lớp trừu tượng, hàm tạo hàm hủy ảo Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 I Hàm ảo đa hình Giới thiệu hàm ảo đa hình Gọi hàm thành viên qua trỏ lớp sở Sự liên kết động Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 I.1 Giới thiệu hàm ảo đa hình Dạng đa hình thứ hai LTHĐT liên quan tới kế thừa, hàm ảo trỏ Ở đa hình thái thể chỗ: Lời gọi tới hàm thành viên làm cho hàm thành viên khác thực tuỳ thuộc vào kiểu đối tượng gọi hàm Sự đa hình cịn gọi liên kết động Hàm ảo hàm thành viên lớp, giống hàm thành viên thông thường, khác khai báo với từ khóa virtual đặt trước virtual void nhap(); Ngơ Cơng Thắng - Bài giảng LTHĐT - Chương 08 I.2 Gọi hàm thành viên qua trỏ lớp sở Con trỏ lớp sở chứa địa đối tượng lớp dẫn xuất Bởi đối tượng lớp dẫn xuất loại đối tượng lớp sở nên trỏ trỏ tới đối tượng lớp dẫn xuất có kiểu phù hợp với trỏ trỏ tới đối tượng lớp sở Khi lớp sở lớp dẫn xuất có hàm thành viên trùng nhau, hàm gọi qua trỏ lớp sở hàm thực ln hàm thành viên lớp sở Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 I.2 Gọi hàm thành viên qua trỏ lớp sở Sở dĩ hàm thành viên lớp sở thực trình biên dịch bỏ qua nội dung trỏ chọn hàm thành viên phù hợp với kiểu trỏ lớp sở Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 I.2 Gọi hàm thành viên qua trỏ lớp sở Để gọi hàm thành viên lớp dẫn xuất qua trỏ lớp sở ta cho hàm thành viên lớp sở hàm ảo Khi dùng hàm ảo, trình biên dịch lựa chọn hàm để thực dựa nội dung trỏ, tên kiểu trỏ Đây đa hình thái, lời gọi hàm mà thực hàm khác nhau, tuỳ thuộc vào nội dung trỏ Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 I.3 Sự liên kết động Nếu lớp sở có hàm ảo trùng tên với hàm thành viên lớp dẫn xuất gọi hàm thành viên lớp dẫn xuất qua trỏ lớp sở trình biên dịch gọi hàm Bởi trình biên dịch phải xếp để lựa chọn hàm thực thời điểm chạy chương trình Việc lựa chọn hàm thời điểm chạy chương trình gọi liên kết động (dynamic binding) Còn việc lựa chọn hàm thực theo cách thông thường, thời điểm biên dịch, gọi liên kết tĩnh (static binding) Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 I.3 Sự liên kết động Sự liên kết động cần nhiều thời gian nhớ liên kết tĩnh: Lời gọi hàm lâu hơn, đối tượng lớp dẫn xuất lớn Tóm lại, để cài đặt liên kết động cần có kế thừa, hàm ảo, trỏ trùng hàm thành viên Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 II Ứng dụng đa hình động Mảng trỏ lớp sở trỏ tới đối tượng lớp dẫn xuất khác Phân lập phần chương trình Ví dụ: Tính diện tích hình: Hình tam giác biết cạnh a,b,c; hình chữ nhật biết cạnh a,b; hình trịn biết bán kính r; hình trụ biết bán kính r chiều cao h Nhập vào số hình Đưa diện tích hình nhập u cầu cài đặt đa hình động Ngơ Cơng Thắng - Bài giảng LTHĐT - Chương 08 II.1 Mảng trỏ trỏ tới đối tượng lớp khác Một ứng dụng đa hình sử dụng mảng trỏ lớp sở để chứa địa đối tượng lớp dẫn xuất khác Ví dụ: Viết chương trình quản lý giảng viên sinh viên Thơng tin giảng viên có tên số báo đăng, thông tin sinh viên có tên điểm TBC Nhập vào số giảng viên sinh viên Đưa hình thơng tin giảng viên sinh viên nhập, có kèm theo đánh giá: giảng viên giỏi có số báo >=20, sinh viên giỏi có điểm TBC>=9.0 Y/c cài đặt đa hình động Ngơ Cơng Thắng - Bài giảng LTHĐT - Chương 08 10 II.2 Phân lập phần chương trình Sự đa hình thái sử dụng để giúp cho việc phân lập, hay gỡ bỏ phụ thuộc phần chương trình vào phần chương trình khác Các chương trình OOP chia thành hai phần viết người lập trình khác thời điểm khác Đó phần tạo lớp phần sử dụng lớp Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 11 II.2 Phân lập phần chương trình Việc lập trình đơn giản chương trình người sử dụng lớp phải làm việc với lớp thay vi nhiều lớp khác Điều thực đa hình, dùng tham chiếu trỏ trỏ tới đối tượng để truyền trả từ hàm Ví dụ 1: Sử dụng đối số tham chiếu Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 12 II.2 Phân lập phần chương trình Ví dụ 2: Sử dụng đối số trỏ Ví dụ 3: Viết lại chương trình quản lý giảng viên sinh viên có sử dụng hàm để truyền trả đối tượng khác Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 13 III Lớp trừu tượng, hàm tạo hàm hủy ảo Lớp trừu tượng (abstract class) Hàm tạo ảo hàm hủy ảo Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 14 III.1 Lớp trừu tượng Lớp trừu tượng lớp mà khơng có đối tượng tạo từ nó, đóng vai trị lớp sở cho lớp dẫn xuất Các lớp trừu tượng cài đặt C++ hàm ảo tinh khiết (pure virtual function) Hàm ảo tinh khiết hàm ảo mà khai báo hàm có thêm ký hiệu =0 vào sau khai báo hàm Thân hàm ảo có khơng có Ví dụ: virtual void show()=0; virtual void show()=0 { //Các lệnh hàm } Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 15 III.1 Lớp trừu tượng Dấu khơng phải tốn tử gán, giá trị khơng gán cho Cú pháp =0 đơn giản cách cho trình biên dịch biết hàm tinh khiết Để trình liên kết ngăn chặn việc tạo đối tượng từ lớp trừu tượng, phải định nghĩa hàm ảo tinh khiết lớp trừu tượng Ngơ Công Thắng - Bài giảng LTHĐT - Chương 08 16 III.2 Hàm tạo hàm hủy ảo Câu hỏi đặt “các hàm tạo có ảo không?” Không, không Các hàm ảo tồn hàm tạo hoàn thành nhiệm vụ nó, hàm tạo khơng thể ảo Ngoài ra, tạo đối tượng trình biên dịch cần biết loại đối tượng tạo Do khơng có hàm tạo ảo Trái lại, hàm huỷ thường nên ảo Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 17 III.2 Hàm tạo hàm hủy ảo Khi lớp sở có hàm ảo hàm hủy nên để ảo Nếu không để ảo hàm hủy lớp dẫn xuất khơng thực hủy đối tượng lớp dẫn xuất thông qua trỏ lớp sở Ví dụ: Ngô Công Thắng - Bài giảng LTHĐT - Chương 08 18 III.2 Hàm tạo hàm hủy ảo Khi lớp sở cần hàm hủy ảo? Khi thỏa mãn điều kiện sau: Cần tạo lớp dẫn xuất từ lớp sở Các đối tượng lớp dẫn xuất hủy qua trỏ lớp sở Các hàm hủy lớp sở dẫn xuất thực công việc quan trọng chẳng hạn giải phóng nhớ Tóm lại, lớp sở có hàm ảo nên để hàm hủy ảo Ngơ Công Thắng - Bài giảng LTHĐT - Chương 08 19 Bài tập Bài Viết chương trình tính diện tích hình: hình chữ nhật có cạnh, hình trịn có bán kính u cầu chương trình có cài đặt đa hình động cho hàm nhập kích thước hàm tính diện tích Ngơ Cơng Thắng - Bài giảng LTHĐT - Chương 08 20 Bài tập Bài Một nhân nói chung có họ tên ngày sinh Giảng viên nhân có thêm mã gv môn học giảng dạy Sinh viên nhân có thêm mã sv điểm TBC Cán quản lý gv có thêm chức vụ Nhập vào số loại nhân Đưa thông tin nhân nhập Y/c cài đặt đa hình động Ngơ Cơng Thắng - Bài giảng LTHĐT - Chương 08 21