Bài giảng Phương pháp lập trình hướng đối tượng: Tuần 6 – Phạm Tú San

32 25 0
Bài giảng Phương pháp lập trình hướng đối tượng: Tuần 6 – Phạm Tú San

Đ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

Bài giảng Phương pháp lập trình hướng đối tượng – Tuần 6: Kế thừa” cung cấp cho người học các kiến thức: 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 áp dụng. Mời các bạn cùng tham khảo nội dung chi tiết.

Tuần 06: Kế thừa 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 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!! 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 B x, y, z a, b, c Ví dụ kế thừa Thơng tin: Họ tên Mức lương Số ngày nghỉ Công việc: Giáo viên 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: GVCN Giảng dạy Tính lương Sinh hoạt chủ nhiệm GiaoVien Ho Ten Muc Luong SoNgayNghi GVCN Lop CN 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 }; Khái niệm kế thừa Ví dụ: class GiaoVien { private: string mHoTen; float mMucLuong; int mSoNgayNghi; public: GiaoVien(string HoTen, float fMucLuong, int iSoNgayNghi); void giangDay(); float tinhLuong(); }; Lớp kế thừa Lớp sở class GVCN : public GiaoVien { private: string mLopCN; public: GVCN(string HoTen, float fMucLuong, int iSoNgayNghi, string 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, “11A”); gv2.giangDay(); gv2.sinhHoatCN(); float fLuong2 = gv2.tinhLuong(); } Một số lưu ý kế thừa A B Các thành phần thuộc tính hành động public A thành phần B Các thành phần private A phần B truy xuất qua hàm public hay protected A 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 10 Ví dụ - định nghĩa lại phương thức (tt) class GVCN : public GiaoVien { private: void main() string mLopCN; { GiaoVien gv1(“Minh”, 500000, 5); public: gv1.giangDay(); GVCN(string sTen, float fLuong, float fLuong1 = gv1.tinhLuong(); int iNgayNghi, string sLopCN); GVCN gv2(“Hanh”, 700000, 3); void sinhHoatCN(); gv2.giangDay(); float fLuong2 = gv2.tinhLuong(); float tinhLuong() } { return GiaoVien::TinhLuong() + 50000; } }; 18 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 19 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 20 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 21 Quan hệ IS-A HAS-A 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 *mBanhXe; }; 22 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: Tầm vực thay đổi tùy theo loại kế thừa Định nghĩa lại phương thức: 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 23 SƠ ĐỒ LỚP Sơ đồ lớp – quan hệ kế thừa chứa class ConMeo : public ConVat { }; class ChiecXe { private: BanhXe *mBanhXe; }; ConVat ChiecXe ConMeo BanhXe Sơ đồ lớp mức chi tiết GiaoVien - mHoTen: string - mMucLuong: float - mSoNgayNghi: int + GiangDay(): void + TinhLuong(): float + Nhap(): void + Xuat(): void GVCN - mLopChuNhiem: string + SinhHoatChuNhiem(): void + TinhLuong(): float + Nhap(): void + Xuat(): void 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? Vẽ sơ đồ lớp sau khai báo lớp cho cặp thể quan hệ chúng - Hình vng / 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 28 Bài tập 9.2 Cho lớp TaiKhoan: class TaiKhoan { private: float mSoDu = 0; public: float baoSoDu() { return mSoDu; } void napTien(float fSoTien) { mSoDu += fSoTien; } void rutTien(float fSoTien) { if (fSoTien A kế thừa B HAS-A: A bao hàm B => B thuộc tính A 23 SƠ ĐỒ LỚP Sơ đồ lớp – quan

Ngày đăng: 03/11/2020, 05:39

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

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

Tài liệu liên quan