Giáo trình Lập trình hướng đối tượng - Chương 12: Kế thừa

 Hiểuđượccácloạiquanhệ?

 Hiểu được kế thừa trong lập trình

hướng đối tượng là gì?

 Hiểu được khái niệm cây kế thừa.

 Hiểu được khái niệm sơ đồ lớp.

pdf59 trang | Chuyên mục: Lập Trình Hướng Đối Tượng | Chia sẻ: dkS00TYs | Lượt xem: 2499 | Lượt tải: 3download
Tóm tắt nội dung Giáo trình Lập trình hướng đối tượng - Chương 12: Kế thừa, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
HĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
− Ghi chú: Từ khoá dẫn xuất có ba loại
là private, protected, public. Các sinh
viên tự tìm hiểu thêm từ khoá dẫn xuất
protected trong tài liệu.
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private Public
Private
Protected
Chương 12 - 35
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
− Ghi chú: Từ khoá dẫn xuất có ba loại
là private, protected, public. Các sinh
viên tự tìm hiểu thêm từ khoá dẫn xuất
protected trong tài liệu.
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private Public
Private
Protected
Public
Chương 12 - 36
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
− Ghi chú: Từ khoá dẫn xuất có ba loại
là private, protected, public. Các sinh
viên tự tìm hiểu thêm từ khoá dẫn xuất
protected trong tài liệu.
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private
Protected
Public
Chương 12 - 37
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
− Ghi chú: Từ khoá dẫn xuất có ba loại
là private, protected, public. Các sinh
viên tự tìm hiểu thêm từ khoá dẫn xuất
protected trong tài liệu.
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private
Private
Protected
Public
Chương 12 - 38
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
− Ghi chú: Từ khoá dẫn xuất có ba loại
là private, protected, public. Các sinh
viên tự tìm hiểu thêm từ khoá dẫn xuất
protected trong tài liệu.
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private Public
Private
Protected
Public
Chương 12 - 39
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
− Ghi chú: Từ khoá dẫn xuất có ba loại
là private, protected, public. Các sinh
viên tự tìm hiểu thêm từ khoá dẫn xuất
protected trong tài liệu.
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private Public
Private || ||
Protected
Public
Chương 12 - 40
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
− Ghi chú: Từ khoá dẫn xuất có ba loại
là private, protected, public. Các sinh
viên tự tìm hiểu thêm từ khoá dẫn xuất
protected trong tài liệu.
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private Public
Private || ||
Protected private
Public
Chương 12 - 41
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
− Ghi chú: Từ khoá dẫn xuất có ba loại
là private, protected, public. Các sinh
viên tự tìm hiểu thêm từ khoá dẫn xuất
protected trong tài liệu.
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private Public
Private || ||
Protected private protected
Public
Chương 12 - 42
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
− Ghi chú: Từ khoá dẫn xuất có ba loại
là private, protected, public. Các sinh
viên tự tìm hiểu thêm từ khoá dẫn xuất
protected trong tài liệu.
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private Public
Private || ||
Protected private protected
Public private
Chương 12 - 43
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
− Ghi chú: Từ khoá dẫn xuất có ba loại
là private, protected, public. Các sinh
viên tự tìm hiểu thêm từ khoá dẫn xuất
protected trong tài liệu.
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private Public
Private || ||
Protected private protected
Public private public
Chương 12 - 44
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Các thuộc tính và phương thức được
khai báo trong phạm vi private của lớp
cơ sở thì sẽ không được hiểu ở lớp
dẫn xuất.
− Các thuộc tính và phương thức được
khai báo trong phạm vi protected của
lớp cơ sở nếu được dẫn xuất bằng từ
khóa private thì các thuộc tính và
phương thức đó sẽ được hiểu ở lớp
dẫn xuất như là thành phần private
của lớp dẫn xuất.
− Các thuộc tính và phương thức được
khai báo trong phạm vi protected của
lớp cơ sở nếu được dẫn xuất bằng từ
khóa public thì các thuộc tính và
phương thức đó sẽ được hiểu ở lớp
dẫn xuất hư là thành phần protected
của lớp dẫn xuất.
Chương 12 - 45
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Các thuộc tính và phương thức được
khai báo trong phạm vi public của lớp
cơ sở nếu được dẫn xuất bằng từ
khóa private thì các thuộc tính và
phương thức đó sẽ được hiểu ở lớp
dẫn xuất như là thành phần private
của lớp dẫn xuất.
− Các thuộc tính và phương thức được
khai báo trong phạm vi public của lớp
cơ sở nếu được dẫn xuất bằng từ
khóa public thì các thuộc tính và
phương thức đó sẽ được hiểu ở lớp
dẫn xuất như là thành phần public của
lớp dẫn xuất.
Chương 12 - 46
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
Từ khóa 
dẫn xuất
Phạm vi lớp 
cơ sở
Private Public
Private (1) (2)
Protected (3) (4)
Public (5) (6)
Chương 12 - 47
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
(1) (2)
(3) (4)
(5) (6)
Chương 12 - 48
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
Chương 12 - 49
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
5. QUI TẮC KẾ THỪA 
TRONG C++
− Bảng qui tắc kế thừa trong C++
Chương 12 - 50
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
6. CÂY KẾ THỪA CHI TIẾT
− Qui tắc vẽ cây kế thừa chi tiết:
+ Các thuộc tính và phương thức
thuộc phạm vi private được vẽ với
màu xanh bên trái.
+ Các thuộc tính và phương thức
thuộc phạm vi protected được vẽ
với màu xanh bên phải.
+ Các thuộc tính và phương thức
thuộc phạm vi public được vẽ với
màu đỏ bên phải.
+ Các thuộc tính và phương thức có
được do kế thừa được vẽ bằng nét
đứt không liên tục.
+ Các thuộc tính và phương thức của
chính bản thân lớp được vẽ bằng
nét liền liên tục.
Chương 12 - 51
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
6. CÂY KẾ THỪA CHI TIẾT
A
B
a
f()
b
g()
c
h()
t
aa()
b
g()
z
xy()
c
h()
public
Chương 12 - 52
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
6. CÂY KẾ THỪA CHI TIẾT
A
B
y
g()
C
p
ab()
z
abc(int)
public
public
ab()
mn()
xyz()
k
a
f()
x
q
t
h()
x
uv()
x ab()
y
g()
k
mn()
p
ab()
g()
y
Chương 12 - 53
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
7. TOÁN TỬ GÁN 
TRONG KẾ THỪA
− Ví dụ dẫn nhập 01: Hãy cho biết trong
chương trình dưới đây câu lệnh nào
đúng câu lệnh nào sai:
11.class A
12.{
13. ...
14.};
15.class B:public A
16.{
17. ...
18.};
19.void main()
20.{
21. A a;
22. B b;
23. a = b; 
24. b = a; 
25.} 
Chương 12 - 54
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
7. TOÁN TỬ GÁN 
TRONG KẾ THỪA
− Ví dụ dẫn
nhập 02: Hãy
cho biết đoạn
chương trình
dưới đây câu
lệnh nào
đúng, câu
lệnh nào sai:
1. class A
2. {
3. ...
4. };
9. void main()
10.{
11. A *a;
12. B *b;
13. A x;
14. B y;
15. a = &x;
16. b = &y;
17. a = &y; 
18. b = &x; 
19.} 
5. class B: public A
6. {
7. ...
8. };
Chương 12 - 55
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
7. TOÁN TỬ GÁN 
TRONG KẾ THỪA
− Toán tử gán trong kế thừa được
thực hiện theo nguyên tắc:
trường hợp đặt biệt có thể
được gán cho trường hợp
tổng quát, và trường hợp tổng
quát thì không thể gán cho
trường hợp đặt biệt được.
− Qui tắc trên áp dụng cho tất cả
các ngôn ngữ hỗ trợ lập trình
hướng đối tượng như C++, Java,
VB.NET, C#, Python,...
Chương 12 - 56
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
7. TOÁN TỬ GÁN 
TRONG KẾ THỪA
− Áp dụng qui tắc trên cho ngôn
ngữ lập trình hướng đối tượng
C++ ta có thể nói như sau: một
đối tượng thuộc lớp dẫn xuất
có thể được gán cho một đối
tượng thuộc lớp cơ sở. Điều
ngược lại là sai, nghĩa là một đối
tượng thuộc lớp cơ sở không
được quyền gán cho một đối
tượng thuộc lớp dẫn xuất.
Chương 12 - 57
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
7. TOÁN TỬ GÁN 
TRONG KẾ THỪA
− Ví dụ dẫn nhập 01: Hãy cho biết trong
chương trình dưới đây câu lệnh nào
đúng câu lệnh nào sai:
11.class A
12.{
13. ...
14.};
15.class B:public A
16.{
17. ...
18.};
19.void main()
20.{
21. A a;
22. B b;
23. a = b; 
24. b = a; 
25.} 
Chương 12 - 58
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
7. TOÁN TỬ GÁN 
TRONG KẾ THỪA
− Mở rộng qui tắc trên cho con trỏ
đối tượng ta có thể nói như sau:
một con trỏ đối tượng thuộc
lớp cơ sở có thể giữ địa chỉ
của một đối tượng thuộc lớp
dẫn xuất. Ngược lai, một con
trỏ đối tượng thuộc lớp dẫn
xuất không thể giữ địa chỉ của
một đối tượng thuộc lớp cơ
sở.
Chương 12 - 59
LTHĐTKhoa CNTT
GV. Nguy ễn Sơn Hoàng Quốc
ThS. Nguyễn Tấn Trần Minh Khang
7. TOÁN TỬ GÁN 
TRONG KẾ THỪA
− Hãy cho biết đoạn chương trình dưới
đây câu lệnh nào đúng, câu lệnh nào
sai:
11.class A
12.{
13.};
14.class B:public A
15.{
16.};
17.void main()
18.{
19. A *a;
20. B *b;
21. A x;
22. B y;
23. a = &x;
24. b = &y;
25. a = &y; 
26. b = &x; 
27.} 

File đính kèm:

  • pdfGiáo trình Lập trình hướng đối tượng - Chương 12 Kế thừa.pdf