Xem mẫu
- ĐH CÔNG NGHỆ THÔNG TIN http://sites.google.com/site/khaiphong
Số tiết lý thuyết: 45 tiết
Số tiết thực hành: 30 tiết
1
- http://sites.google.com/site/khaiphong
Nội dung môn học:
Chương 1: Tổng quan về OOP
Chương 2: Lớp & đối tƣợng
Chương 3: Hàm và hàm đa năng trong OOP
Chương 4: Đa năng hóa toán tử
Chương 5: Sự kế thừa và tính đa hình
2
- http://sites.google.com/site/khaiphong
Chương 4: Sự kế thừa và tính đa hình
Khái niệm sự kế thừa
Kế thừa đơn
Đa kế thừa
Tính đa hình trong kế thừa
3
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Khái niệm sự kế thừa
Khái niệm Khái niệm:
Ví dụ Kế thừa trong OOP là sự tái sử dụng
Ƣu điểm
các lớp có các đặc tính chung với
nhau để tạo ra các lớp mới từ một hay
Thành phần kế thừa
nhiều lớp đã có.
Phân loại Ví dụ:
Xét về bản chất: NV_VANPHONG
và NV_SANXUAT đều là nhân viên
nên nó phải có các thuộc tính chung:
MaNV, Hoten, CMND.. của một
ngƣởi nhân viên.
4
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
NHANVIEN
MaNV
Hoten
CMND
Nhap()
Xuat()
Tinhluong()
NV_VANPHONG NV_SANXUAT
LCB Sogiolam
Phucap SoSP
MaNV MaNV
Hoten Hoten
KẾ THỪA CMND CMND
NHÂN Nhap() Nhap()
VIÊN Xuat() Xuat()
Tinhluong() Tinhluong()
5
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Khái niệm sự kế thừa
Khái niệm Ƣu điểm:
Ví dụ Tái sử dụng chƣơng trình đã có
Cho phép tạo ra các thƣ việc lớp (là
Ƣu điểm tập hợp dữ liệu và hàm đƣợc đóng
Thành phần kế thừa gói thành các lớp, ví dụ: thƣ viện
Phân loại math.h, string.h…)
Thành phần kế thừa:
Lớp kế thừa sẽ kế thừa:
Thành phần dữ liệu không thuộc
private của lớp đƣợc kế thừa.
Đƣợc quyền truy xuất các hàm thành
viên không thuộc private của lớp
đƣợc kế thừa.
6
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Khái niệm sự kế thừa
Khái niệm Phân loại:
Ví dụ Kế thừa đơn:
Ƣu điểm Lớp A Lớp cơ bản Lớp A Lớp cơ bản
Thành phần kế thừa Lớp dẫn xuất
Lớp B Lớp dẫn xuất Lớp B
Phân loại từ A
Lớp dẫn xuất
Lớp C
từ B
Đa kế thừa:
Lớp A Lớp B Lớp A Lớp A
Lớp C Lớp B Lớp C
Lớp D
7
- http://sites.google.com/site/khaiphong
Chương 4: Sự kế thừa và tính đa hình
Khái niệm sự kế thừa
Kế thừa đơn
Đa kế thừa
Tính đa hình trong kế thừa
8
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Kế thừa đơn
Khái niệm Khái niệm:
Phân loại Kế thừa đơn là tiến trình tạo ra một lớp mới
Cú pháp
từ một lớp đã có.
Phân loại:
Kiểu kế thừa
Lớp A Lớp cơ bản Lớp A Lớp cơ bản
Ví dụ
Đặc điểm Lớp dẫn xuất
Lớp B Lớp dẫn xuất Lớp B
từ A
Lớp dẫn xuất
Lớp C
từ B
Kế thừa đơn 1 cấp Kế thừa đơn nhiều cấp
(đa tầng)
Lưu ý: trong kế thừa đơn nhiều cấp ta cần phân biệt lớp cơ
bản trực tiếp (Lớp A) và lớp cơ bản gián tiếp (lớp B)
=> Lớp cơ bản trực tiếp: là lớp có tên trong khai báo của
lớp dẫn xuất.
9
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Kế thừa đơn
Khái niệm Cú pháp:
Phân loại class Coban{
…
Cú pháp };
Kiểu kế thừa class Danxuat: Coban{
…
Ví dụ };
Đặc điểm Trong đó:
: có thể là public,protected
hoặc private
Lưu ý: khi không có từ khoá chỉ định thì mặc định kiểu kế
thừa là private
Ví dụ:
class HINH{ class HCN:public HINH{
private: int mau; private: int dai,rong;
}; };
10
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Kế thừa đơn
Khái niệm Kiểu kế thừa:
Kiểu kế thừa public: một lớp kế thừa kiểu public không làm
Phân loại
thay đổi tính truy cập các thành viên của lớp cơ bản.
Cú pháp Kiểu kế thừa protected: một lớp kế thừa kiểu protected làm
thay đổi tính truy cập các thành viên của lớp cơ bản thành
Kiểu kế thừa protected.
Kiểu kế thừa private: một lớp kế thừa kiểu private làm thay
Ví dụ
đổi tính truy cập các thành viên của lớp cơ bản thành
Đặc điểm private.
LỚP THỪA KẾ THỪA KẾ THỪA KẾ
CƠ BẢN PUBLIC PRIVATE PROTECTED
PUBLIC PUBLIC PRIVATE PROTECTED
PROTECTED PROTECTED PRIVATE PROTECTED
PRIVATE NO NO NO
Ví dụ:
11
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Kiểu kế thừa: public
class A{ void main{
private: B obj;
int data_pri; obj.data_pri=5; // error
obj.data_pub=6; // ok
public:
}
int data_pub;
};
class B: public A{
void output(){
cout
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Kiểu kế thừa: private
class A{ void main{
private: B obj;
int data_pri; obj.data_pri=5; // error
obj.data_pub=6; // error
public:
}
int data_pub;
};
class B: private A{
void output(){
cout
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Kiểu kế thừa: protected
class A{ void main{
private: B obj;
int data_pri; obj.data_pri=5; // error
obj.data_pub=6; // error
public:
}
int data_pub;
};
class B: protected A{ Do lớp B kế thừa kiểu protected
void output(){ nên tính truy cập của các thành
cout
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Kế thừa đơn
Khái niệm Đặc điểm:
Trình tự gọi hàm khởi tạo:
Phân loại
Khi có kế thừa, trình tự gọi hàm khởi tạo thực hiện theo
Cú pháp nguyên tắc: hàm khởi tạo của lớp cơ bản được gọi trước và
lớp dẫn xuất gọi sau.
Kiểu kế thừa Lưu ý: ta có thể chỉ định hàm khởi tạo nào của lớp cơ bản đƣợc
Ví dụ gọi bằng toán tử “:” (xem lại chƣơng 1).
Ví dụ:
Đặc điểm class A{ class B:public A{
A(); B():A(){..}; // gọi hàm A()
A(int); B(int c):A(c){..}; // gọi hàm A(int)
}; };
Trình tự gọi hàm huỷ:
Hàm hủy đƣợc gọi theo trình tự ngƣợc lại: lớp dẫn xuất đƣợc
gọi trƣớc và lớp cơ bản gọi sau.
15
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Kế thừa đơn
Khái niệm Đặc điểm:
Gọi hàm thành viên trong kế thừa:
Phân loại
Hàm thành viên của lớp dẫn xuất có thể cùng tên với tên hàm
Cú pháp thành viên của lớp cơ bản.
Hàm thành viên đƣợc gọi ứng với đối tƣợng gọi nó
Kiểu kế thừa
Ví dụ:
Ví dụ Đối tƣợng lớp cơ bản gọi thì hàm thành viên của lớp cơ bản
thực hiện.
Đặc điểm Đối tƣợng lớp dẫn xuất gọi thì hàm thành viên của lớp dẫn
xuất thực hiện.
Trong lớp dẫn xuất, muốn gọi hàm thành viên cùng tên của
lớp cơ bản, ta dùng toán tử phạm vi “::” theo cú pháp sau:
::(…)
Con trỏ trong kế thừa:
Con trỏ lớp cơ bản có thể trỏ tới địa chỉ đối tƣợng của lớp
dẫn xuất nhƣng ngược lại thì không.
Đối tƣợng lớp dẫn xuất đƣợc xem nhƣ là một đối tƣợng của
lớp cơ bản khi xử lý qua con trỏ nhƣng ngược lại thì không.
16
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Ví dụ trình tự gọi hàm khởi tạo và hàm huỷ trong kế thừa đơn:
class base{ class derived: public base{
public: public:
base(){cout
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Ví dụ gọi hàm hàm thành viên trong kế thừa:
class base{ class derived: public base{
public: public:
void out(){cout
- Chương 4: Sự kế thừa và tính đa hình http://sites.google.com/site/khaiphong
Ví dụ con trỏ trong kế thừa:
class A{ class B: public A{
protected: public:
int dataA; int dataB;
public: public:
A(){dataA=5;} B():A(){dataB=10;}
void showA(){cout
- http://sites.google.com/site/khaiphong
Chương 4: Sự kế thừa và tính đa hình
Khái niệm sự kế thừa
Kế thừa đơn
Đa kế thừa
Tính đa hình trong kế thừa
20
nguon tai.lieu . vn