薪水支付案例(4)

时间卡

下图给出向雇员中登记时间卡操作的静态结构,以及时序图

静态结构
这里写图片描述
时序图
这里写图片描述

下面给出部分代码片段,依然是从测试代码开始:

测试代码:创建一个钟点工对象,并将其加入到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;
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值