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
Trang 1Chương 09 - 1
GV Nguyễn Sơn Hoàng Quốc
ThS Nguyễn Tấn Trần Minh Khang
Chương 9
KẾ THỪA
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 09 - 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 khimộ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ệ duynhấ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ượnglớp B quan hệ duy nhất với một đốitượng thuộc lớp A
Trang 5Chương 09 - 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
VO Hôn nhân CHONG
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 khimộ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ệ duynhấ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 09 - 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 09 - 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 09 - 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ợptổng quát của lớp đối tượng này
Hình vẽ
A B
Trang 13Chương 09 - 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
HÓA-TỔNG QUÁT HOÁ
Hình vẽ
Trong hình vẽ trên ta nói: lớp đốitượng B là trường hợp đặc biệt củalớp đối tượng A và lớp đối tượng A làtrường hợp tổng quát của lớp đốitượng B
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 09 - 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 09 - 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áclớp trong hệ thống, chương trình
Ví dụ minh họa: Hãy vẽ sơ đồ lớp cho các lớp đối tượng sau:
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 09 - 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 09 - 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 09 - 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 phạm vi khác nhau: private ,
public hoặc protected
Về mặt nguyên tắc cho tới thời điểm này thì một thuộc tính hay một phương thức khi được khai báo trong phạm vi private hay
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 09 - 25
GV Nguyễn Sơn Hoàng Quốc
ThS Nguyễn Tấn Trần Minh Khang
Trang 27Chương 09 - 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 09 - 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 09 - 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
Từ khóa dẫn xuấtPhạm vi lớp
cơ sở
Private Public
PrivateProtected
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
Từ khóa dẫn xuất
Phạm vi lớp
cơ sở
Private Public
PrivateProtected
Public
Trang 33Chương 09 - 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
Từ khóa dẫn xuất
Phạm vi lớp
cơ sở
Private Public
Private
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
Từ khóa dẫn xuất
Phạm vi lớp
cơ sở
Private Public
PrivateProtected
Trang 35Chương 09 - 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
Từ khóa dẫn xuất
Phạm vi lớp
cơ sở
Private Public
PrivateProtected
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
Từ khóa dẫn xuấtPhạm vi lớp
cơ sở
PrivateProtected
Public
Trang 37Chương 09 - 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
Từ khóa dẫn xuấtPhạm vi lớp
cơ sở
Private
PrivateProtected
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
Từ khóa dẫn xuấtPhạm vi lớp
cơ sở
Private Public
PrivateProtected
Public
Trang 39Chương 09 - 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
Từ khóa dẫn xuấtPhạm vi lớp
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
Từ khóa dẫn xuấtPhạm vi lớp
Trang 41Chương 09 - 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
Từ khóa dẫn xuấtPhạm vi lớp
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
Từ khóa dẫn xuấtPhạm vi lớp
Trang 43Chương 09 - 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
Từ khóa dẫn xuấtPhạm vi lớp
cơ sở
Private Public
Protected private protected
Trang 44của lớp dẫn xuất.
Các thuộc tính và phương thức đượckhai báo trong phạm vi protected củalớ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
Trang 45Chương 09 - 45
GV Nguyễn Sơn Hoàng Quốc
ThS Nguyễn Tấn Trần Minh Khang
Trang 465 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
Trang 47Chương 09 - 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 09 - 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 09 - 51
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
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 09 - 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 547 TOÁN TỬ GÁN TRONG KẾ THỪA
Trang 55Chương 09 - 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 09 - 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:
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ở.
Trang 59Chương 09 - 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: