Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Бібліотека геометрії
1. Початковий рівень. Створити самостійну консольну Java-програму «Бібліотека геометрії». Для кола з радіусом r≥0 обчислити площу π*r*r і довжину 2*π*r; нечисловий радіус відхилити. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Бібліотека геометрії»: модулі API і застосунку, тести обчислень JUnit. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для кола з радіусом r≥0 обчислити площу π*r*r і довжину 2*π*r; нечисловий радіус відхилити. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Бібліотека геометрії»: модулі API і застосунку, тести обчислень JUnit. Для кола з радіусом r≥0 обчислити площу π*r*r і довжину 2*π*r; нечисловий радіус відхилити. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 2. Конвертер валют
1. Початковий рівень. Створити самостійну консольну Java-програму «Конвертер валют». Ввести суму UAH≥0 та курс UAH за 1 EUR>0; видати EUR з округленням HALF_UP до 2 знаків. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Конвертер валют»: багатомодульний Maven-проєкт і параметризовані тести. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Ввести суму UAH≥0 та курс UAH за 1 EUR>0; видати EUR з округленням HALF_UP до 2 знаків. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Конвертер валют»: багатомодульний Maven-проєкт і параметризовані тести. Ввести суму UAH≥0 та курс UAH за 1 EUR>0; видати EUR з округленням HALF_UP до 2 знаків. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 3. Калькулятор податків
1. Початковий рівень. Створити самостійну консольну Java-програму «Калькулятор податків». Для місячного доходу≥0 застосувати навчальну ставку 10 % до 10000 грн і 20 % лише до перевищення; видати податок і чистий дохід. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Калькулятор податків»: Gradle-збирання, тести граничних значень ставок. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для місячного доходу≥0 застосувати навчальну ставку 10 % до 10000 грн і 20 % лише до перевищення; видати податок і чистий дохід. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Калькулятор податків»: Gradle-збирання, тести граничних значень ставок. Для місячного доходу≥0 застосувати навчальну ставку 10 % до 10000 грн і 20 % лише до перевищення; видати податок і чистий дохід. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 4. Валідатор паролів
1. Початковий рівень. Створити самостійну консольну Java-програму «Валідатор паролів». Для рядка пароля перевірити 8–64 символи, хоча б одну цифру та велику літеру; видати перелік порушень без самого пароля. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Валідатор паролів»: модуль бібліотеки з покриттям тестами понад 90 %. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для рядка пароля перевірити 8–64 символи, хоча б одну цифру та велику літеру; видати перелік порушень без самого пароля. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Валідатор паролів»: модуль бібліотеки з покриттям тестами понад 90 %. Для рядка пароля перевірити 8–64 символи, хоча б одну цифру та велику літеру; видати перелік порушень без самого пароля. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 5. Розбір аргументів командного рядка
1. Початковий рівень. Створити самостійну консольну Java-програму «Розбір аргументів командного рядка». Розібрати --name=текст і --count=1..100; видати count привітань, невідомий ключ або дублікат відхилити. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Розбір аргументів командного рядка»: бібліотека з тестами винятків. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Розібрати --name=текст і --count=1..100; видати count привітань, невідомий ключ або дублікат відхилити. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Розбір аргументів командного рядка»: бібліотека з тестами винятків. Розібрати --name=текст і --count=1..100; видати count привітань, невідомий ключ або дублікат відхилити. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 6. Банківські операції
1. Початковий рівень. Створити самостійну консольну Java-програму «Банківські операції». Для рахунку з балансом у копійках виконати поповнення й зняття додатної суми; заборонити овердрафт і показати баланс. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Банківські операції»: модулі domain і app, тести переказів. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для рахунку з балансом у копійках виконати поповнення й зняття додатної суми; заборонити овердрафт і показати баланс. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Банківські операції»: модулі domain і app, тести переказів. Для рахунку з балансом у копійках виконати поповнення й зняття додатної суми; заборонити овердрафт і показати баланс. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 7. Матрична бібліотека
1. Початковий рівень. Створити самостійну консольну Java-програму «Матрична бібліотека». Ввести дві прямокутні матриці цілих; видати суму за однакових розмірів, інакше повідомити несумісність. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Матрична бібліотека»: Maven-модуль, тести з @CsvSource. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Ввести дві прямокутні матриці цілих; видати суму за однакових розмірів, інакше повідомити несумісність. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Матрична бібліотека»: Maven-модуль, тести з @CsvSource. Ввести дві прямокутні матриці цілих; видати суму за однакових розмірів, інакше повідомити несумісність. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 8. Розбір дат
1. Початковий рівень. Створити самостійну консольну Java-програму «Розбір дат». Розібрати ISO дату yyyy-MM-dd та кількість днів; видати нову дату й день тижня, неможливу дату відхилити. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Розбір дат»: розробка через тестування в Gradle-проєкті. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Розібрати ISO дату yyyy-MM-dd та кількість днів; видати нову дату й день тижня, неможливу дату відхилити. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Розбір дат»: розробка через тестування в Gradle-проєкті. Розібрати ISO дату yyyy-MM-dd та кількість днів; видати нову дату й день тижня, неможливу дату відхилити. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 9. Кошик магазину
1. Початковий рівень. Створити самостійну консольну Java-програму «Кошик магазину». Для товарів із назвою, ціною в копійках і кількістю≥0 видати суми рядків та кошика; від’ємну ціну відхилити. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Кошик магазину»: багатомодульний Maven-проєкт, тести правил знижок. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для товарів із назвою, ціною в копійках і кількістю≥0 видати суми рядків та кошика; від’ємну ціну відхилити. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Кошик магазину»: багатомодульний Maven-проєкт, тести правил знижок. Для товарів із назвою, ціною в копійках і кількістю≥0 видати суми рядків та кошика; від’ємну ціну відхилити. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 10. Текстова статистика
1. Початковий рівень. Створити самостійну консольну Java-програму «Текстова статистика». Для рядка тексту видати число слів, літер і найдовше слово; слова розділені пробілами, за нічиєї взяти перше. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Текстова статистика»: сервіс через uses/provides і тести. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для рядка тексту видати число слів, літер і найдовше слово; слова розділені пробілами, за нічиєї взяти перше. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Текстова статистика»: сервіс через uses/provides і тести. Для рядка тексту видати число слів, літер і найдовше слово; слова розділені пробілами, за нічиєї взяти перше. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 11. Розклад поїздів
1. Початковий рівень. Створити самостійну консольну Java-програму «Розклад поїздів». Для рейсів із номером і LocalTime відправлення видати найближчий рейс після заданого часу; якщо немає, повідомити це. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Розклад поїздів»: багатопроєктний Gradle, вкладені тести @Nested. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для рейсів із номером і LocalTime відправлення видати найближчий рейс після заданого часу; якщо немає, повідомити це. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Розклад поїздів»: багатопроєктний Gradle, вкладені тести @Nested. Для рейсів із номером і LocalTime відправлення видати найближчий рейс після заданого часу; якщо немає, повідомити це. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 12. Шифри
1. Початковий рівень. Створити самостійну консольну Java-програму «Шифри». Ввести латинський текст і зсув 0..25; виконати шифр Цезаря зі збереженням регістру, інші символи не змінювати. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Шифри»: провайдери шифрів через ServiceLoader і тести. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Ввести латинський текст і зсув 0..25; виконати шифр Цезаря зі збереженням регістру, інші символи не змінювати. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Шифри»: провайдери шифрів через ServiceLoader і тести. Ввести латинський текст і зсув 0..25; виконати шифр Цезаря зі збереженням регістру, інші символи не змінювати. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 13. Статистика оцінок
1. Початковий рівень. Створити самостійну консольну Java-програму «Статистика оцінок». Для оцінок 0..100 видати мінімум, максимум і середнє до 2 знаків; для порожнього набору середнє не визначати. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Статистика оцінок»: бібліотека й консольний застосунок, звіт тестів. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для оцінок 0..100 видати мінімум, максимум і середнє до 2 знаків; для порожнього набору середнє не визначати. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Статистика оцінок»: бібліотека й консольний застосунок, звіт тестів. Для оцінок 0..100 видати мінімум, максимум і середнє до 2 знаків; для порожнього набору середнє не визначати. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 14. Конвертер одиниць
1. Початковий рівень. Створити самостійну консольну Java-програму «Конвертер одиниць». Перетворити невід’ємну довжину між m, km і cm через метри; невідому одиницю відхилити, результат подати до 3 знаків. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Конвертер одиниць»: образ jlink застосунку та тести. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Перетворити невід’ємну довжину між m, km і cm через метри; невідому одиницю відхилити, результат подати до 3 знаків. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Конвертер одиниць»: образ jlink застосунку та тести. Перетворити невід’ємну довжину між m, km і cm через метри; невідому одиницю відхилити, результат подати до 3 знаків. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 15. Бібліотека дробів
1. Початковий рівень. Створити самостійну консольну Java-програму «Бібліотека дробів». Для двох дробів із цілими чисельниками й ненульовими знаменниками видати скорочену суму з додатним знаменником. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Бібліотека дробів»: встановлення в локальний репозиторій Maven, повторне використання. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для двох дробів із цілими чисельниками й ненульовими знаменниками видати скорочену суму з додатним знаменником. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Бібліотека дробів»: встановлення в локальний репозиторій Maven, повторне використання. Для двох дробів із цілими чисельниками й ненульовими знаменниками видати скорочену суму з додатним знаменником. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 16. Генератор паролів
1. Початковий рівень. Створити самостійну консольну Java-програму «Генератор паролів». Ввести довжину 8..64 та seed; генератор навчальних рядків використовує A–Z і 0–9, результат повторюється для seed; не використовувати як секрет. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Генератор паролів»: залежність від сторонньої бібліотеки, тести. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Ввести довжину 8..64 та seed; генератор навчальних рядків використовує A–Z і 0–9, результат повторюється для seed; не використовувати як секрет. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Генератор паролів»: залежність від сторонньої бібліотеки, тести. Ввести довжину 8..64 та seed; генератор навчальних рядків використовує A–Z і 0–9, результат повторюється для seed; не використовувати як секрет. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 17. Черга завдань
1. Початковий рівень. Створити самостійну консольну Java-програму «Черга завдань». Для завдань із назвою та пріоритетом 1..5 видати порядок виконання від 5 до 1, за нічиєї зберегти порядок додавання. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Черга завдань»: модуль з API, тести порядку обробки. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для завдань із назвою та пріоритетом 1..5 видати порядок виконання від 5 до 1, за нічиєї зберегти порядок додавання. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Черга завдань»: модуль з API, тести порядку обробки. Для завдань із назвою та пріоритетом 1..5 видати порядок виконання від 5 до 1, за нічиєї зберегти порядок додавання. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 18. Бронювання приміщень
1. Початковий рівень. Створити самостійну консольну Java-програму «Бронювання приміщень». Для кімнати й інтервалу LocalDateTime (початок раніше кінця) перевірити перетин бронювань; дотик кінців дозволений, видати рішення. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Бронювання приміщень»: тести перетину інтервалів дат. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для кімнати й інтервалу LocalDateTime (початок раніше кінця) перевірити перетин бронювань; дотик кінців дозволений, видати рішення. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Бронювання приміщень»: тести перетину інтервалів дат. Для кімнати й інтервалу LocalDateTime (початок раніше кінця) перевірити перетин бронювань; дотик кінців дозволений, видати рішення. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 19. Календар свят
1. Початковий рівень. Створити самостійну консольну Java-програму «Календар свят». Для року й переліку свят MonthDay видати дати свят за місяцем; 29 лютого в невисокосному році пропустити. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Календар свят»: Gradle-проєкт, тести обчислення рухомих свят. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для року й переліку свят MonthDay видати дати свят за місяцем; 29 лютого в невисокосному році пропустити. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Календар свят»: Gradle-проєкт, тести обчислення рухомих свят. Для року й переліку свят MonthDay видати дати свят за місяцем; 29 лютого в невисокосному році пропустити. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 20. Кредитний калькулятор
1. Початковий рівень. Створити самостійну консольну Java-програму «Кредитний калькулятор». Для суми P>0, річної ставки r≥0 і місяців n>0 обчислити ануїтет P*i/(1-(1+i)^(-n)), i=r/1200; при r=0 видати P/n. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Кредитний калькулятор»: графік платежів, тести точності BigDecimal. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для суми P>0, річної ставки r≥0 і місяців n>0 обчислити ануїтет P*i/(1-(1+i)^(-n)), i=r/1200; при r=0 видати P/n. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Кредитний калькулятор»: графік платежів, тести точності BigDecimal. Для суми P>0, річної ставки r≥0 і місяців n>0 обчислити ануїтет P*i/(1-(1+i)^(-n)), i=r/1200; при r=0 видати P/n. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 21. Розбір CSV
1. Початковий рівень. Створити самостійну консольну Java-програму «Розбір CSV». Розібрати CSV із колонками name,age та роздільником комою без лапок; age=0..120, неправильний рядок повідомити з номером. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Розбір CSV»: бібліотека з тестами крайніх випадків формату. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Розібрати CSV із колонками name,age та роздільником комою без лапок; age=0..120, неправильний рядок повідомити з номером. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Розбір CSV»: бібліотека з тестами крайніх випадків формату. Розібрати CSV із колонками name,age та роздільником комою без лапок; age=0..120, неправильний рядок повідомити з номером. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 22. Гра «Життя»
1. Початковий рівень. Створити самостійну консольну Java-програму «Гра „Життя“». Для прямокутної сітки 0/1 виконати крок «Життя»: народження за 3 сусідів, виживання за 2–3; за межами сітки клітини мертві. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Гра „Життя“»: модулі логіки та консолі, тести поколінь. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для прямокутної сітки 0/1 виконати крок «Життя»: народження за 3 сусідів, виживання за 2–3; за межами сітки клітини мертві. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Гра „Життя“»: модулі логіки та консолі, тести поколінь. Для прямокутної сітки 0/1 виконати крок «Життя»: народження за 3 сусідів, виживання за 2–3; за межами сітки клітини мертві. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 23. Правила оцінювання
1. Початковий рівень. Створити самостійну консольну Java-програму «Правила оцінювання». Для балів 0..100 видати A від 90, B від 82, C від 74, D від 64, E від 60, F нижче; інші значення відхилити. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Правила оцінювання»: @ParameterizedTest для шкал оцінювання. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для балів 0..100 видати A від 90, B від 82, C від 74, D від 64, E від 60, F нижче; інші значення відхилити. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Правила оцінювання»: @ParameterizedTest для шкал оцінювання. Для балів 0..100 видати A від 90, B від 82, C від 74, D від 64, E від 60, F нижче; інші значення відхилити. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 24. Планувальник ліфтів
1. Початковий рівень. Створити самостійну консольну Java-програму «Планувальник ліфтів». Для поточного поверху 1..20 і запитів видати маршрут до найближчого запиту, за нічиєї нижчий поверх; виконані запити прибрати. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Планувальник ліфтів»: алгоритм обслуговування викликів із тестами. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для поточного поверху 1..20 і запитів видати маршрут до найближчого запиту, за нічиєї нижчий поверх; виконані запити прибрати. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Планувальник ліфтів»: алгоритм обслуговування викликів із тестами. Для поточного поверху 1..20 і запитів видати маршрут до найближчого запиту, за нічиєї нижчий поверх; виконані запити прибрати. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 25. Шаблонізатор рядків
1. Початковий рівень. Створити самостійну консольну Java-програму «Шаблонізатор рядків». Замінити в шаблоні маркери {name} і {count} заданими значеннями; невідомий маркер лишити, видати отриманий рядок. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Шаблонізатор рядків»: простий шаблонізатор із тестами підстановок. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Замінити в шаблоні маркери {name} і {count} заданими значеннями; невідомий маркер лишити, видати отриманий рядок. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Шаблонізатор рядків»: простий шаблонізатор із тестами підстановок. Замінити в шаблоні маркери {name} і {count} заданими значеннями; невідомий маркер лишити, видати отриманий рядок. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 26. Статистика спортсменів
1. Початковий рівень. Створити самостійну консольну Java-програму «Статистика спортсменів». Для спортсменів із ім’ям і часом забігу>0 видати рейтинг за зростанням часу; однаковий час дає однакове місце. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Статистика спортсменів»: Gradle із каталогом версій, тести. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для спортсменів із ім’ям і часом забігу>0 видати рейтинг за зростанням часу; однаковий час дає однакове місце. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Статистика спортсменів»: Gradle із каталогом версій, тести. Для спортсменів із ім’ям і часом забігу>0 видати рейтинг за зростанням часу; однаковий час дає однакове місце. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 27. Облік інвентарю
1. Початковий рівень. Створити самостійну консольну Java-програму «Облік інвентарю». Для інвентарю з кодом і кількістю≥0 провести прихід чи видачу; нестачу відхилити, видати залишки за кодом. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Облік інвентарю»: Maven-профілі, тести сховища в пам’яті. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для інвентарю з кодом і кількістю≥0 провести прихід чи видачу; нестачу відхилити, видати залишки за кодом. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Облік інвентарю»: Maven-профілі, тести сховища в пам’яті. Для інвентарю з кодом і кількістю≥0 провести прихід чи видачу; нестачу відхилити, видати залишки за кодом. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 28. Алгоритми сортування
1. Початковий рівень. Створити самостійну консольну Java-програму «Алгоритми сортування». Відсортувати масив цілих бульбашкою та вставками; видати обидва результати і кількість порівнянь, порожній масив дозволений. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Алгоритми сортування»: порівняльні тести сортувань, @RepeatedTest. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Відсортувати масив цілих бульбашкою та вставками; видати обидва результати і кількість порівнянь, порожній масив дозволений. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Алгоритми сортування»: порівняльні тести сортувань, @RepeatedTest. Відсортувати масив цілих бульбашкою та вставками; видати обидва результати і кількість порівнянь, порожній масив дозволений. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 29. Конвертер кольорів
1. Початковий рівень. Створити самостійну консольну Java-програму «Конвертер кольорів». Перетворити RGB із трьох цілих 0..255 на HEX #RRGGBB і назад; неправильну довжину чи символ відхилити. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Конвертер кольорів»: тести перетворень RGB, HSL, HEX. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Перетворити RGB із трьох цілих 0..255 на HEX #RRGGBB і назад; неправильну довжину чи символ відхилити. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Конвертер кольорів»: тести перетворень RGB, HSL, HEX. Перетворити RGB із трьох цілих 0..255 на HEX #RRGGBB і назад; неправильну довжину чи символ відхилити. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Варіант 30. Трекер витрат
1. Початковий рівень. Створити самостійну консольну Java-програму «Трекер витрат». Для витрат із датою, категорією та сумою>0 видати підсумки категорій за заданий місяць; суми зберігати в копійках. Винести обчислення в окремий клас. Створити Maven-проєкт і щонайменше чотири тести JUnit: типовий випадок, межа, порожні або нульові дані та неправильне введення.
2. Базовий рівень. Створити самостійний Java-проєкт «Трекер витрат»: модульний застосунок з образом jlink і тестами. Відділити бібліотеку предметної логіки від консольного клієнта, описати їх залежності та публічний API. Для витрат із датою, категорією та сумою>0 видати підсумки категорій за заданий місяць; суми зберігати в копійках. Клієнт виводить таблицю результатів. Додати параметризовані тести для щонайменше шести наборів та тести винятків; збирання й запуск виконувати через Wrapper, пояснити дерево залежностей.
3. Високий рівень. Створити самостійний модульний Java-проєкт «Трекер витрат»: модульний застосунок з образом jlink і тестами. Для витрат із датою, категорією та сумою>0 видати підсумки категорій за заданий місяць; суми зберігати в копійках. Виділити бібліотеку API та CLI, задати JPMS-дескриптори й відтворюване збирання Maven або Gradle. Приймати --input=path, --options=name:value,..., --help, без аргументів запитувати дані з клавіатури; друкувати вирівняну таблицю та підсумки. Помилки до stderr, коди 0/2/1 для успіху, введення й збою. Додати тести предметних інваріантів, граничних значень і помилок, створити образ jlink та перевірити запуск із чистої робочої теки.
Порядок виконання та захисту роботи
- Визначити API, внутрішні пакети та інструмент збирання.
- Створити Wrapper і перевірити версію JDK у терміналі.
- Реалізувати предметний код окремо від CLI.
- Написати тести нормальних, граничних і помилкових даних.
- Зібрати чистий проєкт через Wrapper і показати звіт тестів.
- Пояснити один JPMS-дескриптор і дерево залежностей.