Вы находитесь на странице: 1из 2

Лабораторная работа №5

Задание 1
В этом задании вы создадите исключение OverdraftException, генерируемое методом withdraw в
классе Account.

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

1. Откройте проект banking


2. Создайте новый класс OverdraftException в пакете com.mybank.domain. Класс должен являться
наследником класса Exception.
a. Создайте закрытое поле deficit типа double
b. Добавьте открытый конструктор с двумя параметрами – message типа String и deficit
типа double. Параметр message должен передаваться в конструктор родительского
класса, параметр deficit – инициализировать соответствующее поле данного класса.
c. Создайте метод, возвращающий значение поля deficit.
3. Модифицируйте класс Account
a. Измените метод deposit таким образом, чтобы он не возвращал никакого значения
(поскольку данная операция не вызывает никаких потенциальных ошибок)
b. Измените метод withdraw таким образом, чтобы он не возвращал никакого значения.
Добавьте к описанию метода, что он выбрасывает исключение OverdraftException.
Добавьте в код метода генерацию исключения OverdraftException при попытке снятия
суммы, превышающей имеющуюся на счете. Исключение должно генерироваться с
сообщением о недостатке средств на счете и количеством средств, недостаточных для
выполнения операции
4. Модифицируйте класс CheckingAccount
a. Измените метод withdraw таким образом, чтобы чтобы он не возвращал никакого
значения. При ошибке операции должно генерироваться исключение
OverdraftException. Исключение должно генерироваться с двумя возможными
сообщениями: «Средств на счете недостаточно, овердрафт недоступен» и «Превышен
лимит овердрафта».
5. Протестируйте работу модифицированных классов

Задание 2
В этом задании вы используете коллекции для представления ассоциации между классами

В предыдущем дизайне для реализации отношения множественной ассоциации между банком и


клиентами и между клиентом и его счетами использовались массивы. Этот дизайн имеет ряд
ограничений, в частности, фиксированный размер массива. В новом дизайне, ассоциация будет
реализовываться посредством классов-коллекций.

1. Откройте проект banking


2. Модифицируйте класс Bank
a. Измените тип атрибута customers c массива на список объектов класса Customer.
Удалите поле numberOfCustomers. Проинициализируйте список как ArrayList.
b. Измените методы addCustomer и getCustomer для использования списка. Измените
метод getNumOfCustomers для возврата значений списка.
3. Модифицируйте класс Customer
a. Измените тип атрибута accounts c массива на список объектов класса Account. Удалите
поле numberOfAccounts. Проинициализируйте список как ArrayList.
b. Измените методы addAccount и getAccount для использования списка. Измените
метод getNumOfAccounts для возврата значений списка.
4. Протестируйте работу измененных классов (требуется ли модификация тестирующего кода?
Почему?)

Вам также может понравиться