Bài giảng Kỹ thuật lập trình C/C++ - Chương 10: Lập trình hướng đối tượng chủ đề nâng cao trình bày các nội dung: Đa thừa kế, đa thừa kế - thừa kế ảo, đa hình (polymorphism), đa hình - hàm có tính abstract,... Mời các bạn cùng tham khảo.
Chương 10 Lập trình hướng đối tượng chủ đề nâng cao -Lê Thành Sách Trường Đại Học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính CuuDuongThanCong.com © 2017 Lập trình C/C++ https://fb.com/tailieudientucntt Nội dung n n Đa thừa kế Đa thừa kế: thừa kế ảo n n n n Khởi động lớp cha thừa kế ảo Đa hình (polymorphism) Đa hình: hàm có tính abstract Tổng kết Trường Đại Học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính CuuDuongThanCong.com © 2017 Lập trình C/C++ https://fb.com/tailieudientucntt Đa thừa kế n Là gì? n Là lớp thừa kế thành viên từ nhiều lớp, ví dụ sau Lớp ConsultantManager PermanentManager, có đến lớp cha Trường hợp tổng quát: có nhiều cha http://www.uml-diagrams.org/generalization.html Trường Đại Học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính CuuDuongThanCong.com © 2017 Lập trình C/C++ https://fb.com/tailieudientucntt Đa thừa kế n Mô tả đa thừa kế ntn? n n Liệt kê lớp cha ví dụ sau Sử dụng dấu phẩy để ngăn cách Trường Đại Học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính CuuDuongThanCong.com © 2017 Lập trình C/C++ https://fb.com/tailieudientucntt Dùng dấu phẩy “,” để liệt kê lớp cha class }; class }; class }; class }; class }; class }; class }; class }; Employee{ TemporaryEmployee: public Employee{ PermanentEmployee: public Employee{ Consultant: public TemporaryEmployee{ Manager: public Employee{ ConsultantManager: public Consultant, public Manager{ Director: public Manager{ PermanentManager: public Manager, public PermanentEmployee{ Trường Đại Học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính CuuDuongThanCong.com © 2017 Lập trình C/C++ https://fb.com/tailieudientucntt Đa thừa kế n Sơ đồ nhớ đối tượng n Giả sử có hệ thống lớp hình vẽ, Cũng giả sử code C++ sinh slide trước n Xét dòng khai báo biến (tạo đối tượng) sau: n PermanentManager obj; n Bộ nhớ đối tượng “obj” tổ chức ntn? Trường Đại Học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính CuuDuongThanCong.com © 2017 Lập trình C/C++ https://fb.com/tailieudientucntt Vùng nhớ Employee Vùng nhớ Manager Vùng nhớ Employee Vùng nhớ PermanentEmployee Vùng nhớ PermanentManager Theo cách mô tả thừa kế slide trước: Bên đối tượng kiểu “PermanentManager” có đến đối tượng kiểu “Employee” hoàn toàn riêng biệt khác Trường Đại Học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính CuuDuongThanCong.com © 2017 Lập trình C/C++ https://fb.com/tailieudientucntt Đa thừa kế: Minh hoạ (I) n Xét sơ đồ đa thừa kế hình vẽ Hiện thực cho lớp cho slide Trường Đại Học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính CuuDuongThanCong.com © 2017 Lập trình C/C++ https://fb.com/tailieudientucntt Đa thừa kế: Minh hoạ (I) Chứa tên lớp con: ClassB ClassC class ClassA{ private: Khởi động biến string derived_class_name; public: ClassA(string name): derived_class_name(name){ cout