2、工资管理软件设计(第2次实验,6学时)
某公司由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