Bài giảng Lập trình hướng đối tượng: Chương 6 - Trần Minh Thái
Số trang: 40
Loại file: pptx
Dung lượng: 259.25 KB
Lượt xem: 9
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Lập trình hướng đối tượng chương 6 giới thiệu về tính đa hình trong lập trình hướng đối tượng với những nội dung cơ bản như sau: Giới thiệu đa hình, phương thức ảo, lớp trừu tượng, và một số bài tập ví dụ.
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 6 - Trần Minh Thái Chương 6. Tính đa hình(Polymorphism)TRẦNMINHTHÁIEmail:minhthai@itc.edu.vnWebsite:www.minhthai.edu.vn Cập nhật: 10 tháng 04 năm 2015 Nội dung#2 1. Giới thiệu đa hình 2. Phương thức ảo 3. Lớp trừu tượng 4. Bài tập ví dụ Giới thiệu [1/6]#3 • Giả sử có 2 hàm • double max(double d1, double d2); • int max(int i1, int i2); àMột thông điệp (lời gọi hàm) được hiểu theo các cách khác nhau tùy theo danh sách tham số của thông điệp àĐa hình hàm đa năng hóa hàm Giới thiệu [2/6]#4 • Đa hình là hiện tượng các đối tượng thuộc các lớp khác nhau có khả năng hiểu cùng một thông điệp theo các cách khác nhau Cùng thông điệp “nhảy”, kangaroo và con cóc nhảy theo hai kiểu khác nhau: chúng cùng có hành vi “nhảy” nhưng các hành vi này có nội dung khác nhau Giới thiệu [3/6]#5 Đa hình được cài đặt bởi cơ chế overriding • Nếu một phương thức của lớp cơ sở được định nghĩa lại tại lớp dẫn xuất thì định nghĩa tại lớp cơ sở có thể bị “che” bởi định nghĩa tại lớp dẫn xuất. • Với overriding, toàn bộ thông điệp (cả tên và tham số) là hoàn toàn giống nhau - điểm khác nhau là lớp đối tượng được nhận thông điệp. Giới thiệu [4/6]#6 classA classB:publicA Bb; { { A*pa=&b; public: public: pa>Print();//A::Print() voidPrint() voidPrint() { { cout Giới thiệu [5/6]#7 CCircle*pc=newCCircle(50,30,Blue,100); CMyPoint*pp=pc; pp>Draw(); //drawpoint??? Giới thiệu [6/6]#8 Để gọi được phương thức với đối tượng đươc trỏ/tham chiếu tới → Cần phải xác định được kiểu của đối tượng được xem xét tại thời điểm chương trình đang chạy (runtime) → Kết nối động (dynamic binding) hoặc kết nối trễ (late binding) → Xác định hàm thành viên nào tương ứng với một lời gọi hàm thành viên từ con trỏ/tham chiếu đối tượng phụ thuộc vào cụ thể vào đối tượng mà con trỏ/tham chiếu chứa địa chỉ Phương thức ảo – Virtual method [1/14]#9 classA classB:publicA Bb; { { A*pa=&b; public: public: pa>Print();//A::Print() voidPrint() voidPrint() { { cout Phương thức ảo [2/14]#10 • Là cơ chế của C++ cho phép cài đặt kết nối động → Gọi được phương thức với đối tượng đươc trỏ/tham chiếu tới • Phương thức ảo: thêm từ khóa virtual vào trước khai báo phương thức trong lớp Phương thức ảo [3/14]#11 • Một khi một phương thức được khai báo là phương thức ảo tại lớp cơ sở, nó sẽ tự động là phương thức ảo tại mọi lớp dẫn xuất trực tiếp hoặc gián tiếp Không cần thêm virtual khi khai báo một phương thức ảo trong lớp dẫn xuất Phương thức ảo [4/14]#12 classA classB:publicA Bb; { { A*pa=&b; public: public: pa>Print();//B::Print() virtualvoid virtualvoid Print() Print() { { cout Phương thức ảo – Ví dụ [5/14] #13 classCHome { public: virtualvoid CWoodframew; Paint() w.Paint();classCWoodframe:public { CLanda,b;CHome } CStuccoc;{ }; CWoodframed,e; public: classCLand:publicCHome virtualvoidPaint() { CHome*h[5]; { public: h[0]=&a; cout Phương thức ảo [6/14]#14 • Phương thức ảo chỉ hoạt động thông qua con trỏ/ tham chiếu • Phương th ...
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 6 - Trần Minh Thái Chương 6. Tính đa hình(Polymorphism)TRẦNMINHTHÁIEmail:minhthai@itc.edu.vnWebsite:www.minhthai.edu.vn Cập nhật: 10 tháng 04 năm 2015 Nội dung#2 1. Giới thiệu đa hình 2. Phương thức ảo 3. Lớp trừu tượng 4. Bài tập ví dụ Giới thiệu [1/6]#3 • Giả sử có 2 hàm • double max(double d1, double d2); • int max(int i1, int i2); àMột thông điệp (lời gọi hàm) được hiểu theo các cách khác nhau tùy theo danh sách tham số của thông điệp àĐa hình hàm đa năng hóa hàm Giới thiệu [2/6]#4 • Đa hình là hiện tượng các đối tượng thuộc các lớp khác nhau có khả năng hiểu cùng một thông điệp theo các cách khác nhau Cùng thông điệp “nhảy”, kangaroo và con cóc nhảy theo hai kiểu khác nhau: chúng cùng có hành vi “nhảy” nhưng các hành vi này có nội dung khác nhau Giới thiệu [3/6]#5 Đa hình được cài đặt bởi cơ chế overriding • Nếu một phương thức của lớp cơ sở được định nghĩa lại tại lớp dẫn xuất thì định nghĩa tại lớp cơ sở có thể bị “che” bởi định nghĩa tại lớp dẫn xuất. • Với overriding, toàn bộ thông điệp (cả tên và tham số) là hoàn toàn giống nhau - điểm khác nhau là lớp đối tượng được nhận thông điệp. Giới thiệu [4/6]#6 classA classB:publicA Bb; { { A*pa=&b; public: public: pa>Print();//A::Print() voidPrint() voidPrint() { { cout Giới thiệu [5/6]#7 CCircle*pc=newCCircle(50,30,Blue,100); CMyPoint*pp=pc; pp>Draw(); //drawpoint??? Giới thiệu [6/6]#8 Để gọi được phương thức với đối tượng đươc trỏ/tham chiếu tới → Cần phải xác định được kiểu của đối tượng được xem xét tại thời điểm chương trình đang chạy (runtime) → Kết nối động (dynamic binding) hoặc kết nối trễ (late binding) → Xác định hàm thành viên nào tương ứng với một lời gọi hàm thành viên từ con trỏ/tham chiếu đối tượng phụ thuộc vào cụ thể vào đối tượng mà con trỏ/tham chiếu chứa địa chỉ Phương thức ảo – Virtual method [1/14]#9 classA classB:publicA Bb; { { A*pa=&b; public: public: pa>Print();//A::Print() voidPrint() voidPrint() { { cout Phương thức ảo [2/14]#10 • Là cơ chế của C++ cho phép cài đặt kết nối động → Gọi được phương thức với đối tượng đươc trỏ/tham chiếu tới • Phương thức ảo: thêm từ khóa virtual vào trước khai báo phương thức trong lớp Phương thức ảo [3/14]#11 • Một khi một phương thức được khai báo là phương thức ảo tại lớp cơ sở, nó sẽ tự động là phương thức ảo tại mọi lớp dẫn xuất trực tiếp hoặc gián tiếp Không cần thêm virtual khi khai báo một phương thức ảo trong lớp dẫn xuất Phương thức ảo [4/14]#12 classA classB:publicA Bb; { { A*pa=&b; public: public: pa>Print();//B::Print() virtualvoid virtualvoid Print() Print() { { cout Phương thức ảo – Ví dụ [5/14] #13 classCHome { public: virtualvoid CWoodframew; Paint() w.Paint();classCWoodframe:public { CLanda,b;CHome } CStuccoc;{ }; CWoodframed,e; public: classCLand:publicCHome virtualvoidPaint() { CHome*h[5]; { public: h[0]=&a; cout Phương thức ảo [6/14]#14 • Phương thức ảo chỉ hoạt động thông qua con trỏ/ tham chiếu • Phương th ...
Tìm kiếm theo từ khóa liên quan:
Lập trình hướng đối tượng Bài giảng Lập trình hướng đối tượng Tính đa hình Phương thức ảo Lớp trừu tượng Ngôn ngữ C++Gợi ý tài liệu liên quan:
-
Bài giảng Phân tích thiết kế phần mềm: Chương 7 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
16 trang 351 0 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 272 0 0 -
101 trang 199 1 0
-
14 trang 133 0 0
-
Giáo trình lập trình hướng đối tượng - Lê Thị Mỹ Hạnh ĐH Đà Nẵng
165 trang 112 0 0 -
150 trang 104 0 0
-
Giáo trình Lập trình Windows 1 - Trường CĐN Đà Lạt
117 trang 96 0 0 -
Giáo trình Phân tích, thiết kế hướng đối tượng với UML: Phần 1 - Trường ĐH Công nghiệp Quảng Ninh
111 trang 95 0 0 -
265 trang 79 0 0
-
Giáo trình Lập trình hướng đối tượng với Java: Phần 2 - Trần Thị Minh Châu, Nguyễn Việt Hà
141 trang 75 0 0