Bài giảng Phương pháp lập trình hướng đối tượng - Tuần 9: Kế thừa - Nguyễn Lê Hoàng Dũng

Kế thừa  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
1
Nội dung  
n Khái niệm kế thừa.  
n Tầm vực trong kế thừa.  
n Định nghĩa lại phương thức.  
n Quan hệ IA và HAA.  
n Bài tập.  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
2
Nội dung  
n Khái niệm kế thừa.  
n Tầm vực trong kế thừa.  
n Định nghĩa lại phương thức.  
n Quan hệ IA và HAA.  
n Bài tập.  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
3
Khái niệm kế thừa  
n Vấn đề trùng lấp thông tin:  
Nhiều lớp có thông tin giống nhau.  
Có 2 dạng:  
A
B
x, y, z  
u, v, w  
Ø Dạng chia sẻ: A ∩ B ≠ Ø.  
x, y, z  
Ø Dạng mở rộng: B = A + .  
a, b, c  
Nhược điểm:  
A
B
x, y, z  
a, b, c  
Ø Xây dựng tốn kém.  
x, y, z  
Ø Dung lượng lưu trữ lớn.  
Ø Thay đổi phần chung khó khăn.  
Giải quyết: tái sử dụng!!  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
4
Khái niệm kế thừa  
n Khái niệm kế thừa:  
Định nghĩa lớp mới dựa trên những lớp đã có.  
Lớp cơ sởlớp dùng để định nghĩa lớp mới.  
Lớp kế thừalớp được định nghĩa từ lớp đã có.  
Lớp kế thừa thừa hưởng TẤT CẢ từ lớp cơ sở.  
O
A
x, y, z  
x, y, z  
A
x, y, z  
a, b, c  
B
x, y, z  
u, v, w  
B
x, y, z  
a, b, c  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
5
Khái niệm kế thừa  
n Khai báo trong C++:  
class <Lớp kế thừa> : <Loại kế thừa> <Lớp cơ sở>  
n Loại kế thừa:  
public, private, protected.  
n Ví dụ:  
class A : public O  
{
private:  
// Khai báo thuộc tính mới của A.  
public:  
// Khai báo phương thức mới của A.  
};  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
6
Khái niệm kế thừa  
n Ví dụ:  
n Thông tin:  
n Họ tên.  
n Thông tin:  
n Họ tên.  
n Mức lương.  
n Số ngày nghỉ.  
n Công việc:  
n Mức lương.  
n Số ngày nghỉ.  
n Lớp chủ nhiệm.  
GVCN  
n Giảng dạy.  
n Công việc:  
Giáo viên  
n Tính lương.  
n Giảng dạy.  
n Tính lương.  
n Sinh hoạt chủ nhiệm.  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
7
Khái niệm kế thừa  
Lớp kế thừa  
Lớp cơ sở  
n Ví dụ:  
class GiaoVien  
clasGVC: publiGiaoVien  
{
{
private:  
private:  
cha*m_sLopCN;  
public:  
GVCN(char *sHoTen,  
char  
float  
int  
*m_sHoTen;  
m_fMucLuong;  
m_iSoNgayNghi;  
float fMucLuong,  
int iSoNgayNghi,  
char *sLopCN);  
public:  
GiaoVien(char *sHoTen,  
float fMucLuong,  
void sinhHoatCN();  
int iSoNgayNghi);  
void giangDay();  
GVCN thừa hưởng TẤT CẢ  
thuộc tính và phương thức  
của GiaoVien  
float tinhLuong();  
};  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
8
Khái niệm kế thừa  
n Ví dụ:  
void main()  
{
GiaoVien gv1(“Minh”, 500000, 5);  
gv1.giangDay();  
float fLuong1 = gv1.tinhLuong();  
GVCN gv2(“Hanh”, 700000, 3);  
gv2.giangDay();  
gv2.sinhHoatCN();  
float fLuong2 = gv2.tinhLuong();  
}
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
9
Nội dung  
n Khái niệm kế thừa.  
n Tầm vực trong kế thừa.  
n Định nghĩa lại phương thức.  
n Quan hệ IA và HAA.  
n Bài tập.  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
10  
Tầm vực trong kế thừa  
n Tầm vực thay đổi thế nào khi kế thừa?  
Lớp cơ sở  
Lớp kế thừa  
private:  
???:  
m_iX  
m_iX  
Kế thừa  
protected:  
m_iY  
???:  
m_iY  
public:  
m_iZ  
???:  
m_iZ  
è Loại kế thừa quyết định!!  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
11  
Tầm vực trong kế thừa  
n Bảng tầm vực trong kế thừa:  
Kế thừa  
public  
Kế thừa  
protected  
Kế thừa  
private  
Tầm vực  
public  
public  
protected  
protected  
private  
private  
protected  
private  
protected  
Không thể Không thể Không thể  
truy xuất truy xuất truy xuất  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
12  
Nội dung  
n Khái niệm kế thừa.  
n Tầm vực trong kế thừa.  
n Định nghĩa lại phương thức.  
n Quan hệ IA và HAA.  
n Bài tập.  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
13  
Định nghĩa lại phương thức  
n Kế thừa một phần:  
Không kế thừa “máy móc” tất cả.  
Lớp kế thừa có thể thay đổi những gì đã kế thừa!!  
è Định nghĩa lại phương thức đã kế thừa.  
Lớp kế thừa thừa hưởng TẤT CẢ thuộc tính và  
phương thức của lớp cơ sở TRỪ những  
phương thức được định nghĩa lại!!  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
14  
Định nghĩa lại phương thức  
n Ví dụ:  
GVCN kế thừa từ GiaoVien.  
GVCN tính lương khác GiaoVien.  
Ø Lương GV = Mức lương – Số ngày nghỉ * 10000.  
Ø Lương GVCN = Lương GV + Phụ cấp 50000.  
è Viết lại phương thức tinhLuong() cho lớp GVCN.  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
15  
Định nghĩa lại phương thức  
n Ví dụ:  
class GiaoVien  
{
private:  
char  
float  
int  
*m_sHoTen;  
m_fMucLuong;  
m_iSoNgayNghi;  
public:  
GiaoVien(char *sHoTen, float fMucLuong, int iSoNgayNghi);  
void giangDay();  
float tinhLuong()  
{
return m_fMucLuong m_iSoNgayNghi * 10000;  
}
};  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
16  
Định nghĩa lại phương thức  
n Ví dụ:  
clasGVCN : publiGiaoVien  
void main()  
{
{
private:  
GiaoVien gv1(“Minh”, 500000, 5);  
char  
*m_sLopCN;  
gv1.giangDay();  
public:  
float fLuong1 = gv1.tinhLuong();  
GVCN(char *sHoTen,  
float fMucLuong,  
int iSoNgayNghi,  
char *sLopCN);  
GVCN gv2(“Hanh”, 700000, 3);  
gv2.giangDay();  
void sinhHoatCN();  
float fLuong2 = gv2.tinhLuong();  
float tinhLuong()  
{
}
return GiaoVien::TinhLuong() + 50000;  
}
};  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
17  
Nội dung  
n Khái niệm kế thừa.  
n Tầm vực trong kế thừa.  
n Định nghĩa lại phương thức.  
n Quan hệ IA và HAA.  
n Bài tập.  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
18  
Quan hệ IA và HAA  
n Quan hệ IA:  
Lớp A quan hệ IA với lớp B  
Ø A là một trường hợp đặc biệt của B.  
Ø A cùng loại với B.  
n Ví dụ:  
GVCN là một GiaoVien đặc biệt.  
HinhVuong là một HinhChuNhat đặc biệt.  
ConMeo là một ConVat đặc biệt.  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
19  
Quan hệ IA và HAA  
n Quan hệ HAA:  
Lớp A quan hệ HAA với lớp B  
Ø A bao hàm B.  
Ø A chứa B.  
Ø B là một bộ phận của A.  
n Ví dụ:  
ChiecXe chứa BanhXe.  
QuyenSach chứa TrangSach.  
Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy  
20  
Tải về để xem bản đầy đủ
pdf 27 trang myanh 26900 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phương pháp lập trình hướng đối tượng - Tuần 9: Kế thừa - Nguyễn Lê Hoàng Dũng", để 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_phuong_phap_lap_trinh_huong_doi_tuong_tuan_9_ke_th.pdf
  • zipOOP-W9-Inheritance-Demo2.zip