Chương 4 Kế thừa – Đa hình

Vấn đề trùng lắp thông tin:  Nhiều lớp có thông tin giống nhau.Có 2 dạng:  Dạng chia sẻ: A ∩ B ≠ Ø.  Dạng mở rộng: B = A + ε.  Nhược điểm:  Xây dựng tốn kém.  Dung lượng lưu trữ lớn.  Thay đổi phần chung khó khăn.

pdf23 trang | Chia sẻ: lylyngoc | Lượt xem: 1573 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Chương 4 Kế thừa – Đa hình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Kế thừa – Đa hình Chương 4: Giảng viên: Ths. Nguyễn Thị Khiêm Hòa Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Nội dung  Thiết kế đối tượng  Kế thừa  Đa hình Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Lợi thế của lập trình hướng đối tượng Lấy đối tượng làm trung tâm Không lệ thuộc thứ tự thuật toán Linh hoạt Tái sử dụng Che giấu dữ liệu 1 2 3 4 5 Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Tại sao phải kế thừa Vấn đề trùng lắp thông tin:  Nhiều lớp có thông tin giống nhau.Có 2 dạng:  Dạng chia sẻ: A ∩ B ≠ Ø.  Dạng mở rộng: B = A + ε.  Nhược điểm:  Xây dựng tốn kém.  Dung lượng lưu trữ lớn.  Thay đổi phần chung khó khăn. A x, y, z a, b, c B x, y, z u, v, w A x, y, z B x, y, z a, b, c Tái sử dụng?! Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Khái niệm kế thừa  Định nghĩa lớp mới dựa trên những lớp đã có.  Lớp cơ sở: lớp dùng để định nghĩa lớp mới.  Lớp dẫn xuất: lớp được định nghĩa từ lớp đã có.  Lớp dẫn xuất thừa hưởng TẤT CẢ từ lớp cơ sở. A x, y, z a, b, c B x, y, z u, v, w B x, y, z a, b, c O x, y, z A x, y, z Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Ví dụ kế thừa  Thông tin:  Họ tên.  Mức lương.  Số ngày nghỉ.  Công việc:  Giảng dạy.  Tính lương.  Thông tin:  Họ tên.  Mức lương.  Số ngày nghỉ.  Lớp chủ nhiệm.  Công việc:  Giảng dạy.  Tính lương.  Sinh hoạt chủ nhiệm. Giáo viên GVCN Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Ví dụ kế thừa class GiaoVien { protected string Hotengv; protected double luonggv; protected int gvnghi; public GiaoVien(string HoTen,double Luong, int nn) { Hotengv = HoTen; luonggv = luong; gvnghi = nn; } public void giangDay(){} public double tinhLuong(){} } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Ví dụ kế thừa class GVCN : GiaoVien { private string LopCN; public GVCN(string HoTen, double luong,int nn, string lop): base(HoTen, luong, nn) { LopCN =lop; } public void sinhHoatCN(){} } Lớp dẫn xuất Lớp cơ sở Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Mối quan hệ tổng quát hóa và chuyên biệt hóa  Kế thừa là mối quan hệ đặc biệt  Các lớp dẫn xuất kế thừa các thuộc tính và phương thức của lớp cơ sở và cho phép tái sử dụng các đoạn code.  Các lớp dẫn xuất là thành phần chuyên biệt hóa Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Gọi Constructor của lớp cơ sở  Từ khóa base được dùng trong lớp dẫn xuất để gọi constructor của lớp cơ sở public class Animal { protected string _name; public Animal(string name) { _name = name; } } public class Cat : Animal { public Cat (string name): base(name) {} } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Bài tập Xây dựng lớp tài khoản thẻ, kế thừa lớp tài khoản Thực hiện 20 min Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Định nghĩa lại phương thức  Kế thừa một phần:  Không kế thừa “máy móc” tất cả.  Lớp dẫn xuất có thể thay đổi những gì đã kế thừa Định nghĩa lại phương thức đã kế thừa. Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Đa hình  Đa hình  Xây dựng phương thức ảo  Gọi lớp cơ sở từ lớp dẫn xuất  Phương thức trừu tượng (abstract) Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Đa hình Animal Elephant Cat Mouse Hành vi Eat Grass Eat Mouse Eat Cheese Phương thức Eat () Eat () Eat () Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Xây dựng phương thức ảo  Phương thức ảo (Virtual) là việc định nghĩa lại (Override) một phương thức của lớp cơ sở trong lớp dẫn xuất. Lớp cơ sở Animal Virtual Method Eat () Lớp dẫn xuất Cat Override Method Eat () Eat Mouse Eat Something Hành vi Hành vi Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Xây dựng phương thức ảo public class Animal { public virtual string Eat() { return string.Empty; } } public class Cat : Animal { public override string Eat() { return “Mouse”; } } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Sử dụng thành phần của lớp cơ sở trong lớp dẫn xuất  Dùng từ khóa base public class Cat : Animal { public override string Eat() { base.Eat(); return “Mouse”; } } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Lớp và phương thức trừu tượng (Abstract)  Lớp trừu tượng là một lớp cơ sở khái quát  Chứa các phương thức trừu tượng được thực hiện trong lớp dẫn xuất.  Có thể chứa các thành phần không trừu tượng (non-abstract)  Phương thức trừu tượng không thực hiện trong lớp cơ sở Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Lớp và phương thức trừu tượng (Abstract) public abstract class Animal { … public abstract void Eat(); … } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Bài tập Xây dựng lớp Animal là lớp trừu tượng, và định nghĩa lại trong các lớp dẫn xuất các phương thức này. Thực hiện 1 hour Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Bài tập  Xây dựng các lớp đối tượng liên quan tài khoản ngân hàng (Bank Account) 1 hour Thực hiện Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Xây dựng Sealed Class  Sealed class không cho phép kế thừa public sealed class MyClass { // class members } Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Q & A