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.

 

ppt 13 trang yennguyen 2360
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

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:

  • pptbai_giang_lap_trinh_huong_doi_tuong_chuong_4_tuong_ung_boi_p.ppt