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

Bài Giảng Đa Hình

60 707 0

Đ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 60
Dung lượng 1,34 MB

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

Nội dung

 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... Giải thích kết quả của

Trang 1

Chương 4

ĐA HÌNH

Trang 3

Tài liệu đọc

Trang 6

cout << “Derv 1 \n”;

} };

Trang 7

Ví dụ 1 (tt)

void main( ) {

Trang 9

Ví dụ 2 (tt)

void Teacher::print() const

{

cout << "Name: "<< name << endl;

cout << " Num of Students:"<< numOfStudents << endl;

Trang 11

Ví dụ 3

Trang 12

Ví dụ 3 (tt)

Trang 13

Ví dụ 3 (tt)

Trang 14

Ví dụ 3 (tt)

Trang 15

 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

Trang 16

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

ani là con trỏ trỏ đến đối tượng thuộc lớp cơ

sở Animal (Animal *ani)

Trang 17

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

Trang 18

 Đ 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ông ượ ườ

Trang 20

Phương thức ảo

 Gi s l p c s Base có ph ng th c o ả ử ớ ơ ở ươ ứ ả method và

các l p d n xu t c a Base n p ch ng ph ng th c ớ ẫ ấ ủ ạ ồ ươ ứ

này Khi ta g i ọ method thông qua m t con tr hay tham ộ ỏ

chi u p có ki u Base thì ph ng th c ế ể ươ ứ method đ c ượ

g i s là ph ng th c 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 ể ẽ ệ ả ư ở

Trang 21

Đa hình

Ví d : Drawing tool ụ

Rectangle Triangle

Trang 25

 (như Rectangle::draw(), Triangle::draw(), Ellipse::draw()).

Trang 26

Một số ví dụ

Trang 27

Một số ví dụ (tt)

Trang 28

Một số ví dụ (tt)

Trang 29

Một số ví dụ (tt)

Trang 30

Thêm lớp mới

Trang 31

Thêm lớp mới (tt)

Trang 32

Cách làm việc của đa hình

Trang 33

Ứng dụng đa hình

Trang 34

Chú ý với phương thức ảo

 Ph ng th c o trong l p c s th ng đ c n p ch ng trong ươ ứ ả ớ ơ ở ườ ượ ạ ồ các l p d n xu t ớ ẫ ấ

 Đ t t khóa virtual trong l p c s và nên đ t virtual cho c ặ ừ ớ ơ ở ặ ả

ph ng th c trong l p d n xu t ươ ứ ớ ẫ ấ

 N u l p d n xu t không đ nh nghĩa l i ph ng th c o c a l p ế ớ ẫ ấ ị ạ ươ ứ ả ủ ớ

c s , nó s s d ng ph ng th c c a l p c s ơ ở ẽ ử ụ ươ ứ ủ ớ ơ ở

 Không th khai báo constructor là ph ng th c o ể ươ ứ ả

 Có th (và r t nên) khai báo destructor là ph ng th c o ể ấ ươ ứ ả

Trang 35

Destructor ảo

that polymorphism can be achieved when a

pointer to delete a derived class object

declared virtual if at least one other function

in the class is declared virtual

Trang 36

Ví dụ: Destructot ảo

 Animal *ani=new Cat(“Buddy”);

 delete ani; //Destructor c a l p Animal s //đ c g i ủ ớ ẽ ượ ọ

//Destructor c a l p Cat không đ c g i ủ ớ ượ ọ

 N u khai báo destructor c a Cat và Animal là virtual thì ế ủ destructor c a Cat s đ c g i ủ ẽ ượ ọ

 Animal *ani=new Cat(“Buddy”);

 delete ani; //Destructor c a l p Cat đ c g i ủ ớ ượ ọ

//Sau đó đ n destructor c a l p Animal ế ủ ớ

Trang 60

Hỏi và Đáp

Ngày đăng: 03/12/2016, 13:07

TỪ KHÓA LIÊN QUAN

w