Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa

 Nhiều lớp có thông tin giống nhau.

 Có 2 dạng:

 Dạng chia sẻ: A ∩ B ≠ Ø.

 Dạng mở rộng: B = A + ε.

 Nhược điểm:

 Xây dựng tốn kém.

 Dung lượng lưu trữ lớn.

 Thay đổi phần chung khó khăn

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa trang 1

Trang 1

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa trang 2

Trang 2

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa trang 3

Trang 3

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa trang 4

Trang 4

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa trang 5

Trang 5

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa trang 6

Trang 6

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa trang 7

Trang 7

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa trang 8

Trang 8

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa trang 9

Trang 9

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 27 trang Danh Thịnh 08/01/2024 3500
Bạn đang xem 10 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 - Bài: Kế thừa", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Kế thừa
1Phương pháp lập trình hướng đối tượng. 
Kế thừa
2Phương pháp lập trình hướng đối tượng. 
Nội dung
 Khái niệm kế thừa.
 Tầm vực trong kế thừa.
 Định nghĩa lại phương thức.
 Quan hệ IS-A và HAS-A.
 Bài tập.
3Phương pháp lập trình hướng đối tượng. 
Nội dung
 Khái niệm kế thừa.
 Tầm vực trong kế thừa.
 Định nghĩa lại phương thức.
 Quan hệ IS-A và HAS-A.
 Bài tập.
4Phương pháp lập trình hướng đối tượng. 
Khái niệm kế thừa
 Vấn đề trùng lấp thông tin:
 Nhiều lớp có thông tin giống nhau.
 Có 2 dạng:
 Dạng chia sẻ: A ∩ B ≠ Ø.
 Dạng mở rộng: B = A + ε.
 Nhược điểm:
 Xây dựng tốn kém.
 Dung lượng lưu trữ lớn.
 Thay đổi phần chung khó khăn.
A
x, y, z
a, b, c
B
x, y, z
u, v, w
A
x, y, z
B
x, y, z
a, b, c
Giải quyết: tái sử dụng!!
5Phương pháp lập trình hướng đối tượng. 
Khái niệm kế thừa
 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ừa: lớ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ở.
A
x, y, z
a, b, c
B
x, y, z
u, v, w
B
x, y, z
a, b, c
O
x, y, z
A
x, y, z
6Phương pháp lập trình hướng đối tượng. 
Khái niệm kế thừa
 Khai báo trong C++:
class : 
 Loại kế thừa:
 public, private, protected.
 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.
};
7Phương pháp lập trình hướng đối tượng. 
Khái niệm kế thừa
 Ví dụ:
 Thông tin:
 Họ tên.
 Mức lương.
 Số ngày nghỉ.
 Công việc:
 Giảng dạy.
 Tính lương.
 Thông tin:
 Họ tên.
 Mức lương.
 Số ngày nghỉ.
 Lớp chủ nhiệm.
 Công việc:
 Giảng dạy.
 Tính lương.
 Sinh hoạt chủ nhiệm.
Giáo viên
GVCN
8Phương pháp lập trình hướng đối tượng. 
Khái niệm kế thừa
 Ví dụ:
class GiaoVien
{
private:
char *m_sHoTen;
float m_fMucLuong;
int m_iSoNgayNghi;
public:
GiaoVien(char *sHoTen,
float fMucLuong,
int iSoNgayNghi);
void giangDay();
float tinhLuong();
};
class GVCN : public GiaoVien
{
private:
char *m_sLopCN;
public:
GVCN(char *sHoTen,
float fMucLuong,
int iSoNgayNghi,
char *sLopCN);
void sinhHoatCN();
};
Lớp kế thừa Lớp cơ sở
GVCN thừa hưởng TẤT CẢ
thuộc tính và phương thức 
của GiaoVien
9Phương pháp lập trình hướng đối tượng. 
Khái niệm kế thừa
 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();
}
10Phương pháp lập trình hướng đối tượng. 
Nội dung
 Khái niệm kế thừa.
 Tầm vực trong kế thừa.
 Định nghĩa lại phương thức.
 Quan hệ IS-A và HAS-A.
 Bài tập.
