Giáo trình Lập trình hướng đối tượng - Chương 9: Kế thừa
Hiểu được các loại quan hệ?
Hiểu được kế thừa trong lập trình
hướng đối tượng là gì?
Hiểu được khái niệm cây kế thừa.
Hiểu được khái niệm sơ đồ lớp.
rivate Chương 09 - 34 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Ghi chú: Từ khoá dẫn xuất có ba loại là private, protected, public. Các sinh viên tự tìm hiểu thêm từ khoá dẫn xuất protected trong tài liệu. Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Public Private Protected Chương 09 - 35 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Ghi chú: Từ khoá dẫn xuất có ba loại là private, protected, public. Các sinh viên tự tìm hiểu thêm từ khoá dẫn xuất protected trong tài liệu. Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Public Private Protected Public Chương 09 - 36 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Ghi chú: Từ khoá dẫn xuất có ba loại là private, protected, public. Các sinh viên tự tìm hiểu thêm từ khoá dẫn xuất protected trong tài liệu. Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Protected Public Chương 09 - 37 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Ghi chú: Từ khoá dẫn xuất có ba loại là private, protected, public. Các sinh viên tự tìm hiểu thêm từ khoá dẫn xuất protected trong tài liệu. Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Private Protected Public Chương 09 - 38 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Ghi chú: Từ khoá dẫn xuất có ba loại là private, protected, public. Các sinh viên tự tìm hiểu thêm từ khoá dẫn xuất protected trong tài liệu. Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Public Private Protected Public Chương 09 - 39 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Ghi chú: Từ khoá dẫn xuất có ba loại là private, protected, public. Các sinh viên tự tìm hiểu thêm từ khoá dẫn xuất protected trong tài liệu. Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Public Private || || Protected Public Chương 09 - 40 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Ghi chú: Từ khoá dẫn xuất có ba loại là private, protected, public. Các sinh viên tự tìm hiểu thêm từ khoá dẫn xuất protected trong tài liệu. Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Public Private || || Protected private Public Chương 09 - 41 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Ghi chú: Từ khoá dẫn xuất có ba loại là private, protected, public. Các sinh viên tự tìm hiểu thêm từ khoá dẫn xuất protected trong tài liệu. Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Public Private || || Protected private protected Public Chương 09 - 42 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Ghi chú: Từ khoá dẫn xuất có ba loại là private, protected, public. Các sinh viên tự tìm hiểu thêm từ khoá dẫn xuất protected trong tài liệu. Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Public Private || || Protected private protected Public private Chương 09 - 43 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Ghi chú: Từ khoá dẫn xuất có ba loại là private, protected, public. Các sinh viên tự tìm hiểu thêm từ khoá dẫn xuất protected trong tài liệu. Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Public Private || || Protected private protected Public private public Chương 09 - 44 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Các thuộc tính và phương thức được khai báo trong phạm vi private của lớp cơ sở thì sẽ không được hiểu ở lớp dẫn xuất. Các thuộc tính và phương thức được khai báo trong phạm vi protected của lớp cơ sở nếu được dẫn xuất bằng từ khóa private thì các thuộc tính và phương thức đó sẽ được hiểu ở lớp dẫn xuất như là thành phần private của lớp dẫn xuất. Các thuộc tính và phương thức được khai báo trong phạm vi protected của lớp cơ sở nếu được dẫn xuất bằng từ khóa public thì các thuộc tính và phương thức đó sẽ được hiểu ở lớp dẫn xuất hư là thành phần protected của lớp dẫn xuất. Chương 09 - 45 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Các thuộc tính và phương thức được khai báo trong phạm vi public của lớp cơ sở nếu được dẫn xuất bằng từ khóa private thì các thuộc tính và phương thức đó sẽ được hiểu ở lớp dẫn xuất như là thành phần private của lớp dẫn xuất. Các thuộc tính và phương thức được khai báo trong phạm vi public của lớp cơ sở nếu được dẫn xuất bằng từ khóa public thì các thuộc tính và phương thức đó sẽ được hiểu ở lớp dẫn xuất như là thành phần public của lớp dẫn xuất. Chương 09 - 46 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Từ khóa dẫn xuất Phạm vi lớp cơ sở Private Public Private (1) (2) Protected (3) (4) Public (5) (6) Chương 09 - 47 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ (1) (2) (3) (4) (5) (6) Chương 09 - 48 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Chương 09 - 49 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. QUI TẮC KẾ THỪA TRONG C++ Bảng qui tắc kế thừa trong C++ Chương 09 - 50 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. CÂY KẾ THỪA CHI TIẾT Qui tắc vẽ cây kế thừa chi tiết: Các thuộc tính và phương thức thuộc phạm vi private được vẽ với màu xanh bên trái. Các thuộc tính và phương thức thuộc phạm vi protected được vẽ với màu xanh bên phải. Các thuộc tính và phương thức thuộc phạm vi public được vẽ với màu đỏ bên phải. Các thuộc tính và phương thức có được do kế thừa được vẽ bằng nét đứt không liên tục. Các thuộc tính và phương thức của chính bản thân lớp được vẽ bằng nét liền liên tục. Chương 09 - 51 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. CÂY KẾ THỪA CHI TIẾT A B a f() b g() c h() t aa() b g() z xy() c h() public Chương 09 - 52 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. CÂY KẾ THỪA CHI TIẾT A B y g() C p ab() z abc(int) public public ab() mn() xyz() k a f() x q t h() x uv() x ab() y g() k mn() p ab() g() y Chương 09 - 53 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 7. TOÁN TỬ GÁN TRONG KẾ THỪA Ví dụ dẫn nhập 01: Hãy cho biết trong chương trình dưới đây câu lệnh nào đúng câu lệnh nào sai: 11.class A 12.{ 13. ... 14.}; 15.class B:public A 16.{ 17. ... 18.}; 19.void main() 20.{ 21. A a; 22. B b; 23. a = b; 24. b = a; 25.} Chương 09 - 54 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 7. TOÁN TỬ GÁN TRONG KẾ THỪA Ví dụ dẫn nhập 02: Hãy cho biết đoạn chương trình dưới đây câu lệnh nào đúng, câu lệnh nào sai: 1. class A 2. { 3. ... 4. }; 9. void main() 10.{ 11. A *a; 12. B *b; 13. A x; 14. B y; 15. a = &x; 16. b = &y; 17. a = &y; 18. b = &x; 19.} 5. class B: public A 6. { 7. ... 8. }; Chương 09 - 55 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 7. TOÁN TỬ GÁN TRONG KẾ THỪA Toán tử gán trong kế thừa được thực hiện theo nguyên tắc: trường hợp đặt biệt có thể được gán cho trường hợp tổng quát, và trường hợp tổng quát thì không thể gán cho trường hợp đặt biệt được. Qui tắc trên áp dụng cho tất cả các ngôn ngữ hỗ trợ lập trình hướng đối tượng như C++, Java, VB.NET, C#, Python,... Chương 09 - 56 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 7. TOÁN TỬ GÁN TRONG KẾ THỪA Áp dụng qui tắc trên cho ngôn ngữ lập trình hướng đối tượng C++ ta có thể nói như sau: một đối tượng thuộc lớp dẫn xuất có thể được gán cho một đối tượng thuộc lớp cơ sở. Điều ngược lại là sai, nghĩa là một đối tượng thuộc lớp cơ sở không được quyền gán cho một đối tượng thuộc lớp dẫn xuất. Chương 09 - 57 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 7. TOÁN TỬ GÁN TRONG KẾ THỪA Ví dụ dẫn nhập 01: Hãy cho biết trong chương trình dưới đây câu lệnh nào đúng câu lệnh nào sai: 11.class A 12.{ 13. ... 14.}; 15.class B:public A 16.{ 17. ... 18.}; 19.void main() 20.{ 21. A a; 22. B b; 23. a = b; 24. b = a; 25.} Chương 09 - 58 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 7. TOÁN TỬ GÁN TRONG KẾ THỪA Mở rộng qui tắc trên cho con trỏ đối tượng ta có thể nói như sau: một con trỏ đối tượng thuộc lớp cơ sở có thể giữ địa chỉ của một đối tượng thuộc lớp dẫn xuất. Ngược lai, một con trỏ đối tượng thuộc lớp dẫn xuất không thể giữ địa chỉ của một đối tượng thuộc lớp cơ sở. Chương 09 - 59 LTHĐTKhoa CNTT GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 7. TOÁN TỬ GÁN TRONG KẾ THỪA Hãy cho biết đoạn chương trình dưới đây câu lệnh nào đúng, câu lệnh nào sai: 11.class A 12.{ 13.}; 14.class B:public A 15.{ 16.}; 17.void main() 18.{ 19. A *a; 20. B *b; 21. A x; 22. B y; 23. a = &x; 24. b = &y; 25. a = &y; 26. b = &x; 27.}
File đính kèm:
- Giáo trình Lập trình hướng đối tượng - Chương 9 Kế thừa.pdf