Chương 6: KẾ THỪA | Bài giảng Lập trình hướng đối tượng

Hai lớp đối tượng được gọi là có 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 có quan hệ duy nhất với một đối tượng thuộc lớp này

KẾ THỪA
Khoa Công nghệ phần mềm
Nội dung
9/20/20 Lập trình hướng đối tượng 2
Quan hệ giữa các lớp đối tượng
1
Kế thừa
2
Kế thừa đơn
3
Phạm vi truy xuất trong kế thừa
4
Đa kế thừa
5
5
Quan hệ giữa các lớp đối tượng
vGiữa các lớp đối tượng những loại quan
hệ sau:
§ Quan hệ
một một (1-1)
§ Quan hệ một nhiều (1-n)
§ Quan hệ nhiều nhiều (n-n)
§ Quan hệ đặc biệt hóa, tổng quát hóa
20/09/2020 Lập trình hướng đối tượng 3
Quan hệ một một (1-1)
vKhái niệm: Hai lớp đối ợng được gọi
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 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.
v hiệu:
20/09/2020 Lập trình hướng đối tượng 4
ClassA ClassB
Quan hệ
Quan hệ một một (1-1)
v dụ:
20/09/2020 Lập trình hướng đối tượng 5
LOPHOC GIAOVIEN
Chủ nhiệm
VO CHONG
Hôn nhân
COUNTRY CAPITAL
Quan hệ một nhiều (1-n)
vKhái niệm: Hai lớp đối tượng được gọi
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 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.
v hiệu:
20/09/2020 Lập trình hướng đối tượng 6
ClassA ClassB
Quan hệ
Quan hệ một nhiều (1-n)
v dụ:
20/09/2020 Lập trình hướng đối tượng 7
LOPHOC HOCSINH
CONGTY NHANVIEN
HOASI TACPHAM
Sáng tác
Quan hệ nhiều nhiều (n-n)
vKhái niệm: hai lớp đối tượng được gọi
quan hệ nhiều-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 một đối ợng
lớp kia cũng quan hệ với nhiều đối
tượng thuộc lớp này.
v hiệu
20/09/2020 Lập trình hướng đối tượng 8
ClassA ClassB
Quan hệ
Quan hệ nhiều nhiều (n-n)
v dụ
20/09/2020 Lập trình hướng đối tượng 9
NAM NU
Yêu
BACSI BENHNHAN
Khám bệnh
Quan hệ đặc biệt hóa tổng quát hóa
vKhái niệm: hai lớp đối tượng được gọi
quan hệ đặc biệt hóa-tổng quát hóa với
nhau khi lớp đối tượng này trường hợp
đặc biệt của lớp đối tượng kia lớp đối
tượng kia trường hợp tổng quát của lớp
đối tượng này.
v kiệu:
20/09/2020 Lập trình hướng đối tượng 10
ClassA
ClassB
Quan hệ đặc biệt hóa tổng quát hóa
v dụ:
20/09/2020 Lập trình hướng đối tượng 11
TAMGIAC
TAMGIACCAN
NGUOI
SINHVIEN
Quan hệ đặc biệt hóa tổng qt hóa
20/09/2020 Lập trình hướng đối tượng 12
Triangle
Polygon
Animal
Cat Horse Chicken
TerrestrialAnimal AquaticAnimal
Fish Octopus
Rectangle
Kế thừa
vKế thừa một đặc điểm của ngôn ngữ dùng để
biểu diễn
mối quan hệ đặc biệt hóa tổng quát
hóa giữa các lớp
. Các lớp được trừu tượng hóa
được tổ chức thành một
đồ phân cấp lớp.
vSự kế thừa một mức cao hơn của
trừu ợng
hóa
, cung cấp một chế gom chung các lớp
liên quan với nhau thành một mức
khái quát hóa
đặc trưng cho toàn bộ các lớp nói trên.
20/09/2020 Lập trình hướng đối tượng 13
Kế thừa
vCác lớp với các đặc điểm tương tự nhau thể
được tổ chức thành một đồ phân cấp kế thừa
(cây kế thừa)
.
vQuan hệ “là 1”: Kế thừa được sử dụng thông
dụng nhất để biểu diễn quan hệ “là 1”.
§ Một sinh viên một người
§ Một hình tròn một hình ellipse
§ Một tam giác một đa giác
§
20/09/2020 Lập trình hướng đối tượng 14
Lợi ích kế thừa
vKế thừa cho phép xây dựng lớp mới từ lớp đã .
vKế thừa cho phép tổ chức các lớp
chia sẻ
chương trình chung
, nhờ vậy thể dễ dàng sửa
chữa, nâng cấp hệ thống.
vTrong C++, kế thừa còn định nghĩa sự ơng
thích
, nhờ đó ta chế chuyển kiểu tự động.
20/09/2020 Lập trình hướng đối tượng 15
Đặc tính Kế thừa
20/09/2020 Lập trình hướng đối tượng 16
vCho phép định nghĩa lớp mới từ lớp đã .
§ Lớp mới gọi lớp con (subclass) hay lớp dẫn xuất
(derived class)
§ Lớp đã gọi lớp cha (superclass) hay lớp sở
(base class)
.
Đặc tính Kế thừa
vThừa kế cho phép:
§ Nhiều lớp thể dẫn xuất từ một lớp sở
§ Một lớp thể dẫn xuất của nhiều lớp sở
vThừa kế không chỉ giới hạn một mức: Một lớp
dẫn xuất thể lớp sở cho các lớp dẫn xuất
khác
20/09/2020 Lập trình hướng đối tượng 17
Animal
Cat Horse Chicken
TerrestrialAnimal AquaticAnimal
Fish Octopus
Cú pháp khai báo kế thừa
class SuperClass{
//Thành phần của lớp sở
};
class DerivedClass : public/protected/private
SusperClass{
//Thành phần bổ sung của lớp dẫn xuất
};
20/09/2020 Lập trình hướng đối tượng 18
Truy cp thành viên ca lp
20/09/2020 Lập trình hướng đối tượng 19
Kế thừa đơn
vXét hai khái niệm Người Sinh viên với mối
quan hệ tự nhiên:
Một Sinh viên một Người.
Trong C++, ta thể biểu diễn khái niệm trên,
một sinh viên một người thêm một số thông
tin một số thao tác (riêng biệt của sinh viên).
vNhư vậy, ta tổ chức lớp
Sinh viên kế thừa từ lớp
Người
.
20/09/2020 Lập trình hướng đối tượng 20
| 1/70