11Phương pháp lập trình hướng đối tượng. 
Tầm vực trong kế thừa
 Tầm vực thay đổi thế nào khi kế thừa? 
Lớp cơ sở
private:
m_iX
protected:
m_iY
public:
m_iZ
Lớp kế thừa
???:
m_iX
???:
m_iY
???:
m_iZ
Kế thừa
 Loại kế thừa quyết định!!
12Phương pháp lập trình hướng đối tượng. 
Tầm vực trong kế thừa
 Bảng tầm vực trong kế thừa:
Tầm vực
Kế thừa 
public
Kế thừa 
protected
Kế thừa 
private
public public protected private
protected protected protected private
private
Không thể 
truy xuất
Không thể 
truy xuất
Không thể 
truy xuất
13Phương pháp lập trình hướng đối tượng. 
Nội dung
 Khái niệm kế thừa.
 Tầm vực trong kế thừa.
 Định nghĩa lại phương thức.
 Quan hệ IS-A và HAS-A.
 Bài tập.
14Phương pháp lập trình hướng đối tượng. 
Định nghĩa lại phương thức
 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!!
15Phương pháp lập trình hướng đối tượng. 
Định nghĩa lại phương thức
 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.
16Phương pháp lập trình hướng đối tượng. 
Định nghĩa lại phương thức
 Ví dụ:
class GiaoVien
{
private:
char *m_sHoTen;
float m_fMucLuong;
int m_iSoNgayNghi;
public:
GiaoVien(char *sHoTen, float fMucLuong, int iSoNgayNghi);
void giangDay();
float tinhLuong()
{
return m_fMucLuong – m_iSoNgayNghi * 10000;
}
};
17Phương pháp lập trình hướng đối tượng. 
Định nghĩa lại phương thức
 Ví dụ:
class GVCN : public GiaoVien
{
private:
char *m_sLopCN;
public:
GVCN(char *sHoTen,
float fMucLuong,
int iSoNgayNghi,
char *sLopCN);
void sinhHoatCN();
float tinhLuong()
{
return GiaoVien::TinhLuong() + 50000;
}
};
void main()
{
GiaoVien gv1(“Minh”, 500000, 5);
gv1.giangDay();
float fLuong1 = gv1.tinhLuong();
GVCN gv2(“Hanh”, 700000, 3);
gv2.giangDay();
float fLuong2 = gv2.tinhLuong();
}
18Phương pháp lập trình hướng đối tượng. 
Nội dung
 Khái niệm kế thừa.
 Tầm vực trong kế thừa.
 Định nghĩa lại phương thức.
 Quan hệ IS-A và HAS-A.
 Bài tập.
19Phương pháp lập trình hướng đối tượng. 
Quan hệ IS-A và HAS-A
 Quan hệ IS-A:
 Lớp A quan hệ IS-A 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.
 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.
20Phương pháp lập trình hướng đối tượng. 
Quan hệ IS-A và HAS-A
 Quan hệ HAS-A:
 Lớp A quan hệ HAS-A với lớp B
 A bao hàm B.
 A chứa B.
 B là một bộ phận của A.
 Ví dụ:
 ChiecXe chứa BanhXe.
 QuyenSach chứa TrangSach.
21Phương pháp lập trình hướng đối tượng. 
Quan hệ IS-A và HAS-A
 Dr. Guru khuyên: luật xây dựng lớp.
 A có quan hệ IS-A với B.
 Cho A kế thừa B.
 A có quan hệ HAS-A với B.
 Cho B là một thuộc tính của A.
 Ví dụ:
class ConMeo : public ConVat { };
class ChiecXe
{
private:
BanhXe *m_pBanhXe;
};
22Phương pháp lập trình hướng đối tượng. 
Tóm tắt
 Khái niệm kế thừa:
 Định nghĩa lớp 

File đính kèm:

  • pdfbai_giang_phuong_phap_lap_trinh_huong_doi_tuong_bai_ke_thua.pdf