Bài giảng Lập trình hướng đối tượng: Đa hình
lượt xem 4
download
Bài giảng "Lập trình hướng đối tượng: Đa hình" do Lê Viết Mẫn biên soạn cung cấp cho người học các kiến thức: Nhắc lại về thừa kế, đa hình, lớp cơ sở trừu tượng, một số vấn đề khác. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hướng đối tượng: Đa hình
- Đa hình v 2.3 - 09/2018 Lê Viết Mẫn - lvman@hce.edu.vn 1 Đa hình
- các bạn đã có thể... cài đặt mô hình bằng C# Lê Viết Mẫn - lvman@hce.edu.vn 2 Đa hình
- chúng ta sẽ học... Vehicle move() Vehicle veh [ 3 ] = { Train(“TGV”), Car(“twingo”), Ship(“Titanic”) }; Train Car Ship for (int i = 0; i < 3; i++) { veh[ i ].move(); } move() move() move() { { { on rails on the road on water } } } Lê Viết Mẫn - lvman@hce.edu.vn 3 Đa hình
- Nội dung 1. Nhắc lại về thừa kế 2. Đa hình 3. Lớp cơ sở trừu tượng 4. Một số vấn đề khác Lê Viết Mẫn - lvman@hce.edu.vn 4 Đa hình
- Nhắc lại về thừa kế Lê Viết Mẫn - lvman@hce.edu.vn 5 Đa hình
- Thừa kế • Là khả năng lớp con thừa kế từ lớp cha tất cả những thành phần dữ liệu, thuộc tính và hàm thành phần của lớp cha • Ngoại trừ: cấu tử, hủy tử, toán tử = • Cú pháp: class Student : HCEPerson { // Khai báo của lớp Student } • Khai báo và định nghĩa lớp cơ sở như bình thường • Toán tử truy xuất • private : chỉ cho phép truy xuất bên trong lớp, KHÔNG bao gồm các lớp con • protected : chỉ cho phép truy xuất bên trong lớp và cả từ các lớp con của nó Lê Viết Mẫn - lvman@hce.edu.vn 6 Đa hình
- Lớp con • Trong phần định nghĩa cấu tử • Chứa lời gọi đến cấu tử của lớp cha (lớp cơ sở) Student.cs HCEPerson.cs Lê Viết Mẫn - lvman@hce.edu.vn 7 Đa hình
- Lớp con • Có thể định nghĩa lại các hàm thành phần của lớp cha HCEPerson.cs Student.cs Lê Viết Mẫn - lvman@hce.edu.vn 8 Đa hình
- Sử dụng HCEPerson binh = new HCEPerson(901289, "Hoang Van Binh", "1 Le Loi"); Student an = new Student(971232, "Nguyen Van An", "100 Phung Hung", 43, 2); binh.displayProfile(); Program.cs binh = an; // chuyển đổi kiểu ngầm định, ngược lại phải viết tường minh binh.displayProfile(); Class c1 = new Class(“HTTT4253”); // trình biên dịch sẽ báo lỗi, vì không tồn tại hàm addClassTaken() trong lớp HCEPerson binh.addClassTaken(c1); [Name : Hoang Van Binh; ID : 901289; Address : 1 Le Loi] [Name : Nguyen Van An; ID : 971232; Address : 100 Phung Hung] • Kiểu khai báo và kiểu hiện thời • Điều này không hợp lý • Bởi vì nó không phù hợp với kiểu hiện thời mà nó đang nhận • Giải pháp cho điều này sẽ tạo ra kỹ thuật đa hình Lê Viết Mẫn - lvman@hce.edu.vn 9 Đa hình
- Đa hình Lê Viết Mẫn - lvman@hce.edu.vn 10 Đa hình
- Đa hình • Khả năng của kiểu dữ liệu A được xem và được sử dụng như kiểu dữ liệu B • Ví dụ: đối tượng kiểu Student có thể được sử dụng thay cho một đối tượng kiểu HCEPerson HCEPerson an = new Student(971232, "Nguyen Van An", "100 Phung Hung", 43, 2); an.displayProfile(); [Name : Nguyen Van An; ID : 971232; Address : 100 Phung Hung; Course : 43; Year : 2; Num Of Class Taken : 0] • Việc lựa chọn hàm chính xác được thực hiện tại thời gian chạy và dựa trên đối tượng mà một biến đang chứa Lê Viết Mẫn - lvman@hce.edu.vn 11 Đa hình
- Từ khoá virtual và override • Sử dụng từ khoá virtual để định nghĩa một hàm thành phần của lớp cơ sở là có thể được nạp chồng bởi lớp con • Hàm thành phần của lớp cơ sở lúc này được gọi là hàm ảo • Sử dụng từ khoá override khi lớp thừa kế muốn thay đổi cài đặt của một hàm ảo • Dùng từ khoá base để truy xuất những cài đặt của lớp cơ sở Lê Viết Mẫn - lvman@hce.edu.vn 12 Đa hình
- Từ khoá virtual và override HCEPerson.cs Student.cs Lê Viết Mẫn - lvman@hce.edu.vn 13 Đa hình
- Từ khoá sealed • Sử dụng thêm từ khoá sealed nếu bạn muốn ngăn không cho nạp chồng các hàm ảo Lê Viết Mẫn - lvman@hce.edu.vn 14 Đa hình
- Ứng dụng • Sử dụng một biến của lớp cơ sở để tham chiếu đến một đối tượng của lớp con HCEPerson an = new Student(971232, "Nguyen Van An", "100 Phung Hung", 43, 2); an.displayProfile(); • Viết các hàm xử lý cho một lớp các đối tượng Render(Shape s) { s.Draw(); } Circle c = new Circle(); Hexagon h = new Hexagon(); Render(c); Render(h); Lê Viết Mẫn - lvman@hce.edu.vn 15 Đa hình
- Lớp trừu tượng Lê Viết Mẫn - lvman@hce.edu.vn 16 Đa hình
- Abstract class - lớp trừu tượng • Lớp trừu tượng là một lớp • Phần cài đặt của một số phương thức bị bỏ qua • Những phương thức bị bỏ qua chỉ được cài đặt tại các lớp con • Ví dụ : Thao tác di chuyển cửa sổ được cài đặt sử dụng hai phương thức ẩn và hiện mà chúng được cài đặt phù hợp ở các lớp con Lê Viết Mẫn - lvman@hce.edu.vn 17 Đa hình
- Lớp trừu tượng • Là lớp với một hoặc nhiều hàm trừu tượng và được định nghĩa bằng từ khoá abstract HCEPerson.cs • Không thể khởi tạo HCEPerson p = new HCEPerson(); // không thể làm điều này • Chỉ có ý nghĩa trong ngữ cảnh thừa kế • tổ chức những tính năng chung cho nhiều lớp • khai báo giao diện mà mỗi lớp con phải cung cấp • Lớp con phải cài đặt tất cả các hàm trừu tượng Lê Viết Mẫn - lvman@hce.edu.vn 18 Đa hình
- Hàm trừu tượng • Là hàm thành phần không có cài đặt và sử dụng từ khoá abstract trong nguyên mẫu hàm HCEPerson.cs • Sử dụng từ khoá override khi nạp chồng các hàm trừu tượng Lê Viết Mẫn - lvman@hce.edu.vn 19 Đa hình
- Ví dụ Lê Viết Mẫn - lvman@hce.edu.vn 20 Đa hình
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 140 | 9
-
Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng
53 p | 46 | 8
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 120 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 103 | 8
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 86 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 100 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 103 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 139 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 15 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 2
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