1  /**
  2     A cash register totals up sales and computes change due.
  3  */
  4  public class CashRegister
  5  {
  6     public static final double QUARTER_VALUE = 0.25;
  7     public static final double DIME_VALUE = 0.1;
  8     public static final double NICKEL_VALUE = 0.05;
  9     public static final double PENNY_VALUE = 0.01;
 10  
 11     private double purchase;
 12     private double payment;
 13  
 14     /**
 15        Constructs a cash register with no money in it.
 16     */
 17     public CashRegister()
 18     {
 19        purchase = 0;
 20        payment = 0;
 21     }
 22  
 23     /**
 24        Records the purchase price of an item.
 25        @param amount the price of the purchased item
 26     */
 27     public void recordPurchase(double amount)
 28     {
 29        purchase = purchase + amount;
 30     }
 31     
 32     /**
 33        Processes the payment received from the customer.
 34        @param dollars the number of dollars in the payment
 35        @param quarters the number of quarters in the payment
 36        @param dimes the number of dimes in the payment
 37        @param nickels the number of nickels in the payment
 38        @param pennies the number of pennies in the payment
 39     */
 40     public void receivePayment(int dollars, int quarters, 
 41           int dimes, int nickels, int pennies)
 42     {
 43        payment = dollars + quarters * QUARTER_VALUE + dimes * DIME_VALUE
 44              + nickels * NICKEL_VALUE + pennies * PENNY_VALUE;
 45     }
 46     
 47     /**
 48        Computes the change due and resets the machine for the next customer.
 49        @return the change due to the customer
 50     */
 51     public double giveChange()
 52     {
 53        double change = payment - purchase;
 54        purchase = 0;
 55        payment = 0;
 56        return change;
 57     }
 58  }