1. Trang chủ
  2. » Giáo án - Bài giảng

Hướng đối tượng toàn tập 12

22 331 8

Đ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

Cấu trúc

  • Đa hình

  • Nội dung

  • Slide 3

  • Hàm ảo

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Hàm thuần ảo

  • Slide 13

  • Slide 14

  • Slide 15

  • Hàm hủy ảo

  • Slide 17

  • Tóm tắt

  • Slide 19

  • Bài tập

  • Slide 21

  • Slide 22

Nội dung

1Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Đa hình Đa hình 2 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung  Hàm ảo. Hàm ảo.  Hàm thuần ảo. Hàm thuần ảo.  Hàm hủy ảo. Hàm hủy ảo.  Bài tập. Bài tập. 3 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung  Hàm ảo. Hàm ảo.  Hàm thuần ảo. Hàm thuần ảo.  Hàm hủy ảo. Hàm hủy ảo.  Bài tập. Bài tập. 4 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm ảo Hàm ảo  Con trỏ đối tượng trong kế thừa: Con trỏ đối tượng trong kế thừa:  Truy xuất đối tượng bằng con trỏ => linh động. Truy xuất đối tượng bằng con trỏ => linh động.  Truy xuất đối tượng kế thừa bằng con trỏ lớp cơ sở. Truy xuất đối tượng kế thừa bằng con trỏ lớp cơ sở.  Kiểu con trỏ quyết định phương thức được gọi Kiểu con trỏ quyết định phương thức được gọi   liên kết tĩnh. liên kết tĩnh.  Đối tượng kế thừa truyền vào hàm nhận tham số kiểu cơ sở. Đối tượng kế thừa truyền vào hàm nhận tham số kiểu cơ sở.   Đối tượng kế thừa có thể đóng vai trò đối tượng cơ sở. Đối tượng kế thừa có thể đóng vai trò đối tượng cơ sở. A obj; A *p; p = &obj; p = new A; A obj; A *p; p = &obj; p = new A; // B kế thừa A. B obj; A *p = &obj; p->func(); // B kế thừa A. B obj; A *p = &obj; p->func(); // B kế thừa A. void func(A obj) { } B obj; func(obj); // B kế thừa A. void func(A obj) { } B obj; func(obj); 5 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm ảo Hàm ảo Animal +Talk() Cat +Talk() Dog +Talk()  Ví dụ: Ví dụ: class Animal class Animal { { public: public: void talk() { cout << “Don’t talk!”; } void talk() { cout << “Don’t talk!”; } }; }; class Cat: public Animal class Cat: public Animal { { public: public: void talk() { cout << “Meo meo!”; } void talk() { cout << “Meo meo!”; } }; }; class Dog: public Animal class Dog: public Animal { { public: public: void talk() { cout << “Gau gau!”; } void talk() { cout << “Gau gau!”; } }; }; 6 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm ảo Hàm ảo void main() void main() { { Animal Animal a; a; Cat Cat c; c; Dog Dog d; d; Animal Animal *p; *p; p = &a; p = &a; p->talk(); p->talk(); p = &c; p = &c; p->talk(); p->talk(); p = &d; p = &d; p->talk(); p->talk(); } } Animal talks!! Animal talks!! Animal talks!! Animal talks!! Animal talks!! Animal talks!! Animal talks!! Animal talks!! Animal talks!! Animal talks!!  Ví dụ: Ví dụ: void giveATalk(Animal *p) void giveATalk(Animal *p) { { p->talk(); p->talk(); } } void main() void main() { { Cat Cat c; c; Dog Dog d; d; giveATalk(&c); giveATalk(&c); giveATalk(&d); giveATalk(&d); } } 7 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm ảo Hàm ảo  Khái niệm hàm ảo: Khái niệm hàm ảo:  Một phương thức của lớp. Một phương thức của lớp.  Mang tính ảo. Mang tính ảo.   Chuyển lời gọi hàm cho đúng đối tượng con trỏ Chuyển lời gọi hàm cho đúng đối tượng con trỏ đang trỏ đến. đang trỏ đến.   Liên kết động. Liên kết động.  Chỉ có ý nghĩa khi gọi thông qua con trỏ. Chỉ có ý nghĩa khi gọi thông qua con trỏ.  Khai báo hàm ảo trong C++: Khai báo hàm ảo trong C++: virtual virtual <Chữ ký hàm>; <Chữ ký hàm>; 8 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm ảo Hàm ảo Animal +virtual Talk() Cat +Talk() Dog +Talk()  Ví dụ: Ví dụ: class Animal class Animal { { public: public: virtual virtual void talk() { cout << “Don’t talk!”; } void talk() { cout << “Don’t talk!”; } }; }; class Cat: public Animal class Cat: public Animal { { public: public: void talk() { cout << “Meo meo!”; } void talk() { cout << “Meo meo!”; } }; }; class Dog: public Animal class Dog: public Animal { { public: public: void talk() { cout << “Gau gau!”; } void talk() { cout << “Gau gau!”; } }; }; 9 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm ảo Hàm ảo void main() void main() { { Animal Animal a; a; Cat Cat c; c; Dog Dog d; d; Animal Animal *p; *p; p = &a; p = &a; p->Talk(); p->Talk(); p = &c; p = &c; p->Talk(); p->Talk(); p = &d; p = &d; p->Talk(); p->Talk(); } } Cat talks!! Cat talks!! Dog talks!! Dog talks!! Animal talks!! Animal talks!! Cat talks!! Cat talks!! Dog talks!! Dog talks!!  Ví dụ: Ví dụ: void giveATalk(Animal *p) void giveATalk(Animal *p) { { p->talk(); p->talk(); } } void main() void main() { { Cat Cat c; c; Dog Dog d; d; giveATalk(&c); giveATalk(&c); giveATalk(&d); giveATalk(&d); } } 10 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm ảo Hàm ảo  Sử dụng hàm ảo để làm gì? Sử dụng hàm ảo để làm gì?  Gọn gàng, đơn giản, uyển chuyển, linh động. Gọn gàng, đơn giản, uyển chuyển, linh động.   Chương trình có tính dễ mở rộng, nâng cấp. Chương trình có tính dễ mở rộng, nâng cấp. void giveATalk(Animal *p) void giveATalk(Animal *p) { { p->talk(); p->talk(); } } void giveATalk(Animal obj, int iType) void giveATalk(Animal obj, int iType) { { if (iType == 0) if (iType == 0) { { Cat c = (Cat)obj; Cat c = (Cat)obj; c.talk(); c.talk(); } } else if (iType == 1) else if (iType == 1) { { Dog d = (Dog)obj; Dog d = (Dog)obj; d.talk(); d.talk(); } } } } [...]... pháp lập trình hướng đối tượng – GV Nguyễn 19 Bài tập  Bài tập 12. 1: class A { public: [yyy] void f1() { cout . trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm ảo Hàm ảo  Con trỏ đối tượng trong kế thừa: Con trỏ đối tượng trong kế thừa:  Truy xuất đối tượng bằng con trỏ => linh động. Truy xuất đối tượng. tĩnh.  Đối tượng kế thừa truyền vào hàm nhận tham số kiểu cơ sở. Đối tượng kế thừa truyền vào hàm nhận tham số kiểu cơ sở.   Đối tượng kế thừa có thể đóng vai trò đối tượng cơ sở. Đối tượng. trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung  Hàm ảo. Hàm ảo.  Hàm thuần ảo. Hàm thuần ảo.  Hàm hủy ảo. Hàm hủy ảo.  Bài tập. Bài tập. 12 Phương pháp lập trình hướng đối tượng

Ngày đăng: 14/07/2014, 21:00

TỪ KHÓA LIÊN QUAN

w