Bài giảng Lập trình hướng đối tượng - Tuần 7: Kế thừa - Nguyễn Khắc Huy
Nguyễn Khắc Huy
BM Công Nghệ Phần Mềm
9/2017
Ôn tập đối tượng
• Ví dụ: Xét ngữ cảnh là 1 trường PTTH với
phần mềm quản lý trường cấp 3:
• Danh sách đề nghị:
– Học sinh Tổ Bộ môn Số tiết
– Giáo viên BGH
TKB
– Môn học Khối
Bảng điểm
– Lớp
Phụ huynh Phòng
– Học kỳ
ĐTB
Học phí
– Năm học Diện HS …
• Đối tượng/Không phải đối tượng?
BM Công Nghệ Phần Mềm
2
Ôn tập đối tượng
• Được quan tâm?
– Phần mềm quản lý học sinh:
• Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ
huynh, Học kỳ, Năm học…
– Phần mềm quản lý giáo viên:
• Giáo viên, Tổ bộ môn, Môn học, Khối, Lớp, Học
kỳ, Năm học…
– Phần mềm xếp thời khóa biểu:
• Giáo viên, Môn học, Lớp, Phòng, Học kỳ,Năm
học…
BM Công Nghệ Phần Mềm
3
Ôn tập đối tượng
• Đối tượng chính?Đối tượng phụ
– Phần mềm quản lý học sinh:
• Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ
huynh, Học kỳ, Năm học…
– Phần mềm quản lý giáo viên:
• Giáo viên, Tổ bộ môn, Môn học, Khối, Lớp, Học
kỳ, Năm học…
– Phần mềm xếp thời khóa biểu:
• Giáo viên, Môn học, Lớp, Phòng, Học kỳ,Năm
học…
BM Công Nghệ Phần Mềm
4
Giới thiệu
• Một trong những tính chất quan trọng trong phương
pháp lập trình hướng đối tượng là khả năng tái sử dụng
các lớp đã được định nghĩa.
• Do đó, với kế thừa, người lập trình có thể định nghĩa lớp
đối tượng mới dựa trên 1 hay nhiều lớp đối tượng đã có
sẵn.
• Lớp có sẵn được gọi là lớp cơ sở (based class) và lớp
kế thừa được gọi là lớp dẫn xuất (derived class)
BM Công Nghệ Phần Mềm
5
Kế thừa
C
A
B
* * * *
*
- - *- - - *-
*- - * - - *
+ * + + + * + *
+ * + + + * +
A
B
* tính chất chung
- tính chất của A
+ tính chất của B
- - - - - - - -
- -
+ + + + + + +
+ + +
BM Công Nghệ Phần Mềm
6
Ví dụ
C
ConNguoi
A
B
GiaoVien
SinhVien
BM Công Nghệ Phần Mềm
7
Kế thừa
E
D
E
* * * *
*
- *- - - *-
*- - * - - *
* * * *
*
D
* tính chất đã xây dựng
- tính chất mới của D
- - - - - - -
- -
BM Công Nghệ Phần Mềm
8
Ví dụ
Lớp cơ sở
SINH VIÊN
Kế thừa
TẠI
CHỨC
CAO
ĐẲNG
CHÍNH
QUY
HOÀN
CHỈNH
Lớp dẫn xuất
BM Công Nghệ Phần Mềm
9
Cú pháp
• Trong C++, kế thừa được khai báo như
sau:
class <Tên lớp kế thừa> : <Loại kế thừa> <Tên lớp cơ sở>
{
private:
<Khai báo thành phần riêng>
public:
<Khai báo thành phần công cộng>
};
BM Công Nghệ Phần Mềm
10
Một số lưu ý khi kế thừa
A
B
• Các thành phần thuộc tính và hành động
public của A sẽ là các thành phần trong B
• Các thành phần private của A chỉ được
truy xuất qua các hàm public hay
protected của A
BM Công Nghệ Phần Mềm
11
Từ khóa protected
• Các thành phần protected của lớp cơ sở
sẽ được nhìn thấy (hay truy xuất trực tiếp)
được trong lớp dẫn xuất nhưng không
được nhìn thấy/truy xuất từ bên ngoài.
BM Công Nghệ Phần Mềm
12
Các loại kế thừa
Có 3 loại kế thừa:
• public
• protected
• Private
Lưu ý: Nếu không nói rõ là loại kế thừa gì,
chúng ta ngầm định đó là kế thừa public
BM Công Nghệ Phần Mềm
13
Các loại kế thừa
• public: các thành phần public và
protected của lớp cơ sở là các thành phần
public và protected của lớp dẫn xuất.
• protected: Các thành phần public và
protected của lớp cơ sở là các thành phần
protected của lớp dẫn xuất.
• private: Các thành phần public và
protected của lớp cơ sở là các thành phần
private của lớp dẫn xuất.
BM Công Nghệ Phần Mềm
14
Kế thừa phương thức
• Các phương thức của lớp cơ sở sẽ được kế thừa
trong lớp dẫn xuất, ngoại trừ:
– Hàm dựng
– Hàm hủy
– Toán tử gán bằng
• Lưu ý: các phương thức private của lớp cơ sở
vẫn tồn tại trong lớp dẫn xuất nhưng phải được truy
xuất thông qua các phương thức protected hay
public của lớp cơ sở.
BM Công Nghệ Phần Mềm
15
Hàm dựng trong kế thừa
• Khi một đối tượng thuộc lớp dẫn xuất
được tạo lập:
– Hàm dựng của lớp cơ sở sẽ tự động được
gọi thực hiện trước
– Sau đó, hàm dựng của lớp dẫn xuất sẽ được
thực hiện.
– Trong hàm dựng của lớp dẫn xuất, chúng ta
có thể chỉ định hàm dựng nào của lớp cơ sở
sẽ được gọi thực hiện. Nếu không, hàm dựng
mặc định của lớp cơ sở sẽ được gọi.
BM Công Nghệ Phần Mềm
16
Hàm dựng trong lớp dẫn xuất
Lưu ý:
A
B
C
• Hàm dựng của lớp dẫn xuất chỉ
được phép chỉ định hàm dựng
nào của lớp cơ sở trực tiếp
của nó thực hiện chứ không thể
can thiệp đến các lớp cơ sở kế
thừa xa hơn.
X
BM Công Nghệ Phần Mềm
17
Ví dụ
class A
{
class A {
public:
public:
A();
A(int);
A();
A(int);
};
};
class B : public A
class B : public A
{
{
public:
public:
B(int);
};
B(int t) : A(t) {
...
}
};
BM Công Nghệ Phần Mềm
18
Hàm hủy trong kế thừa
• Khi một đối tượng thuộc lớp kế thừa bị
hủy:
– Hàm hủy của lớp kế thừa được gọi thực hiện
trước
– Sau đó mới đến hàm hủy của lớp cơ sở.
BM Công Nghệ Phần Mềm
19
Định nghĩa lại phương thức
• Đôi khi chúng ta cần định nghĩa lại các phương
thức của lớp cơ sở trong lớp dẫn xuất
Việc này được thực hiện bằng cách khai báo và
cài đặt lại các phương thức này trong lớp dẫn
xuất.
Phương thức được định nghĩa lại còn được gọi là
hàm nạp chồng (overriden function).
Lưu ý: hàm được định nghĩa lại này sẽ che đi các
hàm trùng tên khác (nếu có) trong lớp cơ sở.
BM Công Nghệ Phần Mềm
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 - Tuần 7: Kế thừa - Nguyễn Khắc Huy", để 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_tuan_7_ke_thua_nguyen_kh.pdf

