Lập trình hướng đối tượng - Chương 4 pps

60 664 0
Lập trình hướng đối tượng - Chương 4 pps

Đ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

Lập trình hướng đối tượng – Đa hình 1 Chương 4 ĐA HÌNH Lập trình hướng đối tượng – Đa hình 2 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 ngớ ơ ở ừ ượ Lập trình hướng đối tượng – Đa hình 3 Tài liệu đọc Lập trình hướng đối tượng – Đa hình 4 Lập trình hướng đối tượng – Đa hình 5 Lập trình hướng đối tượng – Đa hình 6 Ví dụ 1 class Base { public: void show( ) { cout << “Base \n”; } }; class Derv1 : public Base { public: void show( ) { cout << “Derv 1 \n”; } }; Lập trình hướng đối tượng – Đa hình 7 Ví dụ 1 (tt) void main( ) { Derv1 d1; Derv2 d2; Base *bp; bp = &d1; bp → show( ); bp = &d2; bp → show( ); } class Derv2 : public Base { public: void show( ) { cout << “Derv 2 \n”; } }; Lập trình hướng đối tượng – Đa hình 8 Ví dụ 2 class 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 9 Ví dụ 2 (tt) void Teacher::print() const { cout << "Name: "<< name << endl; cout << " Num of Students:"<< numOfStudents << endl; } class Principal : public Teacher { string SchoolName; public: Principal(const string & new_name,int nos, const string & sn) :Teacher(new_name,nos) { SchoolName=sn; } void print() const; }; void Principal::print() const { Teacher::print(); cout << " Name of School:"<< SchoolName << endl; } Lập trình hướng đối tượng – Đa hình 10 Ví dụ 2 (tt) int main() { Teacher t1("Teacher 1",50); Principal p1("Principal 1",40,"School"); Teacher *ptr; char c; cout << "Teacher or Principal "; cin >> c; if (c=='t') ptr=&t1; else ptr=&p1; ptr->print(); // which print? return 0; } [...]... hướng đối tượng – Đa hình 27 Một số ví dụ (tt) Lập trình hướng đối tượng – Đa hình 28 Một số ví dụ (tt) Lập trình hướng đối tượng – Đa hình 29 Thêm lớp mới Lập trình hướng đối tượng – Đa hình 30 Thêm lớp mới (tt) Lập trình hướng đối tượng – Đa hình 31 Cách làm việc của đa hình Lập trình hướng đối tượng – Đa hình 32 Ứng dụng đa hình Lập trình hướng đối tượng – Đa hình 33 Chú ý với phương thức ảo  ...Ví dụ 3 Lậ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   Ràng buộc tĩnh/sớm   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ể Chương trình dịch có thể xác định... shapes[10] 24 Đa hình (tt)  Do vậy, mặc dù tên của thông điệp là giống nhau (như draw()) nhưng các đối tượng nhận thông điệp sẽ đáp ứng theo các cách khác theo kiểu đối tượng của nó   (như Rectangle::draw(), Triangle::draw(), Ellipse::draw()) Điều này gọi là đa hình Lập trình hướng đối tượng – Đa hình 25 Một số ví dụ Lập trình hướng đối tượng – Đa hình 26 Một số ví dụ (tt) Lập trình hướng đối tượng –... của đối tượng mà p đang trỏ đến Chú ý: Gọi phương thức method trên một đối tượng kiểu Base sẽ không có hiệu quả như đã nói ở trên Lập trình hướng đối tượng – Đa hình 20 Đa hình Ví dụ: Drawing tool Rectangle Triangle Ellipse Lập trình hướng đối tượng – Đa hình 21 Chúng ta muốn chúng làm gì ? Đặt chúng vào một thùng chứa tổng quát và … Rectangle Triangle Ellipse Shape* shapes[10] Lập trình hướng đối tượng. .. đế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    Ví dụ 2   Tương tự ptr vẫn là trỏ đến đối tượng thuộc lớp Teacher Ví dụ 3   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) 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ớm Lập trình. .. 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ình Lậ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   Ví dụ 2   pb là con trỏ trỏ đến đối tượng thuộc lớp cơ sở Base (Base *pb) ptr là con trỏ trỏ đến đối tượng thuộc lớp cơ sở... < numShapes; i++) { shapes[i ]-> draw(s); } “draw” “draw” “draw” Shape* shapes[10] Lập trình hướng đối tượng – Đa hình 23 Chúng ta muốn chúng làm gì ? Nhưng, làm sao để draw() mỗi đố i tượ ng theo các cách khác nhau void Rectangle::draw() { // draw a rectangle } void Triangle::draw() { // draw a triangle } void Ellipse::draw() { // draw an ellipse } Lập trình hướng đối tượng – Đa hình “draw” “draw”... là phương thức ảo Lập trình hướng đối tượng – Đa hình 34 Destructor ảo   The destructor must be declared virtual so that polymorphism can be achieved when a delete statement is applied to a base class pointer to delete a derived class object A base class destructor should always be declared virtual if at least one other function in the class is declared virtual Lập trình hướng đối tượng – Đa hình 35... nó có được khai báo là tường minh hay không Lậ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ả:    Ví dụ 2   virtual void print() const; Kết quả:    Derv 1 Derv 2 … 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 19 Phương thức ảo   Giả... 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ớm Lậ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ở . s tr u t ngớ ơ ở ừ ượ Lập trình hướng đối tượng – Đa hình 3 Tài liệu đọc Lập trình hướng đối tượng – Đa hình 4 Lập trình hướng đối tượng – Đa hình 5 Lập trình hướng đối tượng – Đa hình 6 Ví dụ. ptr=&p1; ptr->print(); // which print? return 0; } Lập trình hướng đối tượng – Đa hình 11 Ví dụ 3 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. Lập trình hướng đối tượng – Đa hình 1 Chương 4 ĐA HÌNH Lập trình hướng đối tượng – Đa hình 2 Nội dung chính  Các đ c đi m quan tr ng

Ngày đăng: 09/07/2014, 00:20

Từ khóa liên quan

Mục lục

  • Chương 4

  • Nội dung chính

  • Tài liệu đọc

  • Slide 4

  • Slide 5

  • Ví dụ 1

  • Ví dụ 1 (tt)

  • Ví dụ 2

  • Ví dụ 2 (tt)

  • Slide 10

  • Ví dụ 3

  • Ví dụ 3 (tt)

  • Slide 13

  • Slide 14

  • Ràng buộc/Liên kết

  • Giải thích kết quả của các ví dụ

  • Giải thích kết quả của các ví dụ (tt)

  • Giải pháp: Ràng buộc động

  • Các kết quả mới

  • Phương thức ảo

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

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

Tài liệu liên quan