1. Trang chủ
  2. » Tất cả

lập trình hướng đối tượng,nguyễn khắc huy,dhkhtnhcm

23 2 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 571,14 KB

Nội dung

lập trình hướng đối tượng,nguyễn khắc huy,dhkhtnhcm 1 Nguyễn Khắc Huy Ba vấn đề con trỏ trong kế thừa BMCNPM – ĐHKHTN TPHCM 09/2015 CuuDuongThanCong com https //fb com/tailieudientucntt http //cuuduon[.]

Ba vấn đề trỏ kế thừa Nguyễn Khắc Huy CuuDuongThanCong.com BMCNPM – ĐHKHTN TPHCM 09/2015 https://fb.com/tailieudientucntt Nội dung □ Hàm dựng kế thừa □ Hàm hủy kế thừa □ Ba vấn đề trỏ kế thừa □ Bài tập CuuDuongThanCong.com https://fb.com/tailieudientucntt Tính đóng gói □ Trình tự tạo lập đối tượng kế thừa: Nhà xây từ móng đến mái Khái niệm định nghĩa từ thấp đến cao Đối tượng tạo lập từ lõi đến vỏ Thành phần kế thừa từ lớp sở tạo trước Đối tượng kế thừa Đối tượng sở Thành phần sở Thành phần Xây móng đến mái CuuDuongThanCong.com Định nghĩa thấp đến cao Tạo lập từ lõi đến vỏ https://fb.com/tailieudientucntt Hàm dựng kế thừa □ Thứ tự gọi hàm dựng đối tượng kế thừa: Hàm dựng lớp sở gọi trước  Phần lõi sở tạo trước Hàm dựng lớp kế thừa gọi sau  Phần vỏ tạo sau Lớp kế thừa định hàm dựng tạo phần lõi Không định => hàm dựng mặc định gọi CuuDuongThanCong.com https://fb.com/tailieudientucntt Hàm dựng kế thừa □ Ví dụ: class GiaoVien { private: char *m_strHoTen; float m_fMucLuong; int m_iSoNgayNghi; public: GiaoVien(); GiaoVien(char *strHoTen, float fMucLuong, int iSoNgayNghi); }; CuuDuongThanCong.com class GVCN : public GiaoVien { private: char *m_strLopCN; public: GVCN() GVCN(char *strLopCN); GVCN(char *strHoTen, float fMucLuong, int iSoNgayNghi, char *strLopCN); }; https://fb.com/tailieudientucntt Hàm dựng kế thừa □ Ví dụ: GVCN::GVCN(char *strLopCN) : GiaoVien(“Minh”, 500000, 0) { m_strLopCN = new char[strlen(strLopCN) + 1]; strcpy(m_strLopCN, strLopCN); } GVCN::GVCN(char *strHoTen, float fMucLuong, int iSoNgayNghi, char *strLopCN) : GiaoVien(strHoTen, fMucLuong, iSoNgayNghi) { m_strLopCN = new char[strlen(strLopCN) + 1]; strcpy(m_strLopCN, strLopCN); } GVCN::GVCN() GiaoVien() gọi trước { } CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung □ Hàm dựng kế thừa □ Hàm hủy kế thừa □ Ba vấn đề trỏ kế thừa □ Bài tập CuuDuongThanCong.com https://fb.com/tailieudientucntt Hàm hủy kế thừa □ Trình tự hủy đối tượng kế thừa: Ngược lại với trình tự tạo lập Hàm hủy lớp kế thừa gọi trước  Phần vỏ bên hủy trước Hàm hủy lớp kế sở gọi sau  Phần lõi sở hủy sau Mỗi lớp có hàm hủy Đối tượng kế thừa  Lớp kế thừa không cần Đối tượng sở định hàm hủy sở Thành phần sở Thành phần Hủy từ vỏ đến lõi CuuDuongThanCong.com https://fb.com/tailieudientucntt Hàm hủy kế thừa □ Ví dụ: GiaoVien::~GiaoVien() { delete m_strHoTen; } GVCN::~GVCN() { delete m_strLopCN; } CuuDuongThanCong.com GiaoVien() gọi sau ~GVCN() gọi trước https://fb.com/tailieudientucntt Nội dung □ Hàm dựng kế thừa □ Hàm hủy kế thừa □ Ba vấn đề trỏ kế thừa □ Bài tập 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ba vấn đề trỏ kế thừa □ Lớp có thuộc tính trỏ?  Phải thêm vào lớp “ba ông lớn”: Hàm hủy Hàm dựng chép Tốn tử gán □ Lớp kế thừa có thuộc tính trỏ? 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt Ba vấn đề trỏ kế thừa □ Ví dụ: class GiaoVien { private: char *m_strHoTen; float m_fMucLuong; int m_iSoNgayNghi; public: GiaoVien(char *strHoTen, float fMucLuong, int iSoNgayNghi); }; 12 CuuDuongThanCong.com class GVCN : public GiaoVien { private: char *m_strLopCN; public: GVCN(char *strHoTen, float fMucLuong, int iSoNgayNghi, char *strLopCN); }; https://fb.com/tailieudientucntt Ba vấn đề trỏ kế thừa □ Dr Guru khuyên: (Luật “ba ông lớn” kế thừa) Lớp kế thừa có thuộc tính trỏ, phải kèm theo: – Hàm hủy: thu hồi nhớ phần vỏ – Hàm dựng chép: chép nhớ phần vỏ – Toán tử gán: chép nhớ phần vỏ Kích hoạt “ba ông lớn” lớp sở: – Hàm hủy: tự động!! – Hàm dựng chép: định hàm dựng chép lớp sở – Toán tử gán: thực toán tử gán lớp sở trước 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt Tóm tắt □ Hàm dựng kế thừa: Đối tượng kế thừa tạo lập từ lõi đến vỏ Hàm dựng lớp sở gọi trước, tạo phần lõi Hàm dựng lớp kế thừa gọi sau, tạo phần vỏ Lớp kế thừa định hàm dựng sở □ Hàm hủy kế thừa: Đối tượng kế thừa hủy ngược lại với tạo lập Hàm hủy lớp kế thừa gọi trước, hủy phần vỏ Hàm hủy lớp sở gọi sau, hủy phần lõi 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt Tóm tắt (tt) □ Ba vấn đề trỏ kế thừa: Lớp kế thừa có thuộc tính trỏ: – Xây dựng “ba ông lớn” cho phần vỏ – Kích hoạt “ba ơng lớn” phần lõi 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung □ Hàm dựng kế thừa □ Hàm hủy kế thừa □ Ba vấn đề trỏ kế thừa □ Bài tập 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập □ Bài tập 8.1 class A Cho biết thứ tự gọi hàm dựng với: { public: a) void main() { C obj(1, 2, 3); } A(int iX) { } b) void main() { C obj(4); } }; c) void main() { C obj; } class B: public A { public: B(): A(0) { } B(int iX, int iY): A(iX) { } }; class C: public B { public: C() { } C(int iZ) { } C(int iX, int iY, int iZ): B(iX, iY) { } 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập □ Bài tập 8.2 class GiaoVien { private: char *m_strHoTen; float m_fMucLuong; int m_iSoNgayNghi; public: float TinhLuong() { return m_fMucLuong – m_iSoNgayNghi * 10000; } }; class GVCN: public GiaoVien { private: 18 char *m_strLopCN; CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập □ Bài tập 8.2 (tt): Xây dựng hàm dựng cho lớp GiaoVien, khởi tạo với: - Họ tên cho trước, mức lương 500000, số ngày nghỉ - Họ tên, mức lương cho trước, số nghày nghỉ - Họ tên, mức lương, số ngày nghỉ cho trước Xây dựng hàm dựng cho lớp GVCN, khởi tạo với: - Họ tên, lớp chủ nhiệm cho trước, mức lương 500000, số ngày nghỉ - Họ tên, mức lương, lớp chủ nhiệm cho trước, số ngày nghỉ - Họ tên, mức lương, số ngày nghỉ, lớp chủ nhiệm cho trước Giải vấn đề trỏ cho hai lớp đối tượng 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập □ Bài tập 8.3 class X { }; class Y: public X { public: Y(int i) { } Y(const Y &obj) { } }; class Z: public Y { public: Z(int i): Y(i++) { } 20}; CuuDuongThanCong.com Cho biết thứ tự gọi hàm dựng: a) void main() { Z obj(5); } b) void main() { Y obj1(6); Y obj2(obj1); } c) void main() { Z obj1(7); Z obj2(obj1); } https://fb.com/tailieudientucntt ... Trình tự tạo lập đối tượng kế thừa: Nhà xây từ móng đến mái Khái niệm định nghĩa từ thấp đến cao ? ?Đối tượng tạo lập từ lõi đến vỏ Thành phần kế thừa từ lớp sở tạo trước Đối tượng kế thừa Đối. .. □ Trình tự hủy đối tượng kế thừa: Ngược lại với trình tự tạo lập Hàm hủy lớp kế thừa gọi trước  Phần vỏ bên hủy trước Hàm hủy lớp kế sở gọi sau  Phần lõi sở hủy sau Mỗi lớp có hàm hủy Đối. .. kế thừa: ? ?Đối tượng kế thừa tạo lập từ lõi đến vỏ Hàm dựng lớp sở gọi trước, tạo phần lõi Hàm dựng lớp kế thừa gọi sau, tạo phần vỏ Lớp kế thừa định hàm dựng sở □ Hàm hủy kế thừa: ? ?Đối tượng

Ngày đăng: 26/11/2022, 16:57

w