Главная » Java, Структуры данных и алгоритмы » Пример программы Java

0

В данном разделе приводится пример простой Java-программы, которая демонстрирует многие из описанных выше конструкций. В примере имеются два класса: CreditCard, в котором описаны объекты — кредитные карточки, и второй класс — Test, который проверяет работу класса CreditCard. Объекты — кредитные карточки, описываемые в классе CreditCard, являются упрощенными вариантами настоящих кредитных карточек. В них указаны идентификационный номер, информация о владельце счета и банке, информация о текущем состоянии счета и кредитный лимит.

С их помощью нельзя осуществлять операции по процентам и просроченные платежи, однако они ограничивают расходы, которые могут привести к превышению суммы на кредитной карточке.

Класс CreditCard

Класс CreditCard представлен во фрагменте кода 1.2. В классе Credit- Card описаны пять переменных экземпляра класса, область видимости которых private, и содержится конструктор для инициализации этих переменных. Кроме того, класс содержит пять методов доступа, осуществляющих доступ к этим переменным. Безусловно, можно описать эти переменные как public, что сделало бы ненужным использование методов доступа. Однако недостаток такого подхода состоит в том, что пользователю разрешается непосредственно проводить изменение переменных объекта, в то время как в данном случае такое изменение предпочтительнее выполнять с помощью особых методов обновления. Во фрагменте кода 1.2 представлены два подобных метода обновления — chargelt и makePayment.

Зачастую удобнее использовать рабочие методы, которые определяют особые действия объекта. Для демонстрации этого во фрагменте кода 1.2 использован рабочий статический метод printCard.

Класс Test

Класс CreditCard проверяется в классе Test. Обратите внимание на использование массива объектов класса CreditCard и операторов цикла для вычисления расходов и платежей. Полный код класса Test представлен во фрагменте кода 1.3. Для простоты класс Test не выводит сложные графические результаты, а просто отправляет выходной поток на Java-консоль. Этот выходной поток представлен во фрагменте кода 1.4. Обратите внимание на использование нестатических методов chargelt и makePayment и статического метода printCard.

public class CreditCard { // Переменные экземпляра private String number, private String name; private String bank, private double balance; private int limit, // Конструктор

CreditCard(String no. String nm, String bk, double bal, int lim) {

number = no;

name = nm;

bank = bk,

balance = bal;

limit = lim,

}

// Методы доступа

public String getNumber() { return number, } public String getName() { return name, } public String getBank() { return bank; } public double getBalance() { return balance, } public int getLimit() { return limit; } // Рабочие методы

public boolean chargelt(double price) { // Осуществляет расходы if (price + balance > (double) limit)

return false; // Недостаточно денег, чтобы оплатить balance += price;

return true; // В данном случае оплата разрешается и совершается

}

public void makePayment(double payment) { // Выполняется платеж balance -= payment;

}

public static void printCard(CreditCard с) { // Выводится информация

// с кредитной карточки System, out println(" Number = " + с getNumberQ), System out printlnfName =" + с getNameQ), System out println("Bank = " + с getBankQ);

System out println("Balance =" + с getBalanceQ), // Неявное приведение

// типа

System.out println("Limit = " + c.getLimitQ); // Неявное приведение типа

} }

Фрагмент кода 1.2. Класс CreditCard

public class Test {

public static void main(String[ ] args) { CreditCard walletQ = new CreditC^rd[10]; wallet[0] = new CreditCard("539l 0375 9387 5309",

"John Bowman", "Calfornia Savings", 0.0, 2500); wallet[1] = new CreditCard(«3485 0399 3395 1954",

"John Bowman", "Calfornia Federal", 0.0, 3500); wallet[2] = new CreditCard(«6011 4902 3294 2994",

"John Bowman", "Calfornia Finance", 0.0, 5000); for (int i=1; i<=16; i++) { wallet[0].chargelt((double)i);

wallet[l] chargelt(2.0*i); // неявное приведение типа wallet[2].chargelt((double)3*i); // явное приведение типа

}

System, out. printlnfCard payments:"); for (int i=0; i<3; i++) {

CreditCard. printCard(wallet[i]); while (wallet[i].getBalance() > 100.0) { wallet[i].makePayment(100.0);

System.out.println("New balance »" + wallet[i].getBalance()); }

System.out println();

}

}

}

Фрагмент кода 1.3. Класс Test

Card payments:

Number = 5391 0375 9387 5309

Name = John Bowman

Bank = Calfornia Savings

Balance = 136.0

Limit = 2500

New balance = 36 0

Number = 3485 0399 3395 1954

Name = John Bowman

Bank = Calfornia Federal

Balance = 272 0

Limit = 3500

New balance = 172.0

New balance = 72 0

Number = 6011 4902 3294 2994

Name = John Bowman

Bank = Calfornia Finance

Balance = 408.0

Limit = 5000

New balance = 308 0

New balance = 208.0

New balance = 108 0

New balance =80

Фрагмент кода 1,4. Выходной поток класса Test

Источник: Гудрич М.Т. Г93 Структуры данных и алгоритмы в Java / М.Т. Гудрич, Р. Тамассия; Пер. с англ. A.M. Чернухо. — Мн.: Новое знание, 2003. — 671 е.: ил.

По теме:

  • Комментарии