Preview text:

KẾ THỪA
Khoa Công nghệ phần mềm Nội dung 1
Quan hệ giữa các lớp đối tượng 2 Kế thừa 3 Kế thừa đơn 4
Phạm vi truy xuất trong kế thừa 5 Đa kế thừa 9/20/20
Lập trình hướng đối tượng 2
Quan hệ giữa các lớp đối tượng
vGiữa các lớp đối tượng có những loại quan hệ sau: § Quan hệ một một (1-1)
§ Quan hệ một nhiều (1-n)
§ Quan hệ nhiều nhiều (n-n)
§ Quan hệ đặc biệt hóa, tổng quát hóa 20/09/2020
Lập trình hướng đối tượng 3
Quan hệ một một (1-1)
vKhái niệm: Hai lớp đối tượng được gọi là
có 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 có quan hệ duy nhất với một đối tượng thuộc lớp này. vKý hiệu: Quan hệ ClassA ClassB 20/09/2020
Lập trình hướng đối tượng 4
Quan hệ một một (1-1) vVí dụ: Chủ nhiệm LOPHOC GIAOVIEN Hôn nhân VO CHONG COUNTRY CAPITAL 20/09/2020
Lập trình hướng đối tượng 5
Quan hệ một nhiều (1-n)
vKhái niệm: Hai lớp đối tượng được gọi là
có 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 có quan hệ duy nhất với một đối tượng thuộc lớp này. vKí hiệu: Quan hệ ClassA ClassB 20/09/2020
Lập trình hướng đối tượng 6
Quan hệ một nhiều (1-n) vVí dụ: LOPHOC HOCSINH CONGTY NHANVIEN Sáng tác HOASI TACPHAM 20/09/2020
Lập trình hướng đối tượng 7
Quan hệ nhiều nhiều (n-n)
vKhái niệm: hai lớp đối tượng được gọi là
quan hệ nhiều-nhiều với nhau khi một đối
tượng thuộc lớp này có 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. vKí hiệu Quan hệ ClassA ClassB 20/09/2020
Lập trình hướng đối tượng 8
Quan hệ nhiều nhiều (n-n) vVí dụ Yêu NAM NU Khám bệnh BACSI BENHNHAN 20/09/2020
Lập trình hướng đối tượng 9
Quan hệ đặc biệt hóa – tổng quát hóa
vKhái niệm: hai lớp đối tượng được gọi là
có quan hệ đặc biệt hóa-tổng quát hó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ượng kia 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. ClassA vKí kiệu: ClassB 20/09/2020
Lập trình hướng đối tượng 10
Quan hệ đặc biệt hóa – tổng quát hóa vVí dụ: TAMGIAC NGUOI TAMGIACCAN SINHVIEN 20/09/2020
Lập trình hướng đối tượng 11
Quan hệ đặc biệt hóa – tổng quát hóa Polygon Rectangle Triangle Animal TerrestrialAnimal AquaticAnimal Cat Horse Chicken Fish Octopus 20/09/2020
Lập trình hướng đối tượng 12 Kế thừa
vKế thừa là một đặc điểm của ngôn ngữ dùng để
biểu diễn mối quan hệ đặc biệt hóa – tổng quát
hóa giữa các lớp. Các lớp được trừu tượng hóa
và được tổ chức thành một sơ đồ phân cấp lớp.
vSự kế thừa là một mức cao hơn của trừu tượng
hóa, cung cấp một cơ chế gom chung các lớp có
liên quan với nhau thành một mức khái quát hóa
đặc trưng cho toàn bộ các lớp nói trên. 20/09/2020
Lập trình hướng đối tượng 13 Kế thừa
vCác lớp với các đặc điểm tương tự nhau có thể
được tổ chức thành một sơ đồ phân cấp kế thừa (cây kế thừa).
vQuan hệ “là 1”: Kế thừa được sử dụng thông
dụng nhất để biểu diễn quan hệ “là 1”.
§ Một sinh viên là một người
§ Một hình tròn là một hình ellipse
§ Một tam giác là một đa giác § … 20/09/2020
Lập trình hướng đối tượng 14 Lợi ích kế thừa
vKế thừa cho phép xây dựng lớp mới từ lớp đã có.
vKế thừa cho phép tổ chức các lớp chia sẻ mã
chương trình chung, nhờ vậy có thể dễ dàng sửa
chữa, nâng cấp hệ thống.
vTrong C++, kế thừa còn định nghĩa sự tương
thích, nhờ đó ta có cơ chế chuyển kiểu tự động. 20/09/2020
Lập trình hướng đối tượng 15
Đặc tính Kế thừa
vCho phép định nghĩa lớp mới từ lớp đã có.
§ Lớp mới gọi là lớp con (subclass) hay lớp dẫn xuất (derived class)
§ Lớp đã có gọi là lớp cha (superclass) hay lớp cơ sở (base class). 20/09/2020
Lập trình hướng đối tượng 16
Đặc tính Kế thừa vThừa kế cho phép:
§ Nhiều lớp có thể dẫn xuất từ một lớp cơ sở
§ Một lớp có thể là dẫn xuất của nhiều lớp cơ sở
vThừa kế không chỉ giới hạn ở một mức: Một lớp
dẫn xuất có thể là lớp cơ sở cho các lớp dẫn xuất khác Animal TerrestrialAnimal AquaticAnimal Cat Horse Chicken Fish Octopus 20/09/2020
Lập trình hướng đối tượng 17
Cú pháp khai báo kế thừa class SuperClass{
//Thành phần của lớp cơ sở };
class DerivedClass : public/protected/private SusperClass{
//Thành phần bổ sung của lớp dẫn xuất }; 20/09/2020
Lập trình hướng đối tượng 18
Truy cập thành viên của lớp 20/09/2020
Lập trình hướng đối tượng 19 Kế thừa đơn
vXét hai khái niệm Người và Sinh viên với mối
quan hệ tự nhiên: Một Sinh viên là một Người.
Trong C++, ta có thể biểu diễn khái niệm trên,
một sinh viên là một người có thêm một số thông
tin và một số thao tác (riêng biệt của sinh viên).
vNhư vậy, ta tổ chức lớp Sinh viên kế thừa từ lớp Người. 20/09/2020
Lập trình hướng đối tượng 20