/** * */ package statedesignmodel; import java.util.Enumeration; import java.util.Vector; /** * @author Administrator * */ public class Customer { private String _name; private Vector<Rental> _rentals = new Vector<Rental>(); public Customer(String name) { this._name = name; } public void addRental(Rental arg) { this._rentals.addElement(arg); } public String getName() { return _name; } public String statement() { double totalAmount = 0; int frequentRenterPoints = 0; Enumeration<Rental> rentals = this._rentals.elements(); String result = "Rental Record for " + this.getName() + "\n"; while (rentals.hasMoreElements()) { double thisAmount = 0; Rental each = (Rental) rentals.nextElement(); switch (each.getMovie().getPriceCode()) { case Movie.REGULAR: thisAmount += 2; if (each.getDaysRented() > 2) { thisAmount += (each.getDaysRented() - 2) * 1.5; break; } case Movie.NEW_RELEASE: thisAmount += each.getDaysRented() * 3; break; case Movie.CHILDRENS: thisAmount += 1.5; if (each.getDaysRented() > 3) { thisAmount += (each.getDaysRented() - 3) * 1.5; break; } } // add frequent renter points frequentRenterPoints++; // add bonus for a two day new release rental if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && each.getDaysRented() > 1) { frequentRenterPoints++; } // show figures for this rental result += "\t" + each.getMovie().getTitle() + "\t" + String.valueOf(thisAmount) + "\n"; totalAmount += thisAmount; } // add footer lines result += "Amount owed is " + String.valueOf(totalAmount) + "\n"; result += "You earned " + String.valueOf(frequentRenterPoints) + " frequent renter points"; return result; } }
/** * */ package statedesignmodel; /** * @author Administrator * */ public class Movie { public static final int CHILDRENS = 2; public static final int REGULAR = 0; public static final int NEW_RELEASE = 1; private String _title; private int _priceCode; public Movie(String title, int priceCode) { this._title = title; this._priceCode = priceCode; } public String getTitle() { return _title; } public void setTitle(String _title) { this._title = _title; } public int getPriceCode() { return _priceCode; } public void setPriceCode(int _priceCode) { this._priceCode = _priceCode; } }
/** * */ package statedesignmodel; /** * @author Administrator * */ public class Rental { private Movie _movie; private int _daysRented; public Rental(Movie movie, int daysRented) { this._movie = movie; this._daysRented = daysRented; } public Movie getMovie() { return _movie; } public int getDaysRented() { return _daysRented; } }