import java.math.BigDecimal; import java.math.RoundingMode; //Correspondence: cash = salary //Convention: cash >= 0 // scale(cash) = 2 (ie cash has 2 decimal places) public class Employee implements Salaried { private BigDecimal cash; //Ensures: cash = 0 public Employee() { cash = new BigDecimal("0"); cash = cash.setScale(2); } //Requires: d >= 0 // scale(d) <= 2 //Alters: cash //Ensures: cash = d public void setSalary(BigDecimal d) { cash = d; cash = cash.setScale(2); } //Requires: raise > 0 //Alters: cash //Ensures: cash = round(#cash * (1+raise), 2) public void giveRaise(float raise) { BigDecimal myRaise = new BigDecimal(Double.toString(raise)); myRaise = myRaise.add(BigDecimal.ONE); cash = cash.multiply(myRaise); cash = cash.setScale(2, RoundingMode.HALF_UP); } //Returns cash public BigDecimal getSalary() { return cash; } }