Bài giảng phương pháp lập trình hướng đối tượng chương 9 kế thừa

27 1K 0
Bài giảng phương pháp lập trình hướng đối tượng   chương 9  kế thừa

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 5: Kế thừa Phươ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 kế thừa Định nghĩa lại phương thức Quan hệ IS-A HAS-A Bài tập Phươ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 kế thừa Định nghĩa lại phương thức Quan hệ IS-A HAS-A Bài tập Phươ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  Có 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 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!! Phươ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 dựa lớp có  Lớp sở: lớp dùng để định nghĩa lớp  Lớp kế thừa: lớp định nghĩa từ lớp có  Lớp kế thừa thừa hưởng TẤT CẢ từ lớp sở  O x, y, z A x, y, z a, b, c A x, y, z B x, y, z u, v, w Phương pháp lập trình hướng đối tượng B x, y, z a, b, c Khái niệm kế thừa  Khai báo C++: class :  Loại kế thừa:   public, private, protected Ví dụ: class A : public O { private: // Khai báo thuộc tính A public: // Khai báo phương thức A }; Phương pháp lập trình hướng đối tượng Khái niệm kế thừa  Ví dụ:  Thông tin:     Giáo viên  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:   Công việc:    Phương pháp lập trình hướng đối tượng Họ tên Mức lương Số ngày nghỉ Lớp chủ nhiệm GVCN Giảng dạy Tính lương Sinh hoạt chủ nhiệm 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(); }; Phương pháp lập trình hướng đối tượng Lớp Lớpkế kếthừa thừa Lớp Lớpcơ cơsở sở class GVCN : public GiaoVien { private: char *m_sLopCN; public: GVCN(char *sHoTen, float fMucLuong, int iSoNgayNghi, char *sLopCN); void sinhHoatCN(); }; GVCN thừa hưởng TẤT CẢ thuộc tính phương thức GiaoVien 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(); } Phươ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 kế thừa Định nghĩa lại phương thức Quan hệ IS-A HAS-A Bài tập Phương pháp lập trình hướng đối tượng 10 Nội dung      Khái niệm kế thừa Tầm vực kế thừa Định nghĩa lại phương thức Quan hệ IS-A HAS-A Bài tập Phương pháp lập trình hướng đối tượng 13 Định nghĩa lại phương thức  Kế thừa phần: Không kế thừa “máy móc” tất  Lớp kế thừa thay đổi 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 phương thức lớp sở TRỪ phương thức định nghĩa lại!! Phương pháp lập trình hướng đối tượng 14 Đị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 Phương pháp lập trình hướng đối tượng 15 Đị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; } }; Phương pháp lập trình hướng đối tượng 16 Định nghĩa lại phương thức  Ví dụ: void main() class GVCN : public GiaoVien { { private: GiaoVien gv1(“Minh”, 500000, 5); char *m_sLopCN; gv1.giangDay(); public: float fLuong1 = gv1.tinhLuong(); GVCN(char *sHoTen, float fMucLuong, int iSoNgayNghi, GVCN gv2(“Hanh”, 700000, 3); char *sLopCN); 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 17 Nội dung      Khái niệm kế thừa Tầm vực kế thừa Định nghĩa lại phương thức Quan hệ IS-A HAS-A Bài tập Phương pháp lập trình hướng đối tượng 18 Quan hệ IS-A HAS-A  Quan hệ IS-A:  Lớp A quan hệ IS-A với lớp B    A trường hợp đặc biệt B A loại với B Ví dụ: GVCN GiaoVien đặc biệt  HinhVuong HinhChuNhat đặc biệt  ConMeo ConVat đặc biệt  Phương pháp lập trình hướng đối tượng 19 Quan hệ IS-A 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 phận A Ví dụ: ChiecXe chứa BanhXe  QuyenSach chứa TrangSach  Phương pháp lập trình hướng đối tượng 20 Quan hệ IS-A 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 thuộc tính A   Ví dụ: class ConMeo : public ConVat { }; class ChiecXe { private: BanhXe *m_pBanhXe; }; Phương pháp lập trình hướng đối tượng 21 Tóm tắt  Khái niệm kế thừa: Định nghĩa lớp dựa lớp có  Lớp kế thừa thừa hưởng tất từ lớp sở   Tầm vực kế thừa:   Định nghĩa lại phương thức:   Tầm vực thay đổi tùy theo loại kế thừa Thay đổi phương thức kế thừa từ lớp sở Quan hệ IS-A HAS-A: IS-A: A trường hợp đặc biệt B => A kế thừa B  HAS-A: A bao hàm B => B thuộc tính A  Phương pháp lập trình hướng đối tượng 22 Nội dung      Khái niệm kế thừa Tầm vực kế thừa Định nghĩa lại phương thức Quan hệ IS-A HAS-A Bài tập Phương pháp lập trình hướng đối tượng 23 Bài tập  Bài tập 9.1: Những cặp đối tượng sau có quan hệ IS-A hay HAS-A? Khai báo lớp cho cặp thể quan hệ chúng - Hình vuông / Hình chữ nhật - Đa giác / Cạnh - Giám đốc / Nhân viên - Hình tròn / Hình Ellipse - Máy bay / Động - Câu / Từ - Mỹ phẩm / Hàng hóa - Cây lúa / Cây lương thực - Thư viện / Sách - Phim hoạt hình / Phim ảnh Phương pháp lập trình hướng đối tượng 24 Bài tập  Bài tập 9.2: Cho lớp TaiKhoan: class TaiKhoan { private: float m_fSoDu = 0; public: float baoSoDu() { return m_fSoDu; } void napTien(float fSoTien) { m_fSoDu += fSoTien; } void rutTien(float fSoTien) { if (fSoTien [...]... protected private Phương pháp lập trình hướng đối tượng 12 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 Phương pháp lập trình hướng đối tượng 13 Đị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ầ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 Kế thừa ???: m_iX ???: m_iY ???: m_iZ  Loại kế thừa quyết định!! Phương pháp lập trình hướng đối tượng 11 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 protected private protected... trường hợp đặc biệt của B => A kế thừa B  HAS-A: A bao hàm B => B là thuộc tính của A  Phương pháp lập trình hướng đối tượng 22 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 Phương pháp lập trình hướng đối tượng 23 Bài tập  Bài tập 9. 1: Những cặp đối tượng sau có quan hệ IS-A hay HAS-A? Khai báo lớp cho từng cặp thể hiện quan hệ giữa... *m_pBanhXe; }; Phương pháp lập trình hướng đối tượng 21 Tóm tắt  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 kế thừa thừa hưởng tất cả từ lớp cơ sở   Tầm vực trong kế thừa:   Định nghĩa lại phương thức:   Tầm vực thay đổi tùy theo loại kế thừa Thay đổi những phương thức kế thừa từ lớp cơ sở Quan hệ IS-A và HAS-A: IS-A: A là trường hợp đặc biệt của B => A kế thừa B  HAS-A:... 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 14 Đị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 Phương pháp lập trình hướng đối tượng 15 Định nghĩa lại phương. .. sinhHoatCN(); float fLuong2 = gv2.tinhLuong(); float tinhLuong() } { return GiaoVien::TinhLuong() + 50000; } }; Phương pháp lập trình hướng đối tượng 17 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 Phương pháp lập trình hướng đối tượng 18 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... hoạt hình / Phim ảnh Phương pháp lập trình hướng đối tượng 24 Bài tập  Bài tập 9. 2: Cho lớp TaiKhoan: class TaiKhoan { private: float m_fSoDu = 0; public: float baoSoDu() { return m_fSoDu; } void napTien(float fSoTien) { m_fSoDu += fSoTien; } void rutTien(float fSoTien) { if (fSoTien ... gv2.tinhLuong(); } Phươ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 kế thừa Định nghĩa lại phương thức Quan hệ IS-A HAS-A Bài tập Phương pháp lập trình hướng đối tượng 10... private Phương pháp lập trình hướng đối tượng 12 Nội dung      Khái niệm kế thừa Tầm vực kế thừa Định nghĩa lại phương thức Quan hệ IS-A HAS-A Bài tập Phương pháp lập trình hướng đối tượng. .. } }; Phương pháp lập trình hướng đối tượng 17 Nội dung      Khái niệm kế thừa Tầm vực kế thừa Định nghĩa lại phương thức Quan hệ IS-A HAS-A Bài tập Phương pháp lập trình hướng đối tượng

Ngày đăng: 03/12/2015, 20:37

Từ khóa liên quan

Mục lục

  • Chương 5: Kế thừa

  • Nội dung

  • Slide 3

  • Khái niệm kế thừa

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Tầm vực trong kế thừa

  • Slide 12

  • Slide 13

  • Định nghĩa lại phương thức

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Quan hệ IS-A và HAS-A

  • Slide 20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan