/** A cash register totals up sales and computes change due. */ public class CashRegister { /** * Constructs a cash register with no money in it. */ public CashRegister() { purchase = 0; payment = 0; } /** Records the sale of an item. Adds the amount of this sale to the current purchase total. Only the total is remembered. @param amount the price of the item */ public void recordPurchase(double amount) { double total = purchase + amount; purchase = total; } /** Enters the payment received from the customer. It does not modify the purchase total. The amount must be equal to or greater than the current purchase total. @throws IllegalArgumentException amount is less than the purchase total @param amount the amount of the payment */ public void enterPayment(double amount) { if ( amount - purchase < -0.005 ) { throw new IllegalArgumentException(); } payment = amount; } /** Computes the change due and resets the machine for the next customer. @return the change due to the customer */ public double giveChange() { if ( payment - purchase < -0.005 ) { throw new IllegalStateException(); } double change = payment - purchase; purchase = 0; payment = 0; return change; } private double purchase; private double payment; }