Kỹ thuật lập trình C/C++-Chương: Kế thừa
Số trang: 18
Loại file: pdf
Dung lượng: 371.79 KB
Lượt xem: 20
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Để quản lý nhân sự của công ty, ta có thể định nghĩa các lớp tương ứng với các vị trí làm việc của công ty:Cả 3 lớp trên đều có những biến và hàm giống hệt nhau về nội dung tạo ra một lớp Employee chứa các thông tin chung đó để sử dụng lại
Sử dụng lại code.
Giảm số code cần viết.
Dễ bảo trì, sửa đổi về sau.
Rõ ràng hơn về mặt logic trong thiết kế chương trình.Hai hướng thừa kế:
Cụ thể hoá: lớp con là một trường hợp riêng của lớp mẹ (như ví dụ trên).
Tổng quát hoá:...
Nội dung trích xuất từ tài liệu:
Kỹ thuật lập trình C/C++-Chương: Kế thừa Kế thừa (inheritance) EE3490: Kỹ thuật lập trình – HK1 2011/2012 1 Đào Trung Kiên – ĐH Bách khoa Hà Nội Khái niệm Để quản lý nhân sự của công ty, ta có thể định nghĩa các lớp tương ứng với các vị trí làm việc của công ty: class Worker { class Manager { class Director { private: private: private: string name; string name; string name; float salary; float salary; float salary; int level; int dept; public: public: public: string getName() {...} string getName() {...} string getName() {...} void pay() {...} void pay() {...} void pay() {...} void doWork() {...} void doWork() {...} void doWork() {...} ... ... ... }; }; }; Cả 3 lớp trên đều có những biến và hàm giống hệt nhau về nội dung tạo ra một lớp Employee chứa các thông tin chung đó để sử dụng lại Sử dụng lại code Giảm số code cần viết Dễ bảo trì, sửa đổi về sau Rõ ràng hơn về mặt logic trong thiết kế chương trình EE3490: Kỹ thuật lập trình – HK1 2011/2012 2 Đào Trung Kiên – ĐH Bách khoa Hà Nội Khái niệm (tiếp) Lớp mẹ Employee (hay lớp cơ sở) Các lớp con Worker Manager Director (hay lớp dẫn xuất) Hai hướng thừa kế: Cụ thể hoá: lớp con là một trường hợp riêng của lớp mẹ (như ví dụ trên) Tổng quát hoá: mở rộng lớp mẹ (vd: Point2D thêm biến z để thành Point3D) Kế thừa cho phép các lớp con sử dụng các biến và phương thức của lớp mẹ như của nó, trừ các biến và phương thức private Kế thừa với public và private: public: các thành phần public của lớp mẹ vẫn là public trong lớp con private: toàn bộ các thành phần của lớp mẹ trở thành private của lớp con EE3490: Kỹ thuật lập trình – HK1 2011/2012 3 Đào Trung Kiên – ĐH Bách khoa Hà Nội Kế thừa public void show() { class Employee { cout Kế thừa private int pop() { class LinkedList { int x = getTail(); private: deleteTail(); ... return x; public: } void insertTail(int x) { ... } ... void insertHead(int x) { ... } }; void deleteHead() { ... } void deleteTail() { ... } Stack s; int getHead() { ... } s.push(10); int getTail() { ... } s.push(20); ... s.pop(); }; s.insertTail(30); // lỗi class Stack : private LinkedList { s.getTail(); // lỗi public: void push(int x) { insertHead(x); } Tất cả các thành phần của lớp mẹ đều trở thành private của lớp con EE3490: Kỹ thuật lập trình – HK1 2011/2012 5 Đào Trung Kiên – ĐH Bách khoa Hà Nội Thành phần protected Ngoài public và private, còn có các thành phần protected: có thể được sử dụng bởi các phương thức trong lớp dẫn xuất từ nó, nhưng không sử dụng được từ ngoài các lớp đó class Worker: public Employee { class Employee { public: protected: void doWork() { ... } string name; void print() { float rate; cout Tổng kết các kiểu kế thừa Kiểu kế thừa private protected public private (không) (không) (không) Phạm vi protected private protected protected public private protected public Cột: các kiểu kế thừa Hàng: phạm vi các biến/phương thức thành phần trong lớp mẹ Kết quả: phạm vi các biến/phương thức trong lớp dẫn xuất EE3490: Kỹ thuật lập trình – HK1 2011/2012 7 Đào Trung Kiên – ĐH Bách khoa Hà Nội Constructor và destructor trong kế thừa Constructor và destructor không được các lớp con thừa kế Mỗi constructor của lớp dẫn xuất phả ...
Nội dung trích xuất từ tài liệu:
Kỹ thuật lập trình C/C++-Chương: Kế thừa Kế thừa (inheritance) EE3490: Kỹ thuật lập trình – HK1 2011/2012 1 Đào Trung Kiên – ĐH Bách khoa Hà Nội Khái niệm Để quản lý nhân sự của công ty, ta có thể định nghĩa các lớp tương ứng với các vị trí làm việc của công ty: class Worker { class Manager { class Director { private: private: private: string name; string name; string name; float salary; float salary; float salary; int level; int dept; public: public: public: string getName() {...} string getName() {...} string getName() {...} void pay() {...} void pay() {...} void pay() {...} void doWork() {...} void doWork() {...} void doWork() {...} ... ... ... }; }; }; Cả 3 lớp trên đều có những biến và hàm giống hệt nhau về nội dung tạo ra một lớp Employee chứa các thông tin chung đó để sử dụng lại Sử dụng lại code Giảm số code cần viết Dễ bảo trì, sửa đổi về sau Rõ ràng hơn về mặt logic trong thiết kế chương trình EE3490: Kỹ thuật lập trình – HK1 2011/2012 2 Đào Trung Kiên – ĐH Bách khoa Hà Nội Khái niệm (tiếp) Lớp mẹ Employee (hay lớp cơ sở) Các lớp con Worker Manager Director (hay lớp dẫn xuất) Hai hướng thừa kế: Cụ thể hoá: lớp con là một trường hợp riêng của lớp mẹ (như ví dụ trên) Tổng quát hoá: mở rộng lớp mẹ (vd: Point2D thêm biến z để thành Point3D) Kế thừa cho phép các lớp con sử dụng các biến và phương thức của lớp mẹ như của nó, trừ các biến và phương thức private Kế thừa với public và private: public: các thành phần public của lớp mẹ vẫn là public trong lớp con private: toàn bộ các thành phần của lớp mẹ trở thành private của lớp con EE3490: Kỹ thuật lập trình – HK1 2011/2012 3 Đào Trung Kiên – ĐH Bách khoa Hà Nội Kế thừa public void show() { class Employee { cout Kế thừa private int pop() { class LinkedList { int x = getTail(); private: deleteTail(); ... return x; public: } void insertTail(int x) { ... } ... void insertHead(int x) { ... } }; void deleteHead() { ... } void deleteTail() { ... } Stack s; int getHead() { ... } s.push(10); int getTail() { ... } s.push(20); ... s.pop(); }; s.insertTail(30); // lỗi class Stack : private LinkedList { s.getTail(); // lỗi public: void push(int x) { insertHead(x); } Tất cả các thành phần của lớp mẹ đều trở thành private của lớp con EE3490: Kỹ thuật lập trình – HK1 2011/2012 5 Đào Trung Kiên – ĐH Bách khoa Hà Nội Thành phần protected Ngoài public và private, còn có các thành phần protected: có thể được sử dụng bởi các phương thức trong lớp dẫn xuất từ nó, nhưng không sử dụng được từ ngoài các lớp đó class Worker: public Employee { class Employee { public: protected: void doWork() { ... } string name; void print() { float rate; cout Tổng kết các kiểu kế thừa Kiểu kế thừa private protected public private (không) (không) (không) Phạm vi protected private protected protected public private protected public Cột: các kiểu kế thừa Hàng: phạm vi các biến/phương thức thành phần trong lớp mẹ Kết quả: phạm vi các biến/phương thức trong lớp dẫn xuất EE3490: Kỹ thuật lập trình – HK1 2011/2012 7 Đào Trung Kiên – ĐH Bách khoa Hà Nội Constructor và destructor trong kế thừa Constructor và destructor không được các lớp con thừa kế Mỗi constructor của lớp dẫn xuất phả ...
Tìm kiếm theo từ khóa liên quan:
kỹ thuật máy tính C kỹ thuật lập trình giáo trình kỹ thuật lập trình C bài tập kỹ thuật lập trình C tài liệu kỹ thuật lập trình C chuyên ngành kỹ thuật lập trìnhGợi ý tài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 256 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 200 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 189 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 158 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 150 0 0 -
Giáo trình Kỹ thuật lập trình C: Căn bản & nâng cao - Phần 1
202 trang 125 0 0 -
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 117 0 0 -
Giáo trình về phân tích thiết kế hệ thống thông tin
113 trang 114 0 0 -
LUẬN VĂN: Tìm hiểu kỹ thuật tạo bóng cứng trong đồ họa 3D
41 trang 105 0 0 -
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 trang 104 0 0