/**
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;
}