Tài liệu thực hành Lập trình hướng đối tượng - Lab 13: Đa hình

Lab 13  
Đa hình  
Lập trình hướng đối tượng  
1. Hiểu về cơ chế đa hình  
2. Vận dụng cơ chế đa hình để giải quyết vấn đề  
Mục tiêu  
Bộ môn Công nghệ phần mềm – Khoa Công nghệ thông tin  
Lập trình hướng đối tượng  
Đa hình  
1 Hướng dẫn khởi đầu – Bài toán tính lương nhân viên  
Mô tả bài tập  
Trong công ty có 3 loại nhân viên như sau:  
+ Nhân viên sản xuất: trả lương theo số sản phẩm làm ra.  
Giả sử mỗi sản phẩm có giá 5000đ, nhân viên làm ra 120 sản phẩm thì số tiền phải trả là:  
5.000 x 1200 = 6.000.000 đ  
+ Nhân viên công nhật: trả lương theo số ngày làm việc.  
Giả sử mỗi ngày công là 250.000 đ, nhân viên đã làm việc 20 ngày, số tiền lương nhận là:  
250.000 x 20 = 5.000.000 đ  
+ Nhân viên quản lý: trả lương theo lương cơ bản x hệ số  
Giả sử lương cơ bản là 1.400.000 đ, hệ số 3 thì lương của nhân viên quản lí là  
1.400.000 x 3= 4.200.000 đ  
Hãy thiết kế sơ đồ lớp và viết hàm tính lương cho từng nhân viên cụ thể khi đến khi báo  
cáo lương.  
Hướng dẫn cài đặt  
Bước 1: Tạo mới dự án  
- Chọn loại dự án là C++ / Console Application.  
- Đặt tên solution là: Polymorphism. Đặt tên project là SalaryCalc  
- Nếu sử dụng Visual Studio 2017 trở lên cần vô hiệu hóa Precompiled header bằng  
cách nhấn phải vào project chọn Properties. Vào mục C / C++ > All Options, tìm tới tùy  
chọn Precompiled header và chọn Not using precompiled headers.  
2
Lập trình hướng đối tượng  
Đa hình  
Bước 2: Phân tích sơ bộ ban đầu  
Bước 3: Cải tiến sơ đồ lớp  
Ta nhận thấy có thể thiết kế sơ đồ lớp tốt hơn bằng cách vận dụng kế thừa như sau:  
Bước 4: Cài đặt cụ thể các lớp như sau:  
Cài đặt lớp cha Employee, là một nhân viên tổng quát  
3
Lập trình hướng đối tượng  
Đa hình  
Lần lượt cài đặt các lớp con như sau:  
4
Lập trình hướng đối tượng  
Đa hình  
Bước 5: Viết hàm main để kiểm tra cài đặt các lớp  
5
Lập trình hướng đối tượng  
Kết quả như sau:  
Đa hình  
Bước 6: Giải thích ý nghĩa  
Cơ chế đa xạ cho phép gọi đúng những phương thức của đối tượng mà không cần biết  
trước kiểu dữ liệu của đối tượng đó nhờ vào một con trỏ ảo (virtual pointer) bên trong đối  
tượng. Con trỏ này giữ địa chỉ của một bảng ảo (virtual table) trong đó chứa thông tin về  
kiểu dữ liệu và địa chỉ các phương thức tương ứng của đối tượng. Đây được xem là điểm  
then chốt của cơ chế đa xạ.  
6
Lập trình hướng đối tượng  
Đa hình  
2 Bài tập vận dụng  
Yêu cầu  
1. Thực hiện định nghĩa lớp theo thiết kế cho trước vào tập tin .h.  
2. Thực hiện cài đặt lớp trong tập tin .cpp cho lớp tương ứng.  
3. Viết các đoạn mã nguồn kiểm tra việc định nghĩa lớp trong hàm main.  
Danh sách các lớp cần cải tiến cụ thể  
1. Cải tiến bài tập hướng dẫn, thêm vào hàm tính tiền thưởng  
CalcBonus(): int  
Với yêu cầu như sau:  
Nếu nhân viên sản xuất làm hơn 100 sản phẩm: thưởng thêm 500đ cho mỗi sản  
phẩm thêm  
Nếu nhân viên công nhật làm hơn 20 ngày, thưởng thêm 100.000 đ cho mỗi ngày  
làm thêm  
Nhân viên quản lí không thưởng gì.  
2. Cải tiến bài tập hướng dẫn, thêm vào hàm phạt  
CalcPenalty(): int  
Với yêu cầu như sau  
Nếu nhân viên sản xuất làm ít hơn 100 sản phẩm: phạt 600đ cho mỗi sản phẩm  
thiếu chỉ tiêu.  
Nếu nhân viên công nhật làm ít hơn 15 ngày, phạt 150.000 đ cho mỗi ngày thiếu  
chỉ tiêu.  
3
7
Lập trình hướng đối tượng  
Đa hình  
4 Hướng dẫn nộp bài  
Trước khi nộp cần chú ý:  
- Lấy tập tin exe được biên dịch sẵn trong thư mục Debug, copy nó ra thư mục Release  
bên ngoài mã nguồn.  
- Xóa hết tất cả các tập tin trung gian trong quá trình biên dịch bằng cách chọn Build >  
Clean.  
- Chú ý thư mục ẩn .vs rất nặng. Cần hiển thị file ẩn mới thấy và xóa nó đi được.  
Nếu bạn muốn biết cách làm đúng thì cần tự tìm cách build ở chế độ Release và copy  
file exe kết quả ra bên ngoài để nộp mới đúng. Tuy nhiên nếu chưa hiểu ý nghĩa thì cứ  
lấy đại file exe có sẵn đi nộp cũng được (hiện tại đang trong thư mục Debug ứng với chế  
độ biên dịch Debug)  
Tổ chức bài nộp  
+ Thư mục Source: chứa mã nguồn đã được clean  
+ Thư mục Release: chứa tập tin thực thi đã được biên dịch từ mã nguồn  
+ Tập tin readme.txt: chứa thông tin sinh viên, gồm MSSV và họ tên. Ghi chú kèm các  
thông tin giáo viên cần chú ý khi chấm bài.  
Để nộp bài, nén tất cả lại và đặt tên với định dạng MSSV.zip hoặc MSSV.rar và nộp.  
Nếu làm đúng các bước trên file này sẽ có kích thước < 100 KB!  
(Tuy nhiên cũng đừng quá lo lắng nếu nó khác con số trên, miễn < 12 MB để nộp được  
trên moodle là okie nhé!)  
Ngoài lề: Để đảm bảo sau này nhìn vào file nén còn biết ngay nó làm gì, ta nên thêm  
vào một số thông tin theo sau MSSV. Ví dụ: 0712221-Lab13-Polymorphism.zip. Tuy  
nhiên việc này là KHÔNG bắt buộc nhé.  
-- HẾT --  
8
docx 8 trang myanh 28200 Free
Bạn đang xem tài liệu "Tài liệu thực hành Lập trình hướng đối tượng - Lab 13: Đa hình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docxtai_lieu_thuc_hanh_lap_trinh_huong_doi_tuong_lab_13_da_hinh.docx