Следующий шаг после внесения изменений (рис 1.3) - удаление старого метода. Компилятор должен сообщить нам, если мы что либо пропустили. После этого опять запускаем тесты, чтобы убедиться, что ничего не сломалось.

Иногда я оставляю старый метод. Это бывает полезно, если это public метод и мне не хочется менять интерфейсы других классов.

Конечно осталось еще кое что, что мне хотелось бы сделать в Rental.getCharge(), но пока оставим его и вернемся к Customer.statement.

  public String statement()  {
    double totalAmount = 0;
    int frequentRenterPoints = 0;
    Enumeration rentals = this.rentals.elements();
    String result = "Rental Record for "+getName()+"\n";
    while( rentals.hasMoreElements()) {
      double thisAmount = 0;
      Rental each = ( Rental) rentals.nextElement();

      thisAmount = each.getCharge();

      // 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 owned is "+String.valueOf( totalAmount)+"\n";
    result += "You earned "+String.valueOf( frequentRenterPoints)+
              " frequent renter points";

    return result;
  }

В начало | предыдущая | следующая