KHÁI NiỆM TÍNH THỪA KẾy Lớp mới được tạo ra từ lớp đã có gọi là lớp thừa kế inheritance class hay lớp dẫn xuất derived class y Lớp để tạo ra lớp mới gọi là lớp cơ sở based class hay lớp
Trang 1CHƯƠNG
CHƯƠNG 7 THỪA KẾ
1
Trang 3NỘI DUNG CHI TIẾT
3Ệ
Trang 4KHÁI NiỆM TÍNH THỪA KẾ
y Lớp mới được tạo ra từ lớp đã có gọi là lớp thừa kế
(inheritance class) hay lớp dẫn xuất (derived class)
y Lớp để tạo ra lớp mới gọi là lớp cơ sở (based class)
hay lớp cha (super class)
Trang 5class PERSON
Để được cái tương đương
class STUDENT
5
ID_Num Name YearOfBirth
class PERSON
ID_Num Name YearOfBirth
YearOfBirth Address
getID_Num() setID_Num(newID)
thừa kế
getScore()
tính chất
LỚP RollNum
Score
getScore() setSore(newScore)
getScore() setSore(newScore)
Trang 6A A
Trang 9Ví dụ class float x,y;point{
class coloredpoint:public point {
unsigned int color;
public:
cout<<“Goi ham point::display()\n”; cout<<“toa do :”<<x<<“;”<<y<<endl; }
p display();
p.point::display();
Hành vi của lớp cha
cout<< mau <<color<<endl;
}
};
p.point::display(); }
Trang 10LƯU Ý
y Lớp dẫn xuất không thể truy cập đến phương thức thiết lập
10
và phương thức hủy bỏ của lớp cơ sở
y Hàm friend (hay lớp friend) của lớp cơ sở không thể
là hàm friend (hay lớp friend) của lớp dẫn xuất
y Các phép toán mới được cài đặt (như là sự định nghĩa
chồng phép toán) có thể được truy cập bình thường trong
lớp dẫn xuất
y Với những phép toán trả về kiểu của lớp cơ sở không sử
y Với những phép toán trả về kiểu của lớp cơ sở, không sử dụng được trong lớp dẫn xuất Điều này vẫn đúng cho cả những phương thức trả về dữ liệu thuộc lớp cơ sở.g p g ệ ộ p
Trang 11Ví dụclass Double{
Trang 13CÁC KIỂU THUỘC TÍNH KẾ THỪA
13
Kiểu thuộc tính trong lớp dẫn
ất
Kiể kế hừ
xuất
Kiểu kế thừa Kiểu truy cập
Trang 14PHƯƠNG THỨC THIẾT LẬP
y Phương thức thiết lập của lớp cơ sở thực hiện trước
14
phương thức thiết lập của lớp dẫn xuất
y Đối với thừa kế bội, phương thức thiết lập của lớp cơ sở
ấ
xuất hiện trước được thực hiện trước
Trang 15PHƯƠNG THỨC HỦY BỎ
y Phương thức hủy bỏ của lớp cơ sở thực hiện sau phương
15
thức hủy bỏ của lớp dẫn xuất
y Đối với thừa kế bội, phương thức hủy bỏ của lớp xuất hiện trước được thực hiện sau
Trang 16Hàm xây dựng và hàm hủy
Chương 9
y Trong thừa kế, khi khởi tạo đối tượng:
16
{ Hàm xây dựng của lớp cha sẽ được gọi trước
{ Sau đó mới là hàm xây dựng của lớp con.
y Trong thừa kế, khi hủy bỏ đối tượng:
{ Hàm hủy của lớp con sẽ được gọi trước
{ Sau đó mới là hàm hủy của lớp cha.
A
B
Trang 17ONE(){cout << “First class\n”;}
~ONE(){cout << “Destructor of first class\n”;}
};
class TWO_A:ONE{
public:
TWO_A(){cout << “Second class A\n”;}
~TWO A(){cout << “Destructor of second A\n”;} TWO_A(){cout << Destructor of second A\n ;}
};
class TWO_B:ONE{
public:
TWO B(){ t “S d l B\ ” }
TWO_B(){cout << “Second class B\n”;}
~TWO_B(){cout << “Destructor of second B\n”;}
};
Trang 18class THREE:TWO_A,TWO_B{
18
THREE(){cout << “Third class\n”;}
~THREE(){cout << “Destructor of third class\n”;}
Third class Destructor of third class Destructor of second B class Destructor of second A class Destructor of first class
Trang 21Xây dựng lớp dẫn xuấtclass Person:Date{
Trang 22Phương thức thiết lậpPerson(char *n,int bd,int bm, int
Trang 232.16- Gợi ý về phân tích thừa kế
Slide 23/54
(1) Liệt kê đặc điểm của các đối
giao này để xây dựng lớp cha.
(3) Đặt 1 tên gọi có ý nghĩa cho
lớp cha.
(4) Phần còn lại sau khi tách
tập giao là các lớp con
Trang 24Thừa kế - Bài mẫu
Slide 24/54
Phân tích phân cấp thừa kế cho các lớp:
y Hàng điện máy <mã hàng, tên hàng, nhà sản xuất,
giá, thời gian bảo hành, điện áp, công suất>
y Hàng sành sứ < mã hàng, tên hàng, nhà sản xuất, giá, loại nguyên liệu>
y Hàng thực phẩm <mã hàng tên hàng nhà sản xuất giá, ngày sản xuất, ngày hết hạn dùng>
Trang 25Bài giải
Slide 25/54
y HangĐienMay < maH,tenH,nsx,gia, tgbh,đa,cs >
y HangSanhSu < maH,tenH,nsx,gia, lnl >
y HangThucPham < maH,tenH,nsx,gia, ngsx,nhhd >
HangHoa
maH tenH nsx gia
HangDienMay HangSanhSu HangThucPham
Trang 26BÀI TẬP TẠI LỚP
Slide 26/54
Phân tích phân cấp thừa kế cho các đối tượng trong một học viện:
y Nhân viên quản lý <mã nv, tên nv, năm sinh, trình độ, trường đào tạo, chuyên môn , lương cb , phụ cấp chức vụ>
y Nhân viên nghiên cứu <mã nv, tên nv, năm sinh, trình độ, trường đào tạo, chuyên môn , lương cb , phụ cấp độc hại>
y Nhân viên phục vụ <mã nv, tên nv, năm sinh, trình độ, lương cb >
pcđh
Trang 28THANK YOU