Xem mẫu

  1. Đ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
  2. 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
  3. 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
  4.  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
  5.  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
  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  Ƣ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
  7.  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
  8. 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
  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  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
  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  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
  11.  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
  12.  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
  13.  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
  14.  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
  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:  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
  16.  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
  17.  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
  18.  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
  19.  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
  20. 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