Nguy ễn Tấn Trần Minh Khang 1.QUAN H Ệ Người ta chia các quan hệ thành những loại như sau: − Quan hệ một một 1-1 − Quan hệ một nhiều 1-n − Quan hệ nhiều nhiều m-n − Quan hệ đặt biệt hóa,
Trang 1Chương 12 - 1
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
Chương 12
Trang 20 M ỤC TIÊU
Hiểu được các loại quan hệ?
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
Trang 3Chương 12 - 3
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
1.QUAN H Ệ
Người ta chia các quan hệ thành
những loại như sau:
− Quan hệ một một (1-1)
− Quan hệ một nhiều (1-n)
− Quan hệ nhiều nhiều (m-n)
− Quan hệ đặt biệt hóa, tổng quát hóa
Trang 41.1 QUAN H Ệ MỘT MỘT (1-1)
− Khái ni ệm: Hai lớp đối tượng được
gọi là quan hệ một-một với nhau khi
một đối tượng thuộc lớp này quan hệ
với một đối tượng thuộc lớp kia và mộtđối tượng thuộc lớp kia quan hệ duy
nhất với một đối tượng thuộc lớp này
− Hình vẽ
− Trong hình vẽ trên ta nói: một đốitượng thuộc lớp A quan hệ với một đốitượng thuộc lớp B và một đối tượng
lớp B quan hệ duy nhất với một đốitượng thuộc lớp A
Trang 5Chương 12 - 5
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
1.1 QUAN H Ệ MỘT MỘT (1-1)
− Ví dụ minh họa
LOPHOC Ch ủ nhiệm GIAOVIEN
Trang 61.2 QUAN H Ệ MỘT NHIỀU (1-n)
− Khái ni ệm: Hai lớp đối tượng được
gọi là quan hệ một-nhiều với nhau khi
một đối tượng thuộc lớp này quan hệ
với nhiều đối tượng thuộc lớp kia và
một đối tượng lớp kia quan hệ duy
nhất với một đối tượng thuộc lớp này
− Hình vẽ
− Trong hình vẽ trên ta nói: một đốitượng thuộc lớp A quan hệ với nhiềuđối tượng thuộc lớp B và một đốitượng lớp B quan hệ duy nhất với mộtđối tượng thuộc lớp A
Trang 7Chương 12 - 7
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
Trang 81.2 QUAN H Ệ MỘT NHIỀU (1-n)
− Ví dụ minh họa:
Trang 9Chương 12 - 9
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
1.3 QUAN H Ệ NHIỀU NHIỀU
(m-n)
− Khái ni ệm: hai lớp đối tượng được
gọi là quan hệ nhiều-nhiều với nhaukhi một đối tượng thuộc lớp này quan
hệ với nhiều đối tượng thuộc lớp kia
và một đối tượng lớp kia cũng có quan
hệ với nhiều đối tượng thuộc lớp này
− Hình vẽ
− Trong hình vẽ trên ta nói: một đốitượng thuộc lớp A quan hệ với nhiềuđối tượng thuộc lớp B và một đốitượng lớp B cũng có quan hệ vớinhiều đối tượng thuộc lớp A
Trang 101.3 QUAN H Ệ NHIỀU NHIỀU
(m-n)
− Ví dụ minh họa:
BACSI Khám b ệnh BENHNHAN
Trang 11Chương 12 - 11
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
1.3 QUAN H Ệ NHIỀU NHIỀU
(m-n)
− Ví dụ minh họa:
Trang 121.4 QUAN H Ệ ĐẶC BIỆT
HÓA-T ỔNG QUÁT HOÁ
− Khái ni ệm: hai lớp đối tượng được
gọi là quan hệ đặc biệt hóa-tổng quáthóa với nhau khi, lớp đối tượng này làtrường hợp đặc biệt của lớp đối tượngkia và lớp đối tượng kia là trường hợp
tổng quát của lớp đối tượng này
− Hình vẽ
A B
Trang 13Chương 12 - 13
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
1.4 QUAN H Ệ ĐẶT BIỆT
A B
Trang 141.4 QUAN H Ệ ĐẶT BIỆT
HÓA-T ỔNG QUÁT HOÁ
− Ví dụ 1:
TAMGIAC
TAMGIACCAN
Trang 15Chương 12 - 15
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
1.4 QUAN H Ệ ĐẶT BIỆT
HÓA-T ỔNG QUÁT HOÁ
− Ví dụ 2:
DONGVAT
HEO NGUOI
Trang 162 CÂY K Ế THỪA
− Khái ni ệm: Cây kế thừa là một cây đa
nhánh thể hiện mối quan hệ đặc biệthóa-tổng quát hóa giữa các lớp trong
Trang 17Chương 12 - 17
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
2 CÂY K Ế THỪA (tiếp)
Trang 183 SƠ ĐỒ LỚP
− Khái ni ệm: Sơ đồ lớp là sơ đồ thể
hiện tất cả các mối quan hệ giữa các
+ L ớp CNV: là những người làm việc trong nhà trường nhưng ko trực tiếp đứng lớp Ví dụ: Bảo vệ, lao công, bảo
m ẫu, …
Trang 19Chương 12 - 19
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
3 SƠ ĐỒ LỚP
Trang 21Chương 12 - 21
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
4.1 TH Ế GIỚI THỰC
− Trong hình v ẽ trên ta nói A và B
có quan h ệ đặc biệt hoá, tổng quát hoá v ới nhau Trong đó B là trường hợp đặt biệt của A, và A
là trường hợp tổng quát của B.
A B
Trang 22− L ớp đối tượng B được gọi là lớp
d ẫn xuất từ lớp đối tượng A.
A B
Trang 23Chương 12 - 23
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
4.3 PH ẠM VI TRUY XUẤT
− M ột thuộc tính hay một phương
th ức khi được khai báo trong một
l ớp ta có thể khai báo trong 3
nhau Ngh ĩa là, thuộc tính và phương thức được khai báo trong hai ph ạm vi này chỉ được phép truy xu ất bên trong lớp mà thôi và không được quyền truy
xu ất từ bên ngoài lớp.
Trang 244.3 PH ẠM VI TRUY XUẤT
− Ví dụ: Hãy cho biết trong đoạn
chương trình sau câu lệnh nào đúng,câu lệnh nào sai
Trang 25Chương 12 - 25
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
Trang 27Chương 12 - 27
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
− L ớp đối tượng B được gọi là lớp
d ẫn xuất từ lớp đối tượng A.
A B
Trang 29Chương 12 - 29
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
4.4 T Ừ KHÓA DẪN XUẤT
− Ví dụ 01: Khai báo lớp tam
giác và lớp tam giác cân
Trang 31Chương 12 - 31
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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Public
Trang 325 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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Public
Trang 33Chương 12 - 33
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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Trang 345 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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Trang 35Chương 12 - 35
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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Public
Trang 365 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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Public
Trang 37Chương 12 - 37
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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Public
Trang 385 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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Public
Trang 39Chương 12 - 39
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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Trang 405 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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Trang 41Chương 12 - 41
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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Trang 425 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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Trang 43Chương 12 - 43
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 sinhviên tự tìm hiểu thêm từ khoá dẫn xuấtprotected trong tài liệu
Protected private protected
Trang 44dẫn xuất như là thành phần private
ẫn xuất như là thành phần
Trang 45Chương 12 - 45
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
dẫn xuất như là thành phần private
dẫn xuất như là thành phần public của
lớp dẫn xuất
Trang 47Chương 12 - 47
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)
Trang 485 QUI T ẮC KẾ THỪA
TRONG C++
− Bảng qui tắc kế thừa trong C++
Trang 49Chương 12 - 49
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++
Trang 506 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ứcthuộ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ứcthuộ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ứcthuộ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ủachính bản thân lớp được vẽ bằngnét liền liên tục
Trang 51Chương 12 - 51
GV Nguy ễn Sơn Hoàng Quốc
ThS Nguy ễn Tấn Trần Minh Khang
c h()
t aa() b g()
z xy() c
h() public
Trang 526 CÂY K Ế THỪA CHI TIẾT
A
B
yg()
C
pab()
kmn()
pab()g()
y
Trang 53Chương 12 - 53
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 trongchương trình dưới đây câu lệnh nàođúng câu lệnh nào sai:
Trang 55Chương 12 - 55
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
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,
Trang 567 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
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
Trang 57Chương 12 - 57
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 trongchương trình dưới đây câu lệnh nàođúng câu lệnh nào sai:
Trang 587 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:
l ớp cơ sở có thể giữ địa chỉ
d ẫn xuất Ngược lai, một con
xu ất không thể giữ địa chỉ của
s ở.
Trang 59Chương 12 - 59
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àosai: