1. Trang chủ
  2. » Công Nghệ Thông Tin

CHƯƠNG 8 THỪA KẾ ẢO-TÍNH ĐA HÌNH ppt

21 272 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 525,9 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

y Kỹ thuật cho phép thay đổi nội dung của cùng 1 hành vi trong 2 lớp cha – con y Bản chất: Sửa code của cùng 1 hành vi ở 2 lớp cha con để d à khá h để code này khác nhau y Đa hình tạo r

Trang 1

CHƯƠNG 8

1

Trang 3

NỘI DUNG CHI TIẾT

Trang 5

y Kỹ thuật cho phép thay đổi nội dung của cùng 1 hành

vi trong 2 lớp cha – con

y Bản chất: Sửa code của cùng 1 hành vi ở 2 lớp cha con

để d à khá h

để code này khác nhau

y Đa hình tạo ra khả năng cho phép gọi một hành vi

của một lớp mà không cần quan tâm đến hiện thực

của hành vi này.

Trang 6

VÍ DỤ VỀ TÍNH ĐA HÌNH

class ĐànBà

class CIRCLE int x,y,r;

id D ()

void DiChuyển(); void Draw ()

{ circle (x,y,r);

} class RECTANGLE

class Người

void DiChuyển();

class SHAPE void Draw () {

}

class RECTANGLE int x1,y1, x2, y2;

void Draw () { rectangle(x1,y1, x2, y2); }

class ĐànÔng void DiChuyển();

class TRIANGLE int x1,y1, x2, y2 , x3, y3; void Draw ()

void DiChuyển(); { line(x1,y1, x2, y2);

Trang 7

OVERLOADED VÀ OVERRIDDEN

y Overloaded methods:

7

{ Nhằm cung cấp các dạng khác nhau của hành vi (danh sách

tham số khác nhau), nhưng vẫn có cùng tên gọi trong cùng

một lớp

một lớp.

y Overridden methods:

{ Hiện thực lại hành vi đã có của tổ tiên ệ ự ạ

{ Phải có cùng tên và trùng mọi yếu tố tạo nên hành vi này.

Trang 8

int Lookup(const char *name);

Trang 9

LIÊN KẾT ĐỘNG

y Liên kết động ( dynamic binding )

9

{ Xác định khi thực thi chương trình.

{ Dùng hàm ảo (virtual function).

{ Gọi hàm của lớp dẫn xuất (lớp con)

Gọi hàm của lớp nào ?

{ Gọi hàm của lớp dẫn xuất (lớp con).

{ Thể hiện tính đa hình của OOP.

Trang 10

Không Î Dùng hàm ảo

Trang 11

HÀM ẢO

11

không biết viết code thế nào

Để dành code cụ thể sẽ được hiện thực ở các lớp dẫn

Trang 12

KHAI BÁO HÀM ẢO

Trang 13

VÍ DỤ

13

Động cơNhiên liệu

Động cơ xăngNhiên liệuệ Động cơ diezelNhiên liệuNhiên liệu

Động cơ 2 thì

Nhiên liệu Động cơ 4 thìNhiên liệu

Trang 14

cout<<“Dùng dầu Diezel”;}

virtual void NhienLieu(){ };

void NhienLieu(){

cout<<“Dùng xăng”;}

}

for(int i=0;i<4;i++){

Trang 15

PHÂN LOẠI PHƯƠNG THỨC ẢO

y Phương thức ảo rỗng

15

{ Khai báo nhưng không làm gì

{ Dùng tạo sự liên kết động trong hệ thống lớp kế thừa.

Có hể kh i bá đối h ộ lớ ó h hứ ả ỗ à

{ Có thể khai báo đối tượng thuộc lớp có phương thức ảo rỗng và gởi thông điệp đến đối tượng đó.

Ví dụ: DongCo obj; obj.NhienLieu(); g j j

y Phương thức ảo thuần

{ Lớp chứa phương thức này được gọi là lớp trừu tượng.

{ Không thể khai báo đối tượng thuộc lớp này cũng như không thể gởi thông điệp đến phương thức ảo thuần.

{ Class A{

{ Class A{

{ public :

Trang 16

+khởi tạo +diện tích

Dữ liệu: dài, rộng Phương thức:

+khởi tạo +diện tích

GV: Võ Hồng Bảo Châu

OOP-CHƯƠNG 8-THỪA KẾ ẢO-TÍNH ĐA HÌNH

Trang 17

class GIATHANH{ class HINHCN: public GIATHANH{

17

{protected: float dongia;

Trang 19

class B: public A{};

class C: public A{};

class D: public B, public C{

Trang 20

Giải quyết

y Để tránh tình trạng một thành phần trong lớp A xuất

20

hiện 2 lần trong lớp D, sử dụng thừa kế ảo

class B: virtual public A{};

class C: virtual public A{};

class D: public B, public C{

Trang 21

THANK YOU

Ngày đăng: 27/07/2014, 13:21

HÌNH ẢNH LIÊN QUAN

HÌNH TRÒN - CHƯƠNG 8 THỪA KẾ ẢO-TÍNH ĐA HÌNH ppt
HÌNH TRÒN (Trang 16)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm