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 đủ
pdf 27 trang myanh 24860 Free
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:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_tuan_7_ke_thua_nguyen_kh.pdf