class Customer


1 import java.util.*;
2 
3 public class Customer {
4     private String _name;
5     private ArrayList _rentals = new ArrayList();
6 
7     public Customer(String name) {
8 	_name = name;
9     }
10 
11     public void addRental(Rental arg) {
12 	_rentals.add(arg);
13     }
14 
15     public String getName() {
16 	return _name;
17     }
18 
19     public String statement() 
20     {         
21 	double totalAmount = 0;         
22 	int frequentRenterPoints = 0;         
23 	Iterator rentals = _rentals.iterator();     
24 	String result = "Rental Record for " + getName() + "\n";
25 	while (rentals.hasNext ()) {
26 	    double thisAmount = 0;   
27 	    Rental rental = (Rental) rentals.next();
28 	    // Add frequent renter points 
28a 	    // Computing frequent renter points is Movie/Rental business
28b         // Refactor to Rental class
29          frequentRenterPoints ++; // add bonus for a two day new release rental 
30 	    if ((rental.getMovie().getPriceCode() == Movie.NEW_RELEASE) 
31 		&&     rental.getDaysRented() > 1)
32 		frequentRenterPoints ++; 
33 	    //show figures for this rental 
34 	    result += "\t" + rental.getMovie().getTitle()+ "\t" +     
35 		rental.getCharge() + // replaces getAmount()
36 		"\n"; 
37 	    totalAmount += rental.getCharge(); 
38 	}
39 	//add footer lines 
40 	result += "Amount owed is " + String.valueOf(totalAmount) + "\n"; 
41 
42 	result += "You earned " + String.valueOf(frequentRenterPoints) +
43 	    " frequent renter points"; 
44 	return result; 
45     }
46 
47     public static void main(String argv[])
48     {
49 	Customer harry = new Customer("Harry");
50 	Movie movie = new Movie("Gone With The Wind", Movie.REGULAR);
51 	Rental rental = new Rental(movie, 3);
52 	harry.addRental(rental);
53 	System.out.println(harry.statement());
54     }
55 }
56 // Output:
57 //Rental Record for Harry
58 //	Gone With The Wind	3.5
59 //Amount owed is 3.5
60 //You earned 1 frequent renter points
61 
62 // What about that messiness with the frequentRenter points?  Can't we
63 // move that to the Rental class?