Bài giảng Lập trình hướng đối tượng - Chương 4: Tương ứng bội - Phạm Minh Hoàn
ĐỊNH NGHĨA LỚP CƠ SỞ ẢO
Chú ý:
Việc chỉ định A là ảo trong các lớp B và C nghĩa là A sẽ chỉ xuất hiện một lần trong lớp D. Khai báo này không ảnh hưởng đến các lớp B và C.
Từ khóa virtual có thể đặt trước hoặc sau từ khóa public, private, protected.
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 4: Tương ứng bội - Phạm Minh Hoàn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Lập trình hướng đối tượng - Chương 4: Tương ứng bội - Phạm Minh Hoàn
Phạm Minh Hoàn - NEU CHƯƠNG 4: TƯƠNG ỨNG BỘI Phạm Minh Hoàn Bộ môn công nghệ thông tin – Đại học Kinh tế Quốc dân Email: hoanpm@neu.edu.vn Phạm Minh Hoàn - NEU NỘI DUNG CHƯƠNG TRÌNH Chương này trình bày những vấn đề sau đây: Hàm tĩnh, hàm ảo và tương ứng bội. Lớp cơ sở ảo. Phạm Minh Hoàn - NEU BÀI TẬP Nhân viên trong một cơ quan được lĩnh lương theo các dạng khác nhau. Dạng người lao động hưởng lương từ ngân sách Nhà nước gọi là cán bộ, công chức (dạng biên chế). Dạng người lao động lĩnh lương từ ngân sách của cơ quan gọi là người làm hợp đồng. Như vậy hệ thống có hai đối tượng: biên chế và hợp đồng. Hai loại đối tượng này có đặc tính chung là viên chức làm việc cho cơ quan. Từ đây có thể tạo nên lớp cơ sở để quản lý một viên chức (lớp Nguoi ) bao gồm mã số, họ tên, lương. Hai lớp kế thừa từ lớp cơ sở trên: Lớp Bienche gồm các thuộc tính: hệ số lương, tiền phụ cấp chức vụ. Lớp Hopdong gồm các thuộc tính: tiền công lao động, số ngày làm việc trong tháng, hệ số vượt giờ. Hãy thiết kế các lớp trên và viết chương trình minh họa. Phạm Minh Hoàn - NEU LỚP CƠ SỞ ẢO Xét sơ đồ kế thừa: Trong đó: lớp A được kế thừa bởi hai lớp B và C. Lớp D kế thừa trực tiếp cả hai lớp B và C. A B C D Phạm Minh Hoàn - NEU LỚP CƠ SỞ ẢO Như vậy lớp A được lớp D kế thừa hai lần : Lần thứ nhất nó được kế thừa thông qua lớp B. Lần thứ hai được kế thừa thông qua lớp C. Có 2 bản sao của lớp A trong lớp D. Để giải quyết tính không rõ ràng này, C++ có một cơ chế mà nhờ đó chỉ có một bản sao của lớp A ở trong lớp D: đó là sử dụng lớp cơ sở ảo . Phạm Minh Hoàn - NEU ĐỊNH NGHĨA LỚP CƠ SỞ ẢO class A { ...}; class B : virtual public A { ...}; class C : virtual public A { ...}; class D : public B, public C { ...}; Phạm Minh Hoàn - NEU ĐỊNH NGHĨA LỚP CƠ SỞ ẢO Chú ý: Việc chỉ định A là ảo trong các lớp B và C nghĩa là A sẽ chỉ xuất hiện một lần trong lớp D. Khai báo này không ảnh hưởng đến các lớp B và C. Từ khóa virtual có thể đặt trước hoặc sau từ khóa public, private, protected . Phạm Minh Hoàn - NEU ĐỊNH NGHĨA LỚP CƠ SỞ ẢO Ví dụ: #include #include #include using namespace std; class A { float x,y; public: void set(float x1, float y1) { x = x1; y = y1;} float getx() { return x; } float gety() { return y; } }; Phạm Minh Hoàn - NEU ĐỊNH NGHĨA LỚP CƠ SỞ ẢO Ví dụ: class B : virtual public A { }; class C : virtual public A { }; class D : public B, public C { }; Phạm Minh Hoàn - NEU ĐỊNH NGHĨA LỚP CƠ SỞ ẢO Ví dụ: main() { D d; cout<<endl<<"d.B::set(2,3)\n"; d.B::set(2,3); cout<<endl<<"d.C::getx() = "; cout<<d.C::getx(); cout<<endl<<"d.B::getx() = "; cout<<d.B::getx(); cout<<endl<<"d.C::gety() = "; cout<<d.C::gety(); cout<<endl<<"d.B::gety() = "; cout<<d.B::gety(); Phạm Minh Hoàn - NEU ĐỊNH NGHĨA LỚP CƠ SỞ ẢO Ví dụ: cout<<endl<<"d.C::set(2,3)"; d.C::set(2,3); cout<<endl<<"d.C::getx() = "; cout<<d.C::getx(); cout<<endl<<"d.B::getx() = "; cout<<d.B::getx(); cout<<endl<<"d.C::gety() = "; cout<<d.C::gety(); cout<<endl<<"d.B::gety() = "; cout<<d.B::gety(); getch(); } Phạm Minh Hoàn - NEU HÀM TẠO, HÀM HỦY LỚP CƠ SỞ ẢO Định nghĩa hàm tạo: Hàm tạo lớp cơ sở. Hàm tạo của lớp dẫn xuất. Thông tin được chuyển từ hàm tạo của lớp dẫn xuất sang hàm tạo của lớp cơ sở. Thứ tự gọi hàm tạo: Hàm tạo của một lớp ảo luôn luôn được gọi trước các hàm tạo khác. Phạm Minh Hoàn - NEU BÀI TẬP Nhân viên trong một cơ quan được lĩnh lương theo các dạng khác nhau. Dạng người lao động hưởng lương từ ngân sách Nhà nước gọi là cán bộ, công chức (dạng biên chế). Dạng người lao động lĩnh lương từ ngân sách của cơ quan gọi là người làm hợp đồng. Như vậy hệ thống có hai đối tượng: biên chế và hợp đồng. Hai loại đối tượng này có đặc tính chung là viên chức làm việc cho cơ quan. Từ đây có thể tạo nên lớp cơ sở để quản lý một viên chức (lớp Nguoi ) bao gồm mã số, họ tên, lương. Hai lớp kế thừa từ lớp cơ sở trên: Lớp Bienche gồm các thuộc tính: hệ số lương, tiền phụ cấp chức vụ. Lớp Hopdong gồm các thuộc tính: tiền công lao động, số ngày làm việc trong tháng, hệ số vượt giờ.
File đính kèm:
- bai_giang_lap_trinh_huong_doi_tuong_chuong_4_tuong_ung_boi_p.ppt