某公司由6人组成,他们分别是: 其中,Sam是经理,每月除得到基本工资外,还获得$500.00的红利;Peter和Mary是合同工,每月拿基本工资;Cliff是小时工,他的每月的工资额=基本工资×工作小时数,他的工作小时数为每月40小时;而Al和Gus是义工,不拿工资。图1反应了上述情况。 StaffMember是抽象类,有一个抽象方法pay。 Manager类中的bonus代表红利;awardBonus方法用来增加红利。 Hourly类中的hoursWorked代表一个月工作的小时数;addHours方法用来增加小时数。 Staff类中的main方法用来驱动整个程序的运行;payDetail方法用来显示所有人的详细信息;构造方法用来初始化上述6个人,并将他们存储在staffMember类型的数组中。 每个类都有toString方法,用来返回该类的详细信息。要求你按照此图的继承关系定义每一个类,并最终显示所有人的详细信息。显示结果如下:
UML图
Staff类
package experiment2; public class Staff { StaffMember []staffList; Staff(){ staffList = new StaffMember[6]; Manager x1 = new Manager(); x1.setName("Sam"); x1.setAddress("123 Main Line"); x1.setPhone("555-0469"); x1.setSocialSN("123-45-6789"); x1.setPayRate(2423.07); x1.awardBonus(500); x1.pay(); StaffMember t1 = x1; staffList[0] = t1; Employee x2 = new Employee(); x2.setName("Peter"); x2.setAddress("456 Off Line"); x2.setPhone("555-0101"); x2.setSocialSN("987-65-4321"); x2.setPayRate(1246.15); StaffMember t2 = x2; staffList[1] = t2; Employee x3 = new Employee(); x3.setName("Mary"); x3.setAddress("789 Off Rocker"); x3.setPhone("555-0690"); x3.setSocialSN("010-20-3040"); x3.setPayRate(1169.23); StaffMember t3 = x3; staffList[2] = t3; Hourly x4 = new Hourly(); x4.setName("Cliff"); x4.setAddress("678 Fifth Ave."); x4.setPhone("555-0000"); x4.setSocialSN("958-47-3625"); x4.addHours(40); x4.setPayRate(); StaffMember t4 = x4; staffList[3] = t4; Volunteer x5 = new Volunteer(); x5.setName("AI"); x5.setAddress("987 Suds Ave."); x5.setPhone("555-8374"); StaffMember t5 = x5; staffList[4] = t5; Volunteer x6 = new Volunteer(); x6.setName("Gus"); x6.setAddress("321 Off Line"); x6.setPhone("555-7282"); StaffMember t6 = x6; staffList[5] = t6; } public void payDetail() { for(StaffMember i:staffList) { System.out.println(i+"-----------------"); } } public static void main(String[] args) { // TODO Auto-generated method stub Staff tt = new Staff(); tt.payDetail(); } }StaffMember类
package experiment2; public abstract class StaffMember { private String name; private String address; private String phone; public String toString() { return "姓名: "+this.getName()+"\n地址: "+this.getAddress()+ "\n电话: "+this.getPhone()+"\n"; } public abstract double pay(); public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } }Volunteer类
package experiment2; public class Volunteer extends StaffMember { @Override public double pay() { double a=0; return a; } @Override public String toString() { return super.toString()+"多谢!\n"; } }Employee类
package experiment2; public class Employee extends StaffMember { private String socialSN; private double payRate; @Override public double pay() { return getPayRate(); } public String toString() { return super.toString()+"社会安全号: "+this.getSocialSN()+"\n工资: $"+this.getPayRate()+"\n"; } public String getSocialSN() { return socialSN; } public void setSocialSN(String socialSN) { this.socialSN = socialSN; } public double getPayRate() { return payRate; } public void setPayRate(double payRate) { this.payRate = payRate; } }Hourly类和Manager类
package experiment2; public class Hourly extends Employee { private int hoursWorked; public void addHours(int hours) { hoursWorked = hours; } public void setPayRate() { super.setPayRate(hoursWorked*10.55); } public int getHoursWorked() { return hoursWorked; } public String toString() { return super.toString()+"工作小时数: "+this.getHoursWorked()+"\n"; } } package experiment2; public class Manager extends Employee { private double bonus; public void awardBonus(double bonus) { this.bonus = bonus; } public double pay() { this.setPayRate(getPayRate()+bonus); return this.getPayRate(); } }TUT Lzc 2020.10.5 1.18分完成