Практична частина іспиту з дисципліни Advanced Java
Варіант: V15 (D3 + R2 + M1)
Тривалість: 60 хвилин. Формат: індивідуально, автономно.
Що потрібно зробити: реалізувати бібліотеку з API та тестами відповідно до опису нижче.
Обов’язкові технічні вимоги:
Java 17, Maven, JUnit. Лише core Java; Spring Boot, БД, Docker, веб-інтерфейс не вимагаються. Сторонні бібліотеки дозволені, але не є обов’язковими. У відповіді Moodle треба вказати лише URL репозиторію. Спільні вимоги до реалізації:
Щонайменше 3-4 доменні сутності та 2 сервіси. Щонайменше 1 власний generic-інтерфейс або generic-клас у публічному API. Доречне використання колекцій, lambdas і Stream API у реальних сценаріях. Інкапсуляція, коректна модель домену, композиція, доречні абстракції, SOLID. Коректні equals()/hashCode()/toString() там, де це виправдано. Optional у публічному API там, де це доречно. Базовий доменний виняток, спеціалізовані винятки, INFO/WARN/ERROR логування. Мінімум 10 тестів, з них мінімум 1 параметризований і 5 негативних. Домен D3: Складський облік
Спроєктуйте бібліотеку для керування товарами, залишками та операціями руху запасів.
Product, WarehouseItem/Batch, StockOperation, Supplier/Category не менше двох сервісів, наприклад InventoryService і StockAnalyticsService API для надходження, списання, переміщення, пошуку та аналітики запасів щонайменше 3-4 доменні сутності та 2 сервіси щонайменше один власний generic-інтерфейс або generic-клас у публічному API використання колекцій та Stream API для пошуку, фільтрації, сортування й агрегування товарів та операцій Пакет правил R2: Обмеження ресурсів і пріоритети
Додайте правило обмеження місткості, ліміту або унікальності для ключового ресурсу домену. Введіть категорію, пріоритет або тариф, який впливає на бізнес-логіку основної операції. Передбачте щонайменше 1 спеціалізований виняток для порушення ліміту, дублювання або конфлікту ресурсу. Реалізуйте щонайменше 1 Stream-запит з групуванням або агрегуванням за категорією, власником, статусом чи іншим релевантним полем. Режим взаємодії M1: Файловий режим
Додайте до бібліотеки окремий компонент для зчитування вхідних даних з файлу та запису результатів у файл. Формат файлів не фіксується: можна використати будь-який текстовий або структурований формат, який ви коректно обробляєте засобами Java. Компонент файлової взаємодії має бути тестованим через JUnit без ручного запуску застосунку. Обмеження на початкову заготовку: дозволена лише власна технічна заготовка Maven/JUnit/структури каталогів без будь-якої наперед реалізованої бізнес-логіки.
Що вписати у відповідь Moodle: URL репозиторію.