Практична частина іспиту з дисципліни Advanced Java
Варіант: V20 (D4 + R1 + M2)
Тривалість: 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 негативних. Домен D4: Запис до клініки
Спроєктуйте бібліотеку для керування лікарями, пацієнтами та записами на прийом.
Doctor, Patient, Appointment, Specialty/TimeSlot не менше двох сервісів, наприклад AppointmentService і ClinicScheduleService API для створення запису, перенесення, скасування, пошуку та аналітики завантаження щонайменше 3-4 доменні сутності та 2 сервіси щонайменше один власний generic-інтерфейс або generic-клас у публічному API використання колекцій та Stream API для пошуку, фільтрації, сортування й агрегування прийомів та розкладів Пакет правил R1: Валідація і життєвий цикл
Додайте щонайменше 3 спеціалізовані бізнес-правила валідації для основних операцій домену. Введіть життєвий цикл для основної операції або запису щонайменше з 3 статусами та дозволеними переходами між ними. Передбачте щонайменше 1 спеціалізований виняток для порушення правил життєвого циклу або валідації. Реалізуйте щонайменше 1 Stream-запит, який повертає відсортований список активних або завершених операцій за обраним критерієм. Режим взаємодії M2: Консольний режим
Додайте до бібліотеки окремий компонент для обробки текстових команд або рядків вводу/виводу поверх вашого API. Не потрібен інтерактивний main(): компонент має бути придатним для тестування через JUnit як звичайний клас бібліотеки. Передбачте обробку щонайменше кількох типів команд: створення/зміна/пошук або отримання звіту. Обмеження на початкову заготовку: дозволена лише власна технічна заготовка Maven/JUnit/структури каталогів без будь-якої наперед реалізованої бізнес-логіки.
Що вписати у відповідь Moodle: URL репозиторію.