1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng ngôn ngữ lập trình đa hình và hàm ảo nguyễn thị phương dung

23 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 839,34 KB

Nội dung

Ngơn ngữ lập trình Đa hình hàm ảo fit.hnue.edu.vn/~dungntp/NNLT 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Nội dung • • • • • • Đa hình Hàm ảo Liên kết muộn Hàm ảo Lớp trừu tượng Vấn đề cắt lát 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Xét yêu cầu tốn sau: • Có 100 người xếp hàng chờ kê khai thơng tin • Chỉ có đủ 100 tờ giấy cho họ kê khai • Khơng biết có người kê khai cán bộ, giáo viên người kê khai sinh viên • Làm để đảm bảo đủ giấy kê khai cho 100 người theo thông tin họ? 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Giải pháp • => Chỉ đến lượt, người kê khai thông báo họ SV CB, GV in tờ khai tương ứng cho họ (sử dụng trỏ) • Giải pháp gọi tính đa hình lập trình hướng đối tượng • Có thể hiểu đa hình nhiều hình thức thể khác cho loại công việc 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Cách làm • Để thấy rõ tính đa hình đơi phải sử dụng Hàm ảo • Hàm ảo hàm khai báo với từ khóa virtual • Một hàm khai báo hàm ảo lớp sở hàm ảo lớp dẫn xuất cho dù lớp dẫn xuất có khai báo từ khóa virtual không 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Ví dụ với tốn 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Ví dụ với tốn 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Ví dụ với toán 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Ví dụ với tốn • N khai báo mảng ConNguoi • => hàm nhập gọi trường hợp 2? 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Nhìn lại khai báo lớp ConNguoi • Nếu khơng có từ khóa virtual đối tượng N hàm main() đối tượng thuộc lớp ConNguoi • => Khi gọi N[i]->nhap() hàm nhap() lớp ConNguoi gọi 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 10 Nhìn lại khai báo lớp ConNguoi • Thực tế hàm nhap() lớp ConNguoi khai báo với từ khóa virtual • => Dù N đối tượng thuộc lớp ConNguoi N[i] tạo từ lớp hàm nhap() lớp gọi • Việc gọi là: liên kết muộn 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 11 Một số ý dùng hàm ảo • Một hàm khai báo ảo phải định nghĩa • Khi hàm ảo định nghĩa lớp dẫn xuất gọi ghi đè (overridden) 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 12 Chú ý phân biệt ghi đè (overridden) định nghĩa lại (redefined) • Giống nhau: thay đổi định nghĩa hàm lớp dẫn xuất • Khác nhau: – Ghi đè thay đổi định nghĩa hàm ảo – Định nghĩa lại thay đổi định nghĩa hàm ảo 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 13 Một số ý dùng hàm ảo • Chỉ cần đến liên kết muộn nên dùng hàm ảo (nếu khơng tốn nhớ làm chương trình chạy chậm) • Hàm hủy nên khai báo hàm ảo (nếu khơng, hàm hủy lớp dẫn xuất không gọi) 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 14 Qua ví dụ ta nắm  Đa hình  Hàm ảo  Liên kết muộn • Hàm ảo? • Lớp trừu tượng? • Vấn đề cắt lát? 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 15 Xét ví dụ khác • Viết chương trình cho phép người dùng lựa chọn loại hình muốn vẽ • Nếu chọn hình vng phương thức vẽ hình vng gọi • Nếu chọn hình trịn phương thức vẽ hình trịn gọi • … 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 16 Cách giải quyết? • Vẫn phải vận dụng tính đa hình, hàm ảo, liên kết muộn • Trước tiên tạo lớp Hinh lớp sở có phương thức vẽ • Sau tạo lớp HVuong, HTron, HTamgiac, … lớp có phương thức vẽ riêng 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 17 Cách giải quyết? • Tuy nhiên, phương thức vẽ lớp sở Hinh chưa thực biết vẽ • Khi phương thức khai báo hàm ảo • Cách viết: virtual void ve() = 0; 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 18 Lớp trừu tượng • Một lớp có nhiều hàm ảo gọi lớp trừu tượng • Khi lớp trừu tượng lớp dùng làm lớp sở (không thể tạo đối tượng từ lớp trừu tượng) 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 19 Lớp trừu tượng • Lớp dẫn xuất từ lớp trừu tượng lớp trừu tượng trừ hàm ảo định nghĩa không tạo hàm ảo 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 20 Vấn đề cắt lát • Vấn đề cắt lát xảy thực chuyển kiểu lên (gán đối tượng lớp dẫn xuất cho đối tượng lớp sở, biến thành viên không nằm lớp sở bị biến => gọi cắt lát) 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 21 Tổng kết  Đa hình  Hàm ảo  Liên kết muộn  Hàm ảo  Lớp trừu tượng  Vấn đề cắt lát 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 22 Bài tập • Tạo lớp sở trừu tượng DongVat • Tạo lớp dẫn xuất Cho, Meo, Ga, Vit, Chim, … • Định nghĩa phương thức lại tiếng loại động vật • Viết chương trình cho phép người dùng lựa chọn vật u thích chương trình hiển thị tiếng kêu cách lại vật vừa chọn 02/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 23

Ngày đăng: 27/07/2023, 08:35

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN