我必须制作一个涉及 6 个班级的程序。
所以我想除了
EmployeeManager
之外我都得到了。在这堂课中,我知道我需要 EmployeeDriver
中的方法。我不知道如何操作该数组,因为我需要输入 SalaryEmployee
、HourlyEmployee
和 CommissionEmployee
的信息。用户还可以选择列出所有 HOurlyEmployees 或 SalaryEmployees 或 commisionEmployees
及其信息。我知道我必须循环遍历数组,但我不知道该怎么做。请帮助我!
这是一个开始:
import java.math.BigDecimal;
import java.util.*;
abstract class Employee {
Employee(String name) {
this.name = name;
}
final String name;
}
class SalariedEmployee extends Employee {
SalariedEmployee(String name, BigDecimal salary) {
super(name);
this.salary = salary;
}
public String toString() {
return getClass().getSimpleName() + " " + name + " " + salary;
}
final BigDecimal salary;
}
class HourlyEmployee extends Employee {
HourlyEmployee(String name, BigDecimal hourlyRate) {
super(name);
this.hourlyRate = hourlyRate;
}
public String toString() {
return getClass().getSimpleName() + " " + name + " " + hourlyRate;
}
final BigDecimal hourlyRate;
}
class CommissionEmployee extends Employee {
CommissionEmployee(String name, BigDecimal percentage) {
super(name);
this.percentage = percentage;
}
public String toString() {
return getClass().getSimpleName() + " " + name + " " + percentage + "%";
}
final BigDecimal percentage;
}
class Manager {
public String toString() {
return Arrays.asList(employees).toString();
}
Employee[] employees = new Employee[] { new SalariedEmployee("joe", BigDecimal.valueOf(4567.89)),
new HourlyEmployee("mary", BigDecimal.valueOf(12.34)),
new CommissionEmployee("bob", BigDecimal.valueOf(12.34)) };
}
public class Main {
public static void main(String[] args) {
System.out.println(new Manager());
}
}
10.17 LAB Payroll_Class(摘要) 一家公司每周向员工支付工资。员工分为四种类型:
SalariedEmployee 无论工作时长多少,都获得固定的周薪, 小时工按小时计酬,所有工作时间超过 40 小时的,可获得加班费, 佣金员工按其销售额的一定比例获得报酬, BasePlusCommissionEmployee 领取基本工资加上销售额的一定百分比。 抽象基类 Employee 声明层次结构的“接口”,即程序可以在所有 Employee 对象上调用的成员函数集。
请参阅 Payroll_Class.pdf,了解抽象类 Employee 和常规类 SalariedEmployee、CommissionEmployee、HourlyEmployee 和 BasePlusCommissionEmployee 的 UML 图以及更多详细信息。
预期输出:
员工多态处理:
受薪员工: 约翰·史密斯 社会安全号码:111-11-1111 周薪:800.0
小时工 凯伦·普赖斯 社会安全号码:222-22-2222 时薪:16.75;工作时间:40.0 总收入:670.0
佣金员工: 苏·琼斯 社会安全号码:333-33-3333 销售总额:10000.0;佣金率:0.06 总收入:600.0
基本加佣金员工: 鲍勃·刘易斯 社会安全号码:444-44-4444 销售总额:10000.0;佣金率:0.06 总收入:600.0 基本工资:500.0 总收入加基本工资:1100.0import java.util.ArrayList;
公共类主要{ 公共静态无效主(字符串[] args)
{
// create derived-class objects
SalariedEmployee salariedE=new
SalariedEmployee("John", "Smith", "111-11-1111", 800 );
HourlyEmployee hourlyE=new
HourlyEmployee("Karen", "Price", "222-22-2222", 16.75, 40 );
CommissionEmployee commissionE=new
CommissionEmployee("Sue", "Jones", "333-33-3333", 10000, .06 );
BasePlusCommissionEmployee basePlusCommissionE=new
BasePlusCommissionEmployee("Bob", "Lewis", "444-44-4444", 10000, .06, 500 );
// create ArrayList of four employees
ArrayList<Employee> employees = new ArrayList<Employee>();
employees.add(salariedE);
employees.add(hourlyE);
employees.add(commissionE);
employees.add(basePlusCommissionE);
// output each Employee's information and earnings
System.out.println("Employees processed polymorphically:\n");
for ( int i = 0; i < employees.size(); i++ )
System.out.println(employees.get(i));
}// end main
}