Bài giảng Lập trình hướng đối tượng - Chương 5: Inheritance - Hồ Tuấn Thanh

Inheritance  
Lập trình hướng đối tượng  
Hồ Tuấn Thanh – [email protected]  
10/23/18  
1
Nội dung  
• Khái niệm kế thừa  
• Tầm vực trong kế thừa  
• Định nghĩa lại hàm  
• IS-A vs HAS-A  
2
Khái niệm kế thừa  
3
Ba tính chất của LT HĐT  
• Tính đóng gói, bao bọc  
• Tính kế thừa  
• Tính đa hình  
4
Tính kế thừa  
• “In object-oriented programming, inheritance is  
the mechanism of basing an object or class  
upon another object (prototypical inheritance)  
or class (class-based inheritance), retaining  
similar implementation.” (Wikipedia)  
10/23/18  
5
Vấn đề trùng lắp thông tin  
• Nhiều lớp có thông tin giống nhau  
A
x, y, z  
a, b, c  
B
x, y, z  
u, v, w  
• Có 2 dạng trùng lắp thông tin:  
• Dạng chia sẻ: A ∩ B ≠ Ø  
• Dạng mở rộng: B = A + ε  
A
x, y, z  
B
x, y, z  
a, b, c  
• Nhược điểm:  
• Xây dựng tốn kém  
• Dung lượng lưu trữ lớn  
• Thay đổi phần chung khó khăn  
• Giải quyết: TÁI SỬ DỤNG  
6
Khái niệm kế thừa  
• Giải quyết vấn đề trùng lắp thông tin  
• Cách thực hiện:  
• Định nghĩa lớp mới (lớp O) chứa các thuộc tính  
chung  
• Các lớp hiện tại kế thừa lớp mới  
• Khai báo những thuộc tính riêng trong lớp hiện tại  
• Lớp mới (O) được gọi là lớp cơ sở, lớp cha  
• Lớp hiện tại (A, B) được gọi là lớp kế thừa, lớp  
dẫn xuất, lớp con  
7
Khái niệm kế thừa  
• Nguyên tắc: LỚP KẾ THỪA THỪA HƯỞNG  
TẤT CẢ TỪ LỚP CƠ SỞ  
O
A
x, y, z  
x, y, z  
A
a, b, c  
B
B
u, v, w  
a, b, c  
8
Khai báo trong C++  
• class <Lớp kế thừa> : <Loại kế thừa> <Lớp cơ  
sở>  
• Loại kế thừa: public, protected, private  
• Ví dụ:  
9
Ví dụ  
Thông tin:  
Họ tên.  
Mức lương.  
Số ngày nghỉ. Số ngày nghỉ.  
Công việc: Lớp chủ nhiệm.  
Giảng dạy. Công việc:  
Thông tin:  
Họ tên.  
Mức lương.  
Tính lương.  
Giảng dạy.  
Tính lương.  
Sinh hoạt chủ nhiệm.  
10  
Ví dụ  
• Lớp GiaoVien & GVCN  
11  
Ví dụ  
• Hàm main  
12  
Tầm vực trong kế  
thừa  
13  
Lưu ý  
• 3 loại kế thừa: public, protected, private  
• Đại đa số trường hợp sử dụng public  
• 3 loại tầm vực: public, protected, private  
• Public: trong lớp truy xuất được, lớp con truy xuất  
được, ngoài lớp truy xuất được  
• Protected: trong lớp truy xuất được, lớp con truy  
xuất được, ngoài lớp không truy xuất được  
• Private: trong lớp truy xuất được, lớp con không  
truy xuất được, ngoài lớp không truy xuất được  
14  
Tầm vực trong kế thừa  
• Vấn đề: Một thuộc tính/hàm đang ở tầm vực  
private/protected/public ở lớp cha thì ở lớp  
con, tầm vực của thuộc tính/hàm đó là gì?  
• Trả lời: Do loại kế thừa quyết định  
Lớp cơ sở  
Lớp kế thừa  
private:  
???:  
x
x
y
z
protected:  
???:  
???:  
y
public:  
z
15  
Bảng tầm vực trong kế thừa  
Tầm vực Kế thừa  
public  
Kế thừa  
protected  
Kế thừa  
private  
public public  
protected  
protected  
private  
private  
protecte protected  
d
private Không  
truy xuất  
Không  
truy xuất  
được  
Không  
truy xuất  
được  
được  
16  
Bài tập  
17  
Định nghĩa lại hàm  
18  
Định nghĩa lại hàm  
• Nguyên tắc: LỚP KẾ THỪA THỪA HƯỞNG  
TẤT CẢ TỪ LỚP CƠ SỞ  
• Như vậy: lớp cha có hàm f è lớp con có hàm f  
• Lớp con muốn cách xử lí của hàm f khác với  
cách xử lí hàm f của lớp cha  
• Lớp con có quyền định nghĩa lại (override)  
hàm f  
19  
Ví dụ  
• GVCN kế thừa từ GiaoVien.  
• GVCN tính lương khác GiaoVien.  
• Lương GV = Mức lương – Số ngày nghỉ * 10000.  
• Lương GVCN = Lương GV + Phụ cấp 50000.  
• Trong lớp GVCN, ta có thể định nghĩa lại hàm  
tinhLuong()  
20  
Tải về để xem bản đầy đủ
pdf 28 trang myanh 23780 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 5: Inheritance - Hồ Tuấn Thanh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_5_inheritance_ho.pdf