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
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.
13 trang |
Chia sẻ: huongthu9 | Lượt xem: 482 | Lượt tải: 0
Bạn đang xem 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, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Phạm Minh Hoàn - NEUCHƯƠNG 4: TƯƠNG ỨNG BỘIPhạm Minh HoànBộ môn công nghệ thông tin – Đại học Kinh tế Quốc dânEmail: hoanpm@neu.edu.vn Phạm Minh Hoàn - NEUNỘI DUNG CHƯƠNG TRÌNHChươ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 - NEUBÀI TẬPNhâ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 - NEULỚP CƠ SỞ ẢOXé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.ABCDPhạm Minh Hoàn - NEULỚP CƠ SỞ ẢONhư 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Ở ẢOclass 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Ở ẢOChú ý: 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Ở ẢOVí 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Ở ẢOVí 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Ở ẢOVí 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Ở ẢOVí 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 - NEUHÀ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 - NEUBÀI TẬPNhâ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ờ.
Các file đính kèm theo tài liệu này:
- bai_giang_lap_trinh_huong_doi_tuong_chuong_4_tuong_ung_boi_p.ppt