Bài giảng Lập trình hướng đối tượng - Chương 5: Inheritance - Hồ Tuấn Thanh
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 đủ
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:
bai_giang_lap_trinh_huong_doi_tuong_chuong_5_inheritance_ho.pdf

