Bài giảng Cơ sở lập trình máy tính Chương 4 Kế thừa – Đa hình nhằm trình bày về thiết kế đối tượng, kế thừa và đa hình, lợi thế của lập trình hướng đối tượng, định nghĩa và ví dụ về kế thừa, mối quan hệ tổng quát hóa và chuyên biệt hóa.
Chương 4: Kế thừa – Đa hình 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 lập trình hướng đối tượng Lấy đối tượng làm trung tâm Che giấu liệu Linh hoạt Tái sử dụng Không lệ thuộc thứ tự thuật tốn Khoa Cơng nghệ Thơng tin – Trường Đại học Ngân hàng TP.HCM Tại 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ó dạng: Dạng chia sẻ: A ∩ B ≠ Ø A x, y, z Dạng mở rộng: B = A + ε a, b, c Nhược điểm: A Xây dựng tốn x, y, z Dung lượng lưu trữ lớn Thay đổi phần chung khó khăn Tái sử dụng?! Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM B x, y, z u, v, w B x, y, z a, b, c Khái niệm kế thừa Định nghĩa lớp dựa lớp có Lớp sở: lớp dùng để định nghĩa lớp Lớp dẫn xuất: lớp định nghĩa từ lớp có Lớp dẫn xuất thừa hưởng TẤT CẢ từ lớp sở O x, y, z A x, y, z a, b, c A x, y, z B x, y, z u, v, w B x, y, z a, b, c Khoa Công nghệ Thơng tin – Trường Đại học Ngân hàng TP.HCM Ví dụ kế thừa Giáo viên 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 GVCN Công việc: Giảng dạy Tính lương Sinh hoạt chủ nhiệm 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 Lớp dẫn xuất Lớp sở 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(){} } 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 chuyên biệt hóa Kế thừa mối quan hệ đặc biệt Các lớp dẫn xuất kế thừa thuộc tính phương thức lớp sở cho phép tái sử dụng đoạn code Các lớp dẫn xuất thành phần chun 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 lớp sở Từ khóa base dùng lớp dẫn xuất để gọi constructor lớp 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 Thực Xây dựng lớp tài khoản thẻ, kế thừa lớp tài khoản 20 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 phần: Khơng kế thừa “máy móc” tất Lớp dẫn xuất thay đổi 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 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 Phương thức Hành vi Elephant Eat () Eat Grass Cat Eat () Eat Mouse Mouse Eat () Eat Cheese 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) việc định nghĩa lại (Override) phương thức lớp sở lớp dẫn xuất Lớp sở Lớp dẫn xuất Animal Cat Virtual Method Override Method Eat () Eat () Hành vi Hành vi Eat Something Eat Mouse 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 lớp sở 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 phương thức trừu tượng (Abstract) Lớp trừu tượng lớp sở khái quát Chứa phương thức trừu tượng thực lớp dẫn xuất Có thể chứa thành phần khơng trừu tượng (non-abstract) Phương thức trừu tượng không thực lớp sở Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Lớp 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 Thực Xây dựng lớp Animal lớp trừu tượng, định nghĩa lại lớp dẫn xuất phương thức hour Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM Bài tập Thực Xây dựng lớp đối tượng liên quan tài khoản ngân hàng (Bank Account) hour 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 Khoa Công nghệ Thông tin – Trường Đại học Ngân hàng TP.HCM ... 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 GVCN Cơng việc: Giảng dạy Tính lương Sinh hoạt...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 lập trình hướng đối tượng Lấy đối tượng làm trung tâm Che giấu liệu Linh... phương thức lớp sở cho phép tái sử dụng đoạn code Các lớp dẫn xuất 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 lớp sở Từ khóa base