Skip to content

RomanGGX/advanced-java-kontrol-v22

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Контрольна робота з дисципліни Advanced Java

Варіант: V22 (P4 + R4)

Тривалість: 80 хвилин. Формат: індивідуально, автономно в аудиторії.

Ваше завдання: реалізувати міні-сервіс Order Processing з шаблонним процесом обробки замовлення.

Обов'язкові технічні вимоги:

Java 17, Maven, JUnit. Сторонні бібліотеки дозволені. Логування - будь-який підхід/бібліотека. Базові вимоги до реалізації:

Доменні сутності/VO (наприклад: Order, OrderItem, Money, Email). Інкапсуляція: без public-полів. Для мінімум одного класу реалізувати toString(), equals(), hashCode(). Використати PaymentMethod як інтерфейс і щонайменше 2 реалізації. Використати композицію для залежностей сервісу (не створювати ключові залежності через new всередині бізнес-методів). Додати API-метод з Optional (наприклад, Optional findById(...)). Продемонструвати ланцюжок конструкторів через this(...) та super(...). Показати роботу з масивом (наприклад, OrderItem[]) і defensive copy. Обов'язкова архітектурна конструкція:

Інтерфейси + щонайменше один абстрактний клас + Template Method. Рекомендована форма: abstract class OrderProcessorTemplate з final process(...). Кроки процесу: валідація, розрахунок, оплата, завершення/повідомлення. Частина кроків має бути абстрактною, частина - з базовою реалізацією. Вимоги до помилок і логування:

Базовий доменний виняток (наприклад, AppException) + кілька спеціалізованих. Показати checked або інфраструктурний виняток із cause. Використати exception chaining (new ...(..., cause)). Логи: INFO для основних кроків, WARN для очікуваних бізнес-помилок, ERROR для неочікуваних/інфраструктурних збоїв. Вимоги до тестів:

Мінімум 10 тестів на JUnit. Мінімум 1 параметризований тест (@ParameterizedTest). Мінімум 5 негативних тестів (невалідні дані/винятки/неуспішні сценарії). Git і здача:

Окремий репозиторій для контрольної. Фінальний стан у гілці main. Мінімум 1 додаткова гілка та мінімум 1 прийнятий Merge Request у main. Зробити push у віддалений репозиторій. У відповіді до цього питання вказати лише посилання на репозиторій. Індивідуальні умови вашого варіанта:

Профіль оплати P4: CardPayment: дозволяє суму до 35_000; PayPalPayment: приймає суму від 400; BankTransferPayment: комісія 2.5%. Пакет правил R4: валідація - загальна кількість одиниць товару <= 30. Знижки/комісії: знижка 12% при кількості одиниць >= 10. Переходи станів: після PAID скасування заборонено. Додатковий крок Template Method: реалізувати крок validateDeliveryAddress. Обов'язковий негативний сценарій: передбачити і протестувати виняток InvalidAddressException.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages