Xem mẫu

  1. om .c Lập trình ng co an Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ th o ng du u cu 2/10/2017 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  2. Nội dung  5.1 Dẫn xuất/thừa kế om  5.2 Hàm ảo và cơ chế đa hình/đa xạ .c  5.3 Lớp thuần ảo ng  5.4 Kiểm soát truy nhập co  5.5 Tương thích kiểu an th o ng du u cu Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 2 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  3. 5.1 Dẫn xuất và kế thừa  Nghiên cứu các thuộc tính và phương thức của các loại xe đạp sau om .c  Xe đạp (Bicycle)  Tandem bicycle ng co an th o ng du u cu Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 3 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  4.  Racing Bike  Mountain Bike om .c ng co an th o ng du u cu Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 4 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  5. 5.1 Dẫn xuất và kế thừa (…)  Tandem bicycle là một loại xe đạp om – Xe đạp có hai yên .c  Mountain bicycle là một loại xe đạp ng – Xe đạp có khả năng chống sốc (lốp dầy và nhiều bắnh răng) co  Racing bicyle là một loại xe đạp an – Xe đạp có cấu tạo khí động lực học nhẹ th  Tandem, mountain, racing bicycle là những loại xe ng đạp chuyên dụng o du – Có các thành phần cơ bản của một chiếc xe đạp – Cùng nguyên lý hoạt động u cu – Bổ sung thêm các thông tin khác Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 5 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  6. 5.1 Dẫn xuất và kế thừa (…)  Cơ chế dẫn xuất/thừa kế là một kỹ thuật lập trình hướng đối tượng cho phép chuyên biệt hóa om  Dẫn xuất cho phép tạo ra một lớp mới (lớp dẫn xuất) của các đối .c tượng bằng cách sử dụng các lớp cũ như là các lớp cơ sở ng – Lớp dẫn xuất thừa hưởng các thuộc tính và hành vi của lớp “cha- co mẹ” (lớp cơ sở) – Lớp dẫn xuất là một phiên bản chuyên biệt hóa của lớp “cha-mẹ” an th ng Lớp cơ sở - ” lớp cha mẹ” Bicycle o du u Mountain Racing Tandem cu Bikes Bikes Bikes Lớp dẫn xuất Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 6 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  7. Ví dụ minh họa sử dụng cơ chế dẫn xuất  Xây dựng các lớp biểu diễn về con người, sinh viên, giảng viên om .c  Các thuộc tính và phép toán cơ bản của lớp Person ng co Tên lớp Person an name: string age: int Thuộc tính th gender: string ng set_name o get_name du set_age Phép toán/ get_age u phương thức cu set_gender get_gender display Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 7 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  8.  Các thuộc tính và phép toán cơ bản của lớp Student và Lecture om Student Lecture .c name: string name: string ng age: int age: int gender: string gender: string co class: string faculty: string an id: int telnumber: int set_name th set_name get_name ng get_name set_age set_age get_age o get_age du set_gender set_gender get_gender get_gender u set_class set_faculty cu get_class get_faculty set_id set_telnumber get_id get_telnumber display display Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 8 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  9. 5.1 Dẫn xuất và kế thừa (…)  Ba lớp trên giống nhau về: om – Thuộc tính: .c  Name  Age ng  gender co – Phương thức an  set_name, get_name th  set_age, get_age ng  set_gender, get_gender o  Khác nhau: lớp Student, Lecture có bổ sung thêm các du thuộc tính và phương thức u cu Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 9 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  10. Person  Quan hệ lớp name: string Lớp cơ sở age: int gender: string set_name om get_name .c set_age get_age ng set_gender get_gender co display Quan hệ dẫn xuất an Lớp dẫn xuất th ng Student Lecture o du class: string Faculty: string ID: int Telnumber: int u cu set_class set_faculty get_class get_faculty set_ID set_telnumber get_ID get_telnumber display display Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  11. Thực hiện (Lớp Person) //Khai báo lớp Person trong file person.h om #include #include .c using namespace std; ng class Person{ string name; co int age; an string gender; public: Person(string,int,string); th ng string get_name(); o void set_name(string); du int get_age(); void set_age(int); u cu string get_gender(); void set_gender(string); void display() }; Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  12. Thực hiện (Lớp Person) //Định nghĩa lớp Person trong file person.cpp #include “person.h” Person::Person(string _name,int _age, string _gender){ om name = _name; age = _age; .c sex = _gender; ng } string Person::get_name(){ return name;} co void Person::set_name(string _name){ name = _name;} an int Person::get_age(){ return age;} void Person::set_age(int _age){ age = _age;} th string Person::get_gender(){ return gender;} ng void Person::set_gender(string _gender){gender = _gender;} void Person::display(){ o cout
  13. Thực hiện (Lớp Student) //Khai báo lớp Student trong file student.h class Student: public Person om { .c string lop; int id; ng public: co Student(string, int, string, string,int); an void set_class(string c); th string get_class(); ng void set_id(int i); int get_id(); o du void display(); }; u cu Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  14. Thực hiện (Lớp Student) //Định nghĩa lớp Student trong file student.cpp om #include “student.h” Student::Student(string _n,int _a, string _g, string .c _l,int _id) ng :Person(_n,_a,_g){ lop = _l; co id = _id; an } th void Student:: set_class(string c){lop = c;} string Student:: get_class(){ return lop;} ng void Student:: set_id(int i){id = i;} o int Student:: get_id(){return id;} du void Student:: display(){ u Person::display(); cu cout
  15. Thực hiện (Lớp Lecture) om // Khai báo lớp Lecture trong file lecture.h class Lecture:public Person{ .c string faculty; ng int telnumber; public: co Lecture(string,int, string, string,int); an void set_faculty(string f); th string get_faculty(); void set_telnumber(int tel); ng int get_telnumber(); o void display(); du }; u cu Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  16. Thực hiện (Lớp Lecture) om //Định nghĩa lớp Lecture trong file lecture.cpp #include “lecture.h” .c Lecture::Lecture(string _n,int _a, string _g, string _f,int _t) ng :Person(_n,_a,_g){ faculty = _f; co telnumber = _t; an } void Lecture:: set_faculty(string f){faculty = f;} th string Lecture:: get_faculty(){ return faculty;} ng void Lecture:: set_telnumber(int tel){telnumber = tel;} int Lecture:: get_telnumber(){return telnumber;} o void Lecture:: display(){ du Person::display(); u cout
  17.  Chương trình minh họa sử dụng 1 //Thực hiện trong file main.cpp #include #include “person.h” #include “student.h” om #include “lecture.h” void main(){ .c Person per("John",21,"man"); Student stu("Marry",22,"woman","Electronics1-K53",20080001); ng Lecture lec("Michel",22,"man","Electronics Engineering",123456789); cout
  18.  Chương trình minh họa sử dụng 2 //Thực hiện trong file main.cpp void main(){ Person per("John",21,"man"); Student stu("Marry",22,"woman","Electronics1-K53",20080001); om Lecture lec("Michel",22,"man","Electronics Engineering",123456789); per.display(); stu.display(); .c lec.display(); } ng  Kết quả chạy chương trình co an th o ng du u cu Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  19. Các dạng dẫn xuất/thừa kế om .c ng co an th o ng du u cu Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  20. Tóm lược  Lớp dẫn xuất có hai mục đích cơ bản om – Mở rộng các tính năng của lớp cơ sở .c – Thừa hưởng các thuộc tính và phép toán của lớp cơ sở – Cụ thể hóa các phép toán qua những phương thức khác nhau ng  Ưu điểm của cơ chế thừa hưởng co – Xây dựng một mô hình phần mềm hướng đối tượng dễ hiểu an th – Tiết kiệm được công việc thực hiện qua sử dụng lại các lớp cơ sở ng – Hạn chế lỗi qua cơ chế thừa hưởng o du u cu Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt
nguon tai.lieu . vn