Bài giảng Kỹ thuật lập trình C - Chương 5: Kế thừa và đa hình cung cấp cho người học các kiến thức: Khái niệm kế thừa, khái niệm đa hình, giao diện (interface). Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.
Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Chương 5 Kế thừa và đa hình Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Nội dung v Khái niệm kế thừa v Khái niệm đa hình v Giao diện (interface) Khoa Hệ Thống Thơng Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Kế thừa v Các đối tượng có cùng chung một số đặc điểm, hành vi được nhóm lại với nhau v Ví dụ Vehicle § Xe đạp § Xe máy § Xe hơi Car § Xe tải § Phương tiện giao thơng Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Kế thừa v Ví dụ: Windows form Khoa Hệ Thống Thơng Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Kế thừa v Ví dụ: Một lớp con có thể là lớp cha của các lớp khác Business RetailBusiness KMart Macys ServiceBusiness Kinkos Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Kế thừa v Tạo ra các lớp mới từ việc sử dụng lại những thành phần của lớp đã có v Lợi ích § Nhất qn § Thuận tiện § Tái sử dụng code Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thông Tin Khai báo Kế thừa v Lớp cơ sở (base class): làm cơ sở để các lớp khác kế thừa v Lớp nhận (derived class): kế thừa đặc điểm của lớp cơ sở v Khaibỏo Đ classLopNhan:LopCoSo Đ Vớd: ã classXeDap:PhuongTienGiaoThong ã classXeMay:PhuongTienGiaoThong iHcQucGiaTP.HCM Đại Học Kinh Tế Luật Constructor v Khơng được kế thừa v Lớp con truy cập bằng từ khóa base class HinhHoc { … public HinhHoc(double chuVi, double dienTich) { ChuVi = chuVi; DienTich = dienTich; } } class HinhTron : HinhHoc { … public HinhTron(double chuVi, double dienTich) : base(chuVi, dienTich) { } } Khoa Hệ Thống Thơng Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Từ khóa base v Dùng để truy cập đến thành phần của lớp cơ sở v Mức truy cập: § public § protected v Khai báo class { … (list_of_argument){ } } class : { base.( … ); } Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Từ khóa new v Dùng để khai báo phương thức ở lớp nhận khi đã có phương thức cùng tên ở lớp cơ sở v Ví dụ § public new void TinhDienTich() {…} Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Giao diện (Interface) v Interface là một giao ước, khi một lớp thực hiện inteface thì phải tn theo đúng những gì interface đó mơ tả v Thành phần § Property § Method § Event Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Interface v Khai báo interface TenInterface { //các thành phần } v Mức truy xuất: public v Các phương thức chỉ có phần khai báo, khơng có phần thân Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Ví dụ interface ILamViec { string LamViec(string tenViec); } Khoa Hệ Thống Thơng Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Ví dụ(tt) v Lớp SinhVien thực hiện interface ILamViec class SinhVien { public public public : ILamViec string MSSV { get; set; } string Nganh { get; set; } string HoTen { get; set; } public string LamViec(string tenViec) { return "Sinh Vien " + HoTen + " dang " + tenViec; } } Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Ví dụ(tt) v Lớp NhanVien thực hiện ILamViec class NhanVien : ILamViec { public string MSNV { get; set; } public string Phong { get; set; } public string HoTen { get; set; } public int HsLuong { get; set; } public virtual int Luong { get { return HsLuong * 800000; } } public string LamViec(string tenViec) { return "NhanVien " + HoTen + " dang " + tenViec; } } Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Ví dụ(tt) v Thực thi interface static void Main(string[] args) { SinhVien a = new SinhVien(); a.HoTen = "SVA"; NhanVien b = new NhanVien(); b.HoTen = "NVB"; ILamViec lv1 = a; Console.WriteLine(lv1.LamViec("hoc bai")); ILamViec lv2 = b; Console.WriteLine(lv2.LamViec("lam bao cao")); } Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Ví dụ(tt) v Kết quả Khoa Hệ Thống Thơng Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Interface v Interface có thể kế thừa v Một lớp có thể thực hiện 1 hoặc nhiều interface v Khi thực hiện interface, lớp đó phải thực hiện đầy đủ những thành phần interface đó mơ tả Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Ví dụ v Interface IQuanTri interface IQuanTri { string GiaoViec(string tenViec, string tenNguoiNhan); } class SinhVien : ILamViec, IQuanTri { //… thành phần khác public string GiaoViec(string tenViec, string nguoiNhan) { return "Sinh vien " + HoTen + " dang giao viec " + tenViec + " cho " + nguoiNhan; } } Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Ví dụ v Lớp QuanLy kế thừa NhanVien, thực hiện IQuanTri class QuanLy : NhanVien, IQuanTri { public string LamViec(string tenViec) { return "Quan ly " + HoTen + " dang " + tenViec; } public string GiaoViec(string tenViec, string nguoiNhan) { return "Quan ly " + HoTen + " dang giao viec " + tenViec + " cho " + nguoiNhan; } } Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Ví dụ v Thực thi giao diện IQuanTri SinhVien a = new SinhVien(); a.HoTen = "SVA"; NhanVien b = new NhanVien(); b.HoTen = "NVB"; QuanLy c = new QuanLy(); c.HoTen = "QLC"; IQuanTri qt1 = a; Console.WriteLine(qt1.GiaoViec("truc nhat", "SVB")); IQuanTri qt2 = c; Console.WriteLine(qt2.GiaoViec("dat hang", b.HoTen)); Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Ví dụ v Kết quả Khoa Hệ Thống Thơng Tin Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Kiểm tra thực hiện Interface v Từ khóa is § True nếu đối tượng thực hiện interface § False nếu đối tượng khơng thực hiện interface kt = a is IQuanTri; //kt =true kt = b is IQuanTri; //kt =false Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thơng Tin Kiểm tra thực hiện Interface v Từ khóa as § Thực hiện chuyển đổi sang interface § Nếu đối tượng không thực hiện interface null IQuanTri qt3 = a as IQuanTri; IQuanTri qt4 = b as IQuanTri; //null Đại Học Quốc Gia TP.HCM Đại Học Kinh Tế Luật Khoa Hệ Thống Thông Tin END .. .Đại? ?Học? ?Quốc Gia TP.HCM Đại? ?Học? ?Kinh? ?Tế? ?Luật Nội dung v Khái niệm kế thừa v Khái niệm đa hình v Giao diện (interface) Khoa Hệ Thống Thơng Tin Đại? ?Học? ?Quốc Gia TP.HCM Đại? ?Học? ?Kinh? ?Tế? ?Luật. .. § Phương tiện giao thơng Đại? ?Học? ?Quốc Gia TP.HCM Đại? ?Học? ?Kinh? ?Tế? ?Luật Kế thừa v Ví dụ: Windows form Khoa Hệ Thống Thơng Tin Đại? ?Học? ?Quốc Gia TP.HCM Đại? ?Học? ?Kinh? ?Tế? ?Luật Khoa Hệ Thống Thơng Tin... Christmas Đại? ?Học? ?Quốc Gia TP.HCM Đại? ?Học? ?Kinh? ?Tế? ?Luật Khoa Hệ Thống Thơng Tin Đa hình ü Trường hợp 1: Từ kế thừa StaffMember teo; teo = new Executive(); Đại? ?Học? ?Quốc Gia TP.HCM Đại? ?Học? ?Kinh? ?Tế? ?Luật