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

Chương 4 Kế thừa C++

25 473 1
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

Tiêu đề Kế thừa
Thể loại Tài liệu
Định dạng
Số trang 25
Dung lượng 475,58 KB

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

Nội dung

Chương 4_Kế thừa C++ viện Điện Tử Truyền Thông Đại Học BK HN

Trang 1

Chương 4: Kế thừa

Phần 2: Ngôn ngữ lập trình C++

Trang 2

Các nội dung chính

Trang 3

Các khái niệm cơ bản

Kế thừa (inheritance):

Lớp B kế thừa lớp A, tức là B sẽ có thể tái sử dụng các thành phần dữ liệu và các thao tác trong A

A

B

Lớp cha (lớp cơ sở)

Lớp con (lớp dẫn xuất)

Trang 5

Phân loại kế thừa

 Theo mức độ kế thừa: có 2 mức

Public: bảo toàn mức độ che dấu của các thành phần của

lớp cơ sở trong lớp dẫn xuất

Private: đưa các mức che dấu của các thành phần trong lớp

cơ sở lên mức private trong lớp dẫn xuất

 Theo số lượng lớp cơ sở: có 2 loại

 Kế thừa đơn

 Kế thừa bội

Trang 6

Cú pháp khai báo kế thừa

class C: <EA> A, <EB> B {

//Đ/n phần thân của lớp dẫn xuất

};

Trang 7

Kế thừa đơn

Complex, trong đó lớp Complex kế thừa lớp Real

class Real { protected:

class Real { //tiếp từ hình bên Real Add(Real x){

Real z;

z.r = x.r +r;

return z;

} void Print(){

cout<<r;

} };

Trang 8

Real::Print();

cout<<"+j"<<i;

} };

Trang 9

c = d.Add(e);

cout<<"c="; c.Print();

cout<<endl;

return system("PAUSE"),EXIT_SUCCESS;

}

Trang 10

Kết quả chạy

Trang 11

Tính đa hình và hàm ảo

Ta thấy trong chương trình ở trên, trong hàm main

có các đối tượng của cả lớp Real và Complex Các đối tượng này đều có hàm thành viên Print() không

có tham số để in ra nội dung của từng đối tượng Do

đó, khi hàm main gửi thông báo Print cho các đối

tượng, yêu cầu hiển thị nội dung của chúng thì các

đối tượng đều gọi hàm Print để in nội dung của

chúng ra màn hình Do các đối tượng có các nội

dung khác nhau nên các nội dung in ra cũng khác

nhau Đây được gọi là sự đa hình, và hàm thành viên giống nhau cho nhiều lớp khác nhau được gọi là hàm

đa hình

Trang 12

Tính đa hình

main()

:a Real Print()

:a Complex Print()

Print

Print

Trang 14

Kết quả chạy

Trang 15

>Print(), hệ thống đã liên kết và gọi đến hàm Print của lớp Real, vì nó chỉ xét kiểu của con trỏ pr là kiểu Real, chứ không xét đến bản thân kiểu của đối tượng

mà pr đang trỏ đến Đây là hình thức liên kết sớm (early binding), được thực hiện vào lúc dịch chương trình

Trang 16

Giải pháp cho vấn đề đa hình

(virtual)

Thêm từ khóa virtual

vào khai báo của hàm

Print trong lớp Real

 Khi đó hàm Print trong

Trang 17

Kết quả chạy lại

Trang 18

Hàm ảo và cơ chế liên kết muộn

 Khi gặp hàm ảo, thì hệ thống không thực hiện liên kết sớm khi dịch chương trình, mà chờ đến khi chạy chương trình, sau khi xác định rõ kiểu của đối tượng

mà thi hành hàm đó, thì việc liên kết mới được thực hiện, nhằm tìm đúng loại hàm cần thiết để thực hiện

Trang 19

Lớp trừu tượng và hàm ảo thuần túy

có phần thân hàm)

thuần túy

Trang 20

Abs class Number

virtual Print()=0

Trang 21

Lớp trừu tượng

 Một số quy tắc:

 Lớp trừu tượng không có đối tượng, nó được dùng

để khái quát các thành phần chung nhất của các lớp

 Có thể khai báo con trỏ kiểu lớp trừu tượng

 Một hàm ảo thuần túy trong lớp trừu tượng cần phải được định nghĩa lại trong lớp dẫn xuất; hoặc tiếp tục

là hàm ảo trong lớp đó, khi đó lớp dẫn xuất này lại là trừu tượng

Trang 22

Kế thừa bội

Trang 23

Tóm tắt

 Khái niệm cơ bản về kế thừa

 Cách phân loại kế thừa

 Tính đa hình và cách cài đặt

 Sự khác nhau giữa hàm ảo và hàm thông thường

 Lớp trừu tượng và hàm ảo thuần túy

 Kế thừa bội

Trang 24

Bài tập

 Bài 1: Xây dựng cây các lớp số: gồm các lớp Number, Integer, Fraction, Real, Complex có nút gốc là lớp Number Mỗi lớp gồm các thao tác:

 Số học: +,-,*,/

 So sánh: <,>,==

 Phép xuất ra màn hình <<

 Bài 2: Xây dựng một cây các lớp hình: gồm các lớp Shape,

Rectangle, Square, Triangle, Quadrangle Mỗi lớp gồm các thao tác:

 Hàm tạo, tạo ra một hình có tên cho trước

 Tính diện tích

 Tính chu vi

 In ra màn hình nội dung của hình, gồm tên, loại hình, chu vi

và diện tích của nó

Trang 25

Thank you!

Ngày đăng: 27/03/2014, 11:55

TỪ KHÓA LIÊN QUAN