1. Trang chủ
  2. » Công Nghệ Thông Tin

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

55 17 0

Đ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

Nội dung

Bài giảng “Phương pháp lập trình hướng đối tượng – Tuần 7: Hàm dựng, hàm hủy - Ba vấn đề con trỏ trong kế thừa” cung cấp cho người học các kiến thức: Quan hệ giữa các đối tượng, con trỏ đối tượng, hàm ảo. liên kết tĩnh – liên kết động, đa xạ. Mời các bạn cùng tham khảo nội dung chi tiết.

Tuần 07: Hàm dựng, Hàm hủy, Ba vấn đề trỏ kế thừa QUAN HỆ GIỮA CÁC ĐỐI TƯỢNG Liên hệ lớp đối tượng (chương 6) Quan hệ bao hàm (HAS-A) Bao hàm phụ thuộc (composition) Bao hàm độc lập (aggregation) Tổng quát hóa (IS-A) Friend Quan hệ phụ thuộc 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 Hàm dựng kế thừa 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 Tạo lập từ lõi đến vỏ Hàm dựng kế thừa Khi đối tượng thuộc lớp gọi: Hàm dựng lớp cha tự động gọi thực trước Sau đó, hàm dựng lớp thực Trong hàm dựng lớp con, định hàm dựng lớp cha gọi thực Nếu không, hàm dựng mặc định lớp cha gọi GVCN gv(); //Hàm dựng GiaoVien() gọi trước //Sau tới hàm GVCN() Ví dụ hàm dựng kế thừa class GiaoVien { private: string mHoTen; float mMucLuong; public: GiaoVien(); GiaoVien(string sHoTen,float fMucLuong); }; class GVCN : public GiaoVien { private: string mLopCN; public: GVCN(); GVCN(string ten, float luong, string lopcn); }; Ví dụ hàm dựng kế thừa GiaoVien::GiaoVien() //1 { mHoTen = “”; mMucLuong = 0; } GiaoVien::GiaoVien(string ten, float luong) //2 { mHoTen = ten; mMucLuong = luong; } GVCN gv1; //Hàm GiaoVien() gọi trước GVCN::GVCN() //3 { mLopCN = “”; } GVCN::GVCN(string ten, float luong, string lopcn): GiaoVien(ten, luong) //4 { mLopCN = lopcn; } GVCN gv2(“Nguyen A”, 50, “11A”); //Hàm dựng GiaoVien(“Nguyen A”, 50,) gọi trước Hàm dựng lớp dẫn xuất Lưu ý: Hàm dựng lớp dẫn xuất phép định hàm dựng lớp sở trực tiếp thực khơng thể can thiệp đến lớp sở kế thừa xa A B C X 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 Liên kết động (dynamic binding) Khi dùng hàm ảo, trình biên dịch đảm bảo việc sử dụng hàm thành viên tương ứng với đối tượng sử dụng Ví dụ print() hàm ảo: int main() { A a; B b; C c; A *pc, *pb; pc = &c; pb = &b; pc->print(); pb->print(); } A virtual void print(); B void print(); // print() C // print() B C void print(); Lưu ý: hàm ảo & liên kết động Ngoài việc sử dụng từ khóa virtual, liên kết động xảy đối tượng xử lý thông qua biến trỏ tham chiếu Riêng lớp cha, hàm ảo sử dụng hàm bình thường Nếu lớp con, hàm ảo lớp cha khơng định nghĩa lại trình biên dịch chọn hàm tương ứng mà định nghĩa gần dây chuyền kế thừa Tính chất đa xạ (polymorphism) Thơng qua giao tiếp, có nhiều cách cài đặt khác cho hàm Hành động tương ứng đối tượng gọi thực DongVat Cho Meo Bo Ga Ví dụ đa xạ Hàm dựng ảo?; Hàm hủy ảo? KHƠNG có hàm dựng ảo Hàm hủy NÊN viết hàm ảo Vì lớp kế thừa hàm hủy sử dụng theo liên kết tĩnh dễ dẫn đến vấn đề xử lý nhớ int main() { A *pc = new C(); A *pb = new B(); delete pc; delete pb; hàm hủy B C } gọi tương ứng A virtual ~A(); B virtual ~B(); C virtual ~C(); Hàm ảo (pure virtual) Xét lại DongVat, giả sử ta có hàm ảo: virtual void Keu(); // thể tiếng kêu vật DongVat Cho Meo Bo Ga Hàm ảo (tt) Khi int main() { DongVat a; //không thực tế a.keu(); //không có ý nghĩa } keu() khai báo lại sau: virtual void keu() = 0; Hàm ảo & lớp trừu tượng virtual void keu() = 0; Hàm keu() trở thành hàm ảo Khi lớp chứa hàm ảo gọi lớp trừu tượng (abstract class) đối tượng không khởi tạo từ lớp đó: DongVat a; //báo lỗi biên dịch Hàm ảo BÀI TẬP Bài tập 11.1 Xây dựng lớp trường học cho phép quản lý danh sách giáo viên (sử dụng đa xạ) Nhập, xuất Tính tổng lương, tìm giáo viên có lương cao class GiaoVien { private: string mHoTen; float mMucLuong; int mSoNgayNghi; public: float TinhLuong() { return mMucLuong – mSoNgayNghi * 10000; } }; class GVCN: public GiaoVien { private: string mLopCN; }; Bài tập 11.2 Sử dụng đa xạ làm tập sau Công ty ABC cần xây dựng ứng dụng quản lý nhân tính lương cho nhân viên cơng ty sau: Quản lý thông tin nhân viên (mã, họ tên, ngày sinh, địa chỉ) Tính lương cho nhân viên Hiện cơng ty có loại nhân viên cách tính lương sau: Nhân viên sản xuất Nhân viên công nhật Nhân viên quản lý : số sản phẩm * 20.000 đ : số ngày * 50.000 đ : hệ số lương * lương Hãy viết chương trình quản lý tính tổng lương nhân viên (có thiết kế vẽ sơ đồ lớp) Bài tập 11.3 Một nơng trại chăn ni có loại gia súc: bò, cừu, dê Mỗi loại gia súc sinh con, cho sữa phát tiếng kêu riêng chúng Khi đói, gia súc phát tiếng kêu để đòi ăn Sau thời gian chăn nuôi, người chủ nông trại muốn thống kê xem nơng trại có gia súc loại, tổng số lit sữa mà tất gia súc ông cho Áp dụng kế thừa đa hình, xây dựng chương trình cho phép người chủ nông trại nhập vào số lượng gia súc ban đầu loại Một hôm người chủ nông trại vắng, tất gia súc nông trại đói Hãy cho biết tiếng kêu nghe nơng trại Bài tập 11.3 (tt) Chương trình đưa thống kê thông tin người chủ mong muốn (nêu trên) sau lứa sinh lược cho sữa tất gia súc Biết rằng: Tất gia súc loại sinh Số lượng sinh gia súc ngẫu nhiên Tất gia súc loại cho sữa Số lit sữa gia súc cho ngẫu nhiên giới hạn sau: Bò: – 20 lit Cừu: – lit Dê: – 10 lit Thao khảo Slide PPLTHDT Thầy Nguyễn Minh Huy Thầy Đinh Bá Tiến ... thừa Ba vấn đề trỏ kế thừa Bài tập Hàm dựng kế thừa 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... Liên kết tĩnh – liên kết động Đa xạ Con trỏ tới đối tượng Con trỏ đối tượng * SinhVien *sv; GiaoVien *gv; Dùng từ khóa new để cấp vùng nhớ cho đối tượng trỏ SinhVien... viết chương trình quản lý tính tổng lương nhân viên (có thiết kế vẽ sơ đồ lớp) Thao khảo Slide PPLTHDT Thầy Nguyễn Minh Huy Thầy Đinh Bá Tiến Tuần 07: Hàm ảo – Đa xạ Nội dung Con trỏ đối tượng

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN