Danh mục tài liệu

Bài giảng Lập trình hướng đối tượng: Chương 4 - ThS. Bùi Trọng Hiếu

Số trang: 60      Loại file: pdf      Dung lượng: 11.15 MB      Lượt xem: 9      Lượt tải: 0    
Xem trước 6 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

trong chương trước chúng ta đã nắm được được tương đối về hoạt động của thừa kế, tuy nhiên đó mới chỉ là bề mặt của những gì liên quan đến vấn đề thừa kế trong đối tượng. Trong chương này, chúng ta bắt đầu làm quen với cột trụ thứ ba của mô hình hướng đối tượng, đó là đa hình. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng: Chương 4 - ThS. Bùi Trọng Hiếu Chương 4 ĐA HÌNHLập trình hướng đối tượng – Đa hình 1 Nội dung chính  Các đặc điểm quan trọng của LTHĐT  Giới thiệu  Các ví dụ  Phương thức ảo  Đa hình  Destructor ảo  Lớp cơ sở trừu tượngLập trình hướng đối tượng – Đa hình 2 Tài liệu đọcLập trình hướng đối tượng – Đa hình 3Lập trình hướng đối tượng – Đa hình 4Lập trình hướng đối tượng – Đa hình 5 Ví dụ 1class Base class Derv1 : public Base{ { public: public: void show( ) void show( ) { { cout Ví dụ 1 (tt) class Derv2 : public Base void main( ) { { public: Derv1 d1; void show( ) Derv2 d2; { Base *bp; cout Ví dụ 2class Teacher{ string name; int numOfStudents; public: Teacher(const string & new_name,int nos) { name=new_name; numOfStudents=nos; } void print() const;};Lập trình hướng đối tượng – Đa hình 8 Ví dụ 2 (tt)void Teacher::print() const{ cout Ví dụ 2 (tt)int main(){ Teacher t1(Teacher 1,50); Principal p1(Principal 1,40,School); Teacher *ptr; char c; cout > c; if (c==t) ptr=&t1; else ptr=&p1; ptr->print(); // which print? return 0;}Lập trình hướng đối tượng – Đa hình 10 Ví dụ 3Lập trình hướng đối tượng – Đa hình 11 Ví dụ 3 (tt)Lập trình hướng đối tượng – Đa hình 12 Ví dụ 3 (tt)Lập trình hướng đối tượng – Đa hình 13 Ví dụ 3 (tt)Lập trình hướng đối tượng – Đa hình 14 Ràng buộc/Liên kết Ràng buộc/Liên kết  Sự xác định phương thức nào trong một phân cấp lớp được gọi với một đối tượng cụ thể Ràng buộc tĩnh/sớm  Chương trình dịch có thể xác định được phương thức nào được gọi trong một phân cấp lớp với một đối tượng cụ thể Ràng buộc động/trễ  Sự xác định phương thức nào trong một phân cấp lớp được sử dụng với một đối tượng cụ thể xảy ra trong thời điểm thực thi chương trìnhLập trình hướng đối tượng – Đa hình 15 Giải thích kết quả của các ví dụ  Ví dụ 1  pb là con trỏ trỏ đến đối tượng thuộc lớp cơ sở Base (Base *pb)  Ví dụ 2  ptr là con trỏ trỏ đến đối tượng thuộc lớp cơ sở Teacher (Teacher *ptr)  Ví dụ 3  ani là con trỏ trỏ đến đối tượng thuộc lớp cơ sở Animal (Animal *ani)Lập trình hướng đối tượng – Đa hình 16 Giải thích kết quả của các ví dụ (tt)  Ví dụ 1  pb=&d1; pb=&d2;  pb vẫn là trỏ đến đối tượng thuộc lớp Base (không quan tâm đến nội dung)  Ví dụ 2  Tương tự ptr vẫn là trỏ đến đối tượng thuộc lớp Teacher  Ví dụ 3  Tương tự ani vẫn là trỏ đến đối tượng thuộc lớp Animal  Lý do  Ràng buộc tĩnh/sớmLập trình hướng đối tượng – Đa hình 17 Giải pháp: Ràng buộc động Chương trình dịch không thể xác định được sự ràng buộc của đối tượng và phương thức Ràng buộc này chỉ được xác định một cách động tại thời điểm thực thi chương trình Để xác định một phương thức bị ràng buộc động, ở khai báo phương thức của lớp cơ sở phải dùng từ khóa virtual Khi một phương thức được định nghĩa ảo, tất cả các phương thức phải nạp chồng từ điểm này xuống phân cấp lớp cho dù nó có được khai báo là tường minh hay khôngLập trình hướng đối tượng – Đa hình 18 Các kết quả mới  Ví dụ 1  virtual void show( );  Kết quả:  Derv 1  Derv 2  Ví dụ 2  virtual void print() const;  Kết quả:  …  Name of School: School  Ví dụ 3  virtual void Speak()  Kết quả:  My name is Tony, go go !  My name is fluffy, meoo !Lập trình hướng đối tượng – Đa hình ...

Tài liệu được xem nhiều:

Tài liệu có liên quan: