- зрозуміти механізм помилок на етапі компіляції та на етапі роботи додатку
- вивчити механізм виключень в Java
Реалізуйте клас TimeSpan
із лабораторної роботи №4.
Створіть власні класи виключень, які походять від базового класу RuntimeException
для наступних подій у класі:
NegativeTimeSpanException
- виключення викидається, коли значення поточногоTimeSpan
стає від'ємним;IllegalInputTimeSpanException
- виключення викидається, коли значення вхідного інтервалу часу є некоректним (від'ємна кількість годин та\або хвилин, кількість хвилин понад 59 при двох вхідних аргументах);IllegalScaleFactorException
- виключення викидається, коли значення вхідного множника у методіscale
є некоректним.
Додайте до вихідного коду механізм обробки виключних ситуацій за допомогою власних класів виключень.
Ви можете додати власні класи виключень для інших виключних ситуацій, які пов'язані з даним класом та сутністю "інтервал часу".
В проєкт лабораторної роботи присутній частково розроблений клієнт консольного додатка для управління банківськими рахунками. Додаток дозволяє виконувати наступні дії:
- створювати новий рахунок;
- видаляти рахунок;
- вносити кошти на рахунок;
- знімати кошти з рахунку;
- видруковувати інформацію щодо рахунку.
Ваше завдання полягає в наступному:
Пункт 1
Для моделювання банківського рахунку в додатку повинен бути реалізований базовий клас BankAccount
та похідний клас CheckingAccount
, який моделює рахунок з денним лімітом на зняття коштів.
Заголовки класів наведені в додатку в пакеті model
. Якщо потрібно, змініть заголовки та додайте потрібні поля та методи згідно з UML діаграмою, наведеною нижче.
Поле dailyWithdrawalLimit
повинно мати значення 300
за замовченням. Потрібно передбачити гетер та сетер для даного поля.
Пункт 2
Реалізуйте додаток з дотриманням умов та обмежень, які будуть описані нижче. Додаток повинен бути працездатним, методи класів BankAccount
та CheckingAccount
повинні бути реалізовані та працювати коректно.
Пункт 3
При реалізації додатку ви повинні передбачити власні класи виключень (базовим класом для власних підкласів може виступати клас RuntimeException
).
Додаток має такі умови та обмеження.
Обмеження банківського рахунку:
- поле
userId
повинно бути унікальним для банківського рахунку, не може бути двох банківських рахунків з однаковимuserId
; - пароль повинен бути довжиною щонайменше
8
символів та містити щонайменше одну цифру; - баланс рахунку не може бути від'ємним - баланс може бути
0
чи більше.
При створенні акаунту:
- переконайтеся, що новий рахунок має унікальний
userId
та коректний пароль; - пароль та підтвердження паролю повинні збігатися;
- новий акаунт повинен бути об'єктом типу
CheckingAccount
.
При видаленні акаунту:
- користувач повинен ввести
userId
та пароль рахунку; - користувач не може видалити рахунок з ненульовим балансом.
При внесенні коштів:
- користувач повинен ввести
userId
та пароль рахунку; - значення внеску повинно бути більше
0
.
При знятті коштів:
- користувач повинен ввести
userId
та пароль рахунку; - сума повинна бути більше
0
, але не може перевищувати денний ліміт для зняття коштів.
При друку інформації щодо рахунку:
- користувач повинен ввести
userId
та пароль рахунку.
Пункт 4
Ви повинні обробляти виняткові ситуації, які виникають при порушенні умов та обмежень додатку (наприклад, користувач ввів некоректний пароль чи хоче зняти кошти більше денного ліміту тощо) за допомогою власних класів виключень.
Класи виключень повинні бути створені в пакеті exceptions
.
Ви можете організувати ієрархію виключень за допомогою механізму успадкування (наприклад, створити клас AccountException
, який буде базовим класом для виняткових ситуацій, пов'язаних з банківським акаунтом).
При виникненні виняткової ситуації, додаток повинен вивести повідомлення щодо помилки (повідомлення можна вивести в потік помилок за допомогою методу System.err.println()
), після чого повернутися в головне меню.
При успішному виконанні операції, додаток повинен повідомити користувача про успішне виконання операції та повернутися до головного меню.
Пункт 5
Для обробки виняткових ситуацій ви можете використовувати всі можливості механізму виключень: try-catch
, throw
, throws
тощо.