CHƢƠNG 3 KẾ THỪA
2. THIẾT KẾ VÀ CÀI ĐẶT LỚP TRONG MỐI QUAN HỆ KẾ THỪA
2.8. Lớp cơ sở ảo (virtual base class)
Để giải quyết sự nhập nhằng trong đa kế thừa, trong C++ chúng ta sử dụng kế thừa ảo. Khi đĩ trình biên dịch sẽ kết hợp các thành phần (gây ra sự nhập nhằng) tạo thành một thành phần duy nhất.
Nhƣ ví dụ hình 3-6 thì thiết kế lại nhƣ sau:
Lƣu ý khi thiết kế quan hệ kế thừa:
Một số lập trình viên lợi dụng quan hệ kế thừa một cách vật lý: khơng để ý đến việc cài đặt quan hệ đặc biệt hĩa mà lại dùng kế thừa cho mục đích dùng lại một vài thuộc tính dữ liệu nào đĩ. Việc lạm dụng này sẽ làm cho chƣơng trình khĩ bảo trì và tiến hĩa, đồng thời nảy sinh rất nhiều vấn đề khĩ khăn khi chƣơng trình ngày càng phát triển để đáp ứng cho các yêu cầu mở rộng.
TỔNG KẾT CHƢƠNG
- Mối quan hệ tổng quát hĩa, đặc biệt hĩa đƣợc cài đặt thành quan hệ kế thừa trong lập trình hƣớng đối tƣợng.
- Trong quan hệ kế thừa sẽ xuất hiện khái niệm lớp cơ sở (lớp con) và lớp dẫn xuất (lớp cha hay lớp kế thừa). Trong đĩ lớp dẫn xuất sẽ kế
Tài liệu giảng dạy Lập Trình Hƣớng Đối Tƣợng 83 thừa từ lớp cơ sở, khi đĩ trong lớp dẫn xuất đƣợc thừa hƣởng tất cả các thành phần của lớp cơ sở. Tuy nhiên trong lớp dẫn xuất khơng cĩ quyền truy cập đến thuộc tính private từ lớp cơ sở, mà chỉ cĩ thể truy cập đƣợc thành phần protecte và public của lớp cơ sở.
- Nếu tại lớp dẫn xuất khơng muốn sử dụng phƣơng thức đƣợc kế thừa từ lớp cơ sở thì chúng ta cĩ thể định nghĩa lại phƣơng thức ở lớp dẫn xuất.
CÂU HỎI VÀ BÀI TẬP
1. Lấy ví dụ về mối quan hệ tổng quát hĩa và đặc biệt hĩa giữa hai lớp đối tƣợng?
2. Giả sử lớp A kế thừa từ lớp B, vậy khi đĩ lớp A sẽ thừa hƣởng những gì của lớp B?
3. Nêu ý nghĩa của các tầm vực trong kế thừa?
4. Nêu cú pháp để định nghĩa phƣơng thức khởi tạo cho lớp dẫn xuất? 5. Đa kế thừa là gì? Kế thừa ảo là gì?
6. Phân tích và cài đặt bài tốn sau:
Một cửa hàng bán thực phẩm khơ gồm hai loại: loại đĩng hộp và khơng đĩng hộp, để quản lý ngƣời ta xây dựng lớp THUCPHAM gồm các thơng tin: Tên thực phẩm, giá cả. Từ đĩ dẫn xuất ra 2 lớp TPHOP (thực phẩm hộp) cĩ thêm thơng tin số hộp và TPKHOP (thực phẩm khơng hộp) cĩ thêm thơng tin khối
lƣợng.
Cài đặt 3 lớp trên với các phƣơng thức nhập, xuất dữ liệu. Viết chƣơng trình chính cho phép thực hiện việc nhập và xuất 2 thực phẩm thuộc 2 lớp TPHOP và TPKHOP.
7. Một cơng ty quản lý tiền lƣơng nhân viên, mỗi nhân viên đều cĩ m số, họ tên, năm sinh. Lƣơng của mỗi loại nhân viên đƣợc tính khác nhau.
- Dạng ngƣời lao động lãnh lƣơng từ ngân sách Nhà nƣớc đƣợc gọi là cán bộ, cơng chức (dạng biên chế).
- Dạng ngƣời lao động nhận lƣơng từ ngân sách cơ quan đƣợc gọi là nhân viên hợp đồng.
Nhƣ vậy, hệ thống quản lý cĩ hai loại nhân viên là nhân viên biên chế (NVBC) và nhân viên hợp đồng (NVHD)
NVBC: gồm các đối tƣợng là cán bộ, cơng chức cĩ các thuộc tính: lƣơng căn bản, hệ số lƣơng, tiền phụ cấp chức vụ.
Tài liệu giảng dạy Lập Trình Hƣớng Đối Tƣợng 84 Lƣơng = lƣơng căn * hệ số lƣơng * tiền phụ cấp
NVHD: gồm các đối tƣợng làm hợp đồng gồm các thuộc tính: tiền cơng lao động một giờ, số giờ làm việc trong tháng.
Lƣơng =Tiền cơng lao động một giờ * số giờ làm việc trong tháng Xây dựng các phƣơng thức nhập, xuất thơng tin và phƣơng thức tính tiền lƣơng của mỗi loại nhân viên
Viết chƣơng trình tạo ra các nhân viên, sau đĩ xuất ra lƣơng của mỗi nhân viên.
Tài liệu giảng dạy Lập Trình Hƣớng Đối Tƣợng 85