时间卡
下图给出向雇员中登记时间卡操作的静态结构,以及时序图
静态结构
时序图
下面给出部分代码片段,依然是从测试代码开始:
测试代码:创建一个钟点工对象,并将其加入到PayrollDatabase中去,创建一个TimeCardTransaction对象并调用execute,然后对雇员进行查看,看HourlyClassification中是否包含了TimeCard。
TimeCardTransactionTest
package salary;
import implement.classification.HourlyClassification;
import implement.database.PayrollDatabase;
import implement.entity.Employee;
import implement.entity.TimeCard;
import implement.transaction.AddHourlyEmployee;
import implement.transaction.AddTimecardTransaction;
import org.junit.Test;
import java.util.Date;
import static org.junit.Assert.assertEquals;
/**
* 时间卡测试
* Created by ZD on 2017/10/24.
*/
public class TimeCardTransactionTest {
PayrollDatabase payrollDatabase = PayrollDatabase.getPayrollDatabase();
@Test
public void addTimeCardTest(){
int empId = 5;
String name = "Bob5";
String address = "Bob5.home";
double hourlyPay = 20;
AddHourlyEmployee addHourlyEmployee = new AddHourlyEmployee(empId,name,address,hourlyPay);
addHourlyEmployee.execute();
Date date = new Date(2017,10,24);
AddTimecardTransaction timecardTransaction = new AddTimecardTransaction(date,8.0,empId);
timecardTransaction.execute();
Employee e = payrollDatabase.getEmployeeById(empId);
HourlyClassification paymentClassification = (HourlyClassification) e.getPaymentClassification();
TimeCard timeCard = paymentClassification.getTimeCard(date);
System.out.println(((HourlyClassification) e.getPaymentClassification()).getTimeCard(date).getHours());
}
}
TimeCard
package implement.entity;
import java.awt.*;
import java.awt.dnd.DropTarget;
import java.util.Date;
TimeCard
/**
* Created by ZD on 2017/10/24.
*/
public class TimeCard {
private Date date;
private double hours;
public TimeCard(){}
public TimeCard(Date date,double hours){
this.date = date;
this.hours = hours;
}
public Date getDate() {
return date;
}
public double getHours() {
return hours;
}
}
AddTimecardTransaction
package implement.transaction;
import implement.classification.HourlyClassification;
import implement.classification.PaymentClassification;
import implement.database.PayrollDatabase;
import implement.entity.Employee;
import implement.entity.TimeCard;
import java.util.Date;
/**
* Created by ZD on 2017/10/24.
*/
public class AddTimecardTransaction implements Transaction {
private Date date;
private double hours;
private long empId;
PayrollDatabase payrollDatabase = PayrollDatabase.getPayrollDatabase();
public AddTimecardTransaction(){}
public AddTimecardTransaction(Date date, double hours, long empId){
this.date = date;
this.hours = hours;
this.empId = empId;
}
public void execute(){
Employee e = payrollDatabase.getEmployeeById(empId);
HourlyClassification hourlyClassification = (HourlyClassification) e.getPaymentClassification();
TimeCard timeCard = new TimeCard(date,hours);
hourlyClassification.addTimeCard(timeCard);
}
public double getHours() {
return hours;
}
}