Hướng đối tượng Tính thừa kế

11 371 5
Tài liệu đã được kiểm tra trùng lặp
Hướng đối tượng  Tính thừa kế

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Hướng đối tượng Tính thừa kế

Tính kế thừaI. Cách xây dựng I. Cách xây dựng Tính thừa kế là khả năng sử dụng lại dữ Tính thừa kế là khả năng sử dụng lại dữ liệu và phương thức của một lớp khi khai liệu và phương thức của một lớp khi khai báo một lớp mới.báo một lớp mới.Lớp cha (base classs):class animal { public: void eat(void); void sleep(void); void breathe(void); };Lớp con (derived class):class snake : public animal { int fench; int venomous; public: void bite (animal sprey) } anaconda;Lớp con (derived class):class mouse : public animal { int tail; int ears; int leg;public: void run(void);} jerry;Quan hệ IS-A Tính kế thừaTruy cập các thành viên của lớp chaTruy cập các thành viên của lớp chaLớp con được tham chiếu đến các dữ liệu Lớp con được tham chiếu đến các dữ liệu và phương thức của lớp cha.và phương thức của lớp cha.Lớp cha (và do đó các đối tượng của nó) Lớp cha (và do đó các đối tượng của nó) không có quyền truy cập đến lớp con.không có quyền truy cập đến lớp con.Tùy vào việc khai báo quyền truy cập Tùy vào việc khai báo quyền truy cập (public | private | protected) của các thành (public | private | protected) của các thành phần ở lớp cha mà có sự khác nhau về phần ở lớp cha mà có sự khác nhau về khả năng truy cập các thành phần nàykhả năng truy cập các thành phần này Tính kế thừaTruy cập các thành viên của lớp chaNoneNoneXprivateNoneXXprotectedXXXpublicAccess right from other objectsAccess right from members of derived classAccess right from its membersPermission label Tính kế thừaCác kiểu thừa kếCác kiểu thừa kế Khai báo:class class_name: inheritance_type base_class {private: data and function listpublic: data and funtion listprotected: …….} object_list;Inheritance_type có thể là public, private hoặc protectedKhông được thừa kếprivateprotectedprivateprotectedprotectedprotectedprivatepublicpublicThừa kế kiểu protectedThừa kế kiểu privateThừa kế kiểu publicThành viên của lớp cha là Tính kế thừaII. Khi có phương thức xây dựng II. Khi có phương thức xây dựng và phương thức hủy bỏ (1)và phương thức hủy bỏ (1)Constructor của lớp cơ sở được gọi đầu Constructor của lớp cơ sở được gọi đầu tiên, sau đó constructor thích hợp của lớp tiên, sau đó constructor thích hợp của lớp con mới được gọi. con mới được gọi. Ví dụ: class Base{ protected: int a;public: Base(void) {a=0;} //default constructorBase ( int c) {a=c;} // one argument constructor}class Derived{public: Derived():Base(){} //default constructorDerived (int c):Base(c) {} //one argument constructor}Chú ý dấu “:” ở đây Tính kế thừaII. Khi có phương thức xây dựng và phương thức hủy bỏ (2)Destructor của lớp con được gọi đầu tiên, sau đó constructor của lớp cha mới được gọi. Nếu constructor của lớp con không làm gì hoặc không có thêm các hàm thành viên nào được bổ sung trong lớp con thì destructor của lớp con có thể là một hàm trống. Tính kế thừaCác lớp container (1)Các lớp container (1)Khi một lớp X được dẫn xuất public từ một Khi một lớp X được dẫn xuất public từ một lớp Y, ta nói X là một Y (quan hệ ISA)lớp Y, ta nói X là một Y (quan hệ ISA)Ngược lại khi lớp X có chứa một thành Ngược lại khi lớp X có chứa một thành viên của lớp khác (lớp Y) ta nói X chứa Y viên của lớp khác (lớp Y) ta nói X chứa Y hay nói cách khác X là một containerhay nói cách khác X là một containerVí dụ: class X{ public: Y abc;Z def;}X là container chứa một thành viên thuộc lớp YX là container chứa một thành viên thuộc lớp Z Tính kế thừaCác lớp container (2)Các lớp container (2)class engine{ private: int num; //number of turbofan public: engine (int s) {num=s;}};class Jet{private: int jt; engine eobj;public: Jet(int x,int y): eobj (y) {jt=x}}Jet là một lớp container chứa member eobj thuộc lớp engineDấu “:” này để báo cho biết lớp nào sẽ được gọi constructor này được dự kiến sẽ có gọi tới lớp engine Tính kế thừaIII. ĐA THỪA KẾ (Kế thừa bội) III. ĐA THỪA KẾ (Kế thừa bội) Đa thừa kế là tiến trình tạo một lớp mới từ Đa thừa kế là tiến trình tạo một lớp mới từ haihai lớp cha. lớp cha.Cú pháp:class base1 {public: void a(void);}class base2 {public: void b(void);}class derived : public base1,base2 {public: void c(void);} derive_object;Liệt danh sách hai lớp cha cách nhau bởi dấu phẩyĐối tượng của lớp thừa kế này sẽ được thừa kế mọi thành viên public và protected của lớp base1 và base2 Tính kế thừaIV. Phương thức thiết lập với lớp kế thừa bội IV. Phương thức thiết lập với lớp kế thừa bội (constructor của lớp đa thừa kế)(constructor của lớp đa thừa kế)Cú pháp:class base1 {public: base1();base1(type v); // các constructor của lớp base1void a(void);}class base2 {public: base2(); //constructor của lớp base2void b(void);}class derived : public base1,base2 {public: derived(): base1(),base2();//constructor của lớp convoid c(void);} derive_object;Khi derived_object được khởi tạo thì các constructor được gọi theo thứ tự:2. constructor của các lớp cha theo như thứ tự được liệt kê3. constructor của bản thân lớp này.Ví dụ 17Ví dụ 18 [...].. .Tính kế thừa V Thiết kế theo hướng đối tượng . tới lớp engine Tính kế thừaIII. ĐA THỪA KẾ (Kế thừa bội) III. ĐA THỪA KẾ (Kế thừa bội) Đa thừa kế là tiến trình tạo một lớp mới từ Đa thừa kế là tiến trình. constructor của bản thân lớp này.Ví dụ 17Ví dụ 18 Tính kế thừaV. Thiết kế theo hướng đối tượngV. Thiết kế theo hướng đối tượng

Ngày đăng: 13/11/2012, 17:01

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan