## Phần A - Tạo một lớp trừu tượng Employees (6 điểm): | Trường | Kiểu dữ liệu | Mô tả | |--------------|--------------|-----------------| | empID | int | Mã nhân viên | | empName | String | Tên nhân viên | | dob | LocalDate | Ngày sinh | | department | String | Phòng ban | | numWork | int | Số năm làm việc | 3. Constructors (1 điểm): - Tạo một constructor không có tham số: khởi tạo empID = 10, empName với tên của bạn, department = "Aptech", numWork = 0, DOB với ngày sinh của bạn. - Tạo một constructor có 5 tham số: khởi tạo empID, empName, dob, department, numWork với các giá trị được truyền vào. 4. Phương thức (3 điểm): - Tạo một phương thức có tên: Input() để nhập dữ liệu cho nhân viên. - Tạo một phương thức có tên: DisplayDetail() hiển thị thông tin của Nhân viên: empID, empName, DOB, department, numWork. - Tạo một phương thức trừu tượng có tên: CalculateSalary() có kiểu trả về là double. ## Phần B - Tạo một lớp TemporaryEmp kế thừa từ Employees (5 điểm). | Trường | Kiểu dữ liệu | Mô tả | |--------------|--------------|-----------------------| | workDay | int | Số ngày làm việc | 2. Constructors (2 điểm): - Tạo một constructor không có tham số kế thừa constructor của lớp cơ sở và khởi tạo workDay = 0. - Tạo một constructor có 6 tham số kế thừa constructor của lớp cơ sở (Employees) và khởi tạo workDay với giá trị truyền vào. 3. Phương thức (3 điểm): - Thực hiện phương thức trừu tượng CalculateSalary(). - Nếu workDay <= 25: Salary = workDay * 50.000. - Nếu workDay > 25: Salary = 25 * 50.000 + (workDay - 25) * 50.000 * 2. - Trả về lương. - Tạo một phương thức ghi đè có tên Input() để nhập dữ liệu cho nhân viên. - Tạo một phương thức ghi đè có tên DisplayDetail() hiển thị thông tin của TemporaryEmp: empID, empName, DOB, department, salary, workDay. ## Phần C - Tạo một lớp EmployeeManagement (8 điểm). 1. Trường (0.5 điểm): List<TemporaryEmp> listEmployee; 2. Phương thức (7 điểm): - Input_Employee: nhập thông tin nhân viên cho đến khi người dùng không chọn 'Y' hoặc 'y'. - display_Employee: Hiển thị các phần tử trong danh sách. - display_max_numWork: Hiển thị TemporaryEmp có số năm làm việc lớn nhất. - Search_Employee: cho phép tìm kiếm một nhân viên trong danh sách với tên được nhập từ bàn phím. ## Phần D - Tạo một lớp Test (1.5 điểm). Kiểm tra chức năng của lớp EmployeeManagement.