Lập Trình Hướng Đối Tượng C#
Ngày Thi: 13/3/2023
Thời gian 21:00:00 ngày 13/3/2023 đến 21:59:59 ngày 14/3/2023
*** Điểm trừ : Bài làm giống nhau ***
Employee Vs Supervisor
Xây dựng các class như mộ hình UML như hình sau
Dựa vào mô hình UML ở trên hãy cài đặt Interface tương ứng và các class được mô tả cụ thể bên dưới. Học viên có thể tạo thêm các interface, abstract class hoặc class phù hợp để có thể giảm bớt số lượng code. Những phương thức giống nhau chỉ mô tả trong 1 class đầu tiên, các lớp sau nếu không mô tả lại thì sẽ tương tự nhau
-
Tạo lớp SalariedEmployee bao gồm các phương thức như sau
- Phương thức GetAmountEarned trả về tổng số tiền kiếm được của nhân viên (bằng salary + bonus)
- Phương thức AjustPay(double percentage) tăng hoặc giảm mức lương của nhân viên theo tỉ lệ phần trăm( ví dụ, một nhân viên có thu nhập là $50,000 với 10% điều chỉnh thì nhân viên đó có mức lương là $55.000).
- Phương thức ToString(): trả về 1 chuỗi theo định dạng "number: last name, first name, Salaried Employee".
- Phương thức Equals(): Hai nhân viên là bằng nhau nếu cả (names) và (number) bằng nhau.
- Phương thức CompareToByName(): So sánh tên của nhân viên này với tên của tham số. Trả về giá trị âm nếu tên của nhân viên này đứng trước tên của tham số theo thứ tự bảng chữ cái (lastName, sau đó firstName), trả về 0 nếu nhân viên này có cùng tên với tham số và trả về giá trị dương nếu tên của nhân viên này xuất hiện sau tên của tham số theo thứ tự bảng chữ cái.
- Phương thức CompareToByEarning(): So sánh tổng số tiền kiếm được của nhân viên này với tổng số tiền của tham số. Trả về giá trị âm nếu nhân viên này kiếm được ít tiền hơn, trả về 0 nếu nhân viên này kiếm được số tiền bằng với tham số và trả về giá trị dương nếu nhân viên này kiếm được nhiều tiền hơn tham số.
- Phương thức SetSupervisor(): Người giám sát phải là 1 trong 3 kiểu supervisor được liệt kê ở dưới
-
Tạo lớp HourlyEmployee
- Phương thức GetAmountEarned() trả về tổng số thu nhập của nhân viên (bằng hourlyRate * hoursWorked + bonus)
- Phương thức AdjustPay(double percentage): tăng (hoặc giảm) hourlyRate của nhân viên theo tỉ lệ phần trăm
- Phương thức ToString(): Trả về 1 chuỗi theo định dạng: "number: last name, first name, Hourly Employee"
-
Tạo class SalesEmployee
- Phương thức GetAmountEarned(): trả về tổng số tiền kiếm được của nhân viên (bằng salary + commission * numSales + bonus)
- Phương thức AdjustPay(double percentage): tăng (hoặc giảm) commission của nhân viên theo tỉ lệ phần trăm
- Phương thức ToString(): trả về chuỗi theo định dạng: "number: last name, first name, Sales Employee"
-
Tạo lớp SalariedSupervisor
Lưu ý: Trong 3 class Supervisor chỉ khác với Employee ở phương thức ToString(), tất cả các phương thức khác đều giống.
- Phương thức ToString(): Trả về 1 chuỗi có định dạnh: "number: last name, first name, Salaried Supervisor"
-
Tạo lớp HourlySupervisor
Phương thức ToString(): Trả về 1 chuỗi có định dạng: "number: last name, first name, Hourly Supervisor".
-
Tạo lớp SalesSupervisor
Phương thức ToString(): trả về 1 chuỗi theo định dạng: "number: last name, first name, Sales Supervisor"
-
Tạo class EmployeeDatabase
- Hai phương thức Remove() và Find(): Nếu không có kết trả về thì phải quăng ra 1 ngoại lệ thông báo No Such Employee.
- Phương thức GetPayrollAmount(): trả về tổng số tiền mà tất các các nhân viên và người giám sát kiếm được.
- Phương thức GetSupervisees(ISupervisor supervisor): Đầu và 1 một đối tượng người giám sát và trả về 1 danh sách các nhân viên hoặc người giám sát mà người đó làm giám sát.
Trong hàm main test một số trường hợp như sau
Kết quả trả về sau khi thực thi hàm
Nộp bài
Đặt tên file là HoTen.zip rồi gửi vào gmail: refactortop@gmail.com
Chúc các bạn làm bài tốt