Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
У кожному рівні потрібна UML-діаграма класів із властивостями, видимістю, конструкторами й методами. Модель не читає консоль; код введення окремо перетворює текст і показує помилки. Для високого рівня використайте CLI з --help, іменованими аргументами та повторюваним --item зі структурованим значенням; за відсутності аргументів запропонуйте введення з клавіатури. Помилку друкуйте в System.err, завершуйте з кодом 2; успішний запуск має код 0. Звіт містить таблицю й підсумок. Тарифи, паролі, медичні й фінансові сюжети є навчальними локальними моделями з явно заданими правилами.
Варіанти
Варіант 1. Кредитна картка
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести номер із 16 цифр, ліміт 0..1000000 копійок і суму покупки; клас Card з приватним боргом, методом purchase та маскою з останніх чотирьох цифр; борг не перевищує ліміт. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести номер із 16 цифр, ліміт 0..1000000 копійок і суму покупки; клас Card з приватним боргом, методом purchase та маскою з останніх чотирьох цифр; борг не перевищує ліміт. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести номер із 16 цифр, ліміт 0..1000000 копійок і суму покупки; клас Card з приватним боргом, методом purchase та маскою з останніх чотирьох цифр; борг не перевищує ліміт. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: погашення боргу й історія до 20 операцій. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 2. Термостат
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести поточну й цільову температури −30..50 °C; клас Thermostat із перевіреними сетерами та властивістю heating, істинною, коли поточна нижча за цільову. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести поточну й цільову температури −30..50 °C; клас Thermostat із перевіреними сетерами та властивістю heating, істинною, коли поточна нижча за цільову. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести поточну й цільову температури −30..50 °C; клас Thermostat із перевіреними сетерами та властивістю heating, істинною, коли поточна нижча за цільову. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: режими off, heat, eco; eco знижує задану ціль на 2 °C. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 3. Звичайний дріб
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести чисельник −10000..10000 і ненульовий знаменник −10000..10000; клас Fraction скорочує дріб за НСД та зберігає додатний знаменник; вивести нормальну форму. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести чисельник −10000..10000 і ненульовий знаменник −10000..10000; клас Fraction скорочує дріб за НСД та зберігає додатний знаменник; вивести нормальну форму. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести чисельник −10000..10000 і ненульовий знаменник −10000..10000; клас Fraction скорочує дріб за НСД та зберігає додатний знаменник; вивести нормальну форму. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: методи додавання і множення з перевіркою допустимих меж. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 4. Час доби
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести годину 0..23, хвилину 0..59 та зміщення −10000..10000 хвилин; клас TimeOfDay зберігає хвилини доби й повертає час після зсуву за модулем 1440. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести годину 0..23, хвилину 0..59 та зміщення −10000..10000 хвилин; клас TimeOfDay зберігає хвилини доби й повертає час після зсуву за модулем 1440. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести годину 0..23, хвилину 0..59 та зміщення −10000..10000 хвилин; клас TimeOfDay зберігає хвилини доби й повертає час після зсуву за модулем 1440. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: послідовність зсувів і лічильник переходів через північ. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 5. Автомобіль
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести місткість бака 1..100 л, залишок, витрату 1..30 л/100 км і відстань; клас Car змінює пробіг та пальне лише за достатнього запасу. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести місткість бака 1..100 л, залишок, витрату 1..30 л/100 км і відстань; клас Car змінює пробіг та пальне лише за достатнього запасу. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести місткість бака 1..100 л, залишок, витрату 1..30 л/100 км і відстань; клас Car змінює пробіг та пальне лише за достатнього запасу. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: метод refuel, звіт про сумарний пробіг і відмови. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 6. Бібліотечна книга
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести назву книги, читача та дію borrow або return; клас Book з приватним станом видачі відхиляє повторну видачу й повернення невиданої книги. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести назву книги, читача та дію borrow або return; клас Book з приватним станом видачі відхиляє повторну видачу й повернення невиданої книги. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести назву книги, читача та дію borrow або return; клас Book з приватним станом видачі відхиляє повторну видачу й повернення невиданої книги. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: лічильник успішних видач; пакети library та app. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 7. Прямокутник на площині
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести координати нижнього лівого кута і додатні ширину та висоту; клас Rectangle має обчислювану площу й метод перевірки перетину з другим прямокутником; дотик вважати перетином. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести координати нижнього лівого кута і додатні ширину та висоту; клас Rectangle має обчислювану площу й метод перевірки перетину з другим прямокутником; дотик вважати перетином. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести координати нижнього лівого кута і додатні ширину та висоту; клас Rectangle має обчислювану площу й метод перевірки перетину з другим прямокутником; дотик вважати перетином. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: повернення площі спільної частини та таблиця пар. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 8. Студентський квиток
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести ім’я, номер квитка з 8 цифр і рік навчання 1..6; клас StudentCard має первинний конструктор і вторинний з роком 1. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести ім’я, номер квитка з 8 цифр і рік навчання 1..6; клас StudentCard має первинний конструктор і вторинний з роком 1. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести ім’я, номер квитка з 8 цифр і рік навчання 1..6; клас StudentCard має первинний конструктор і вторинний з роком 1. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: зміна року з перевіркою та незмінний номер. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 9. Смартфон
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести заряд 0..100 та тривалість 0..60 хвилин; клас Phone витрачає 2 відсоткові пункти за хвилину й відхиляє дію за нестачі заряду. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести заряд 0..100 та тривалість 0..60 хвилин; клас Phone витрачає 2 відсоткові пункти за хвилину й відхиляє дію за нестачі заряду. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести заряд 0..100 та тривалість 0..60 хвилин; клас Phone витрачає 2 відсоткові пункти за хвилину й відхиляє дію за нестачі заряду. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: режим eco з витратою 1 пункт/хв та метод charge. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 10. Кавоварка
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести воду 0..2000 мл і каву 0..500 г; клас CoffeeMachine для однієї порції витрачає 150 мл і 10 г; відхилити дію без достатніх запасів. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести воду 0..2000 мл і каву 0..500 г; клас CoffeeMachine для однієї порції витрачає 150 мл і 10 г; відхилити дію без достатніх запасів. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести воду 0..2000 мл і каву 0..500 г; клас CoffeeMachine для однієї порції витрачає 150 мл і 10 г; відхилити дію без достатніх запасів. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: поповнення запасів і підсумок приготованих порцій. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 11. Вектор на площині
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести дві скінченні координати −10000..10000; клас Vector обчислює довжину та повертає нормалізований вектор; нульовий вектор не нормалізувати. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести дві скінченні координати −10000..10000; клас Vector обчислює довжину та повертає нормалізований вектор; нульовий вектор не нормалізувати. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести дві скінченні координати −10000..10000; клас Vector обчислює довжину та повертає нормалізований вектор; нульовий вектор не нормалізувати. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: метод кута між двома ненульовими векторами з обмеженням косинуса до −1..1. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 12. Товар у магазині
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести назву, ціну 0..1000000 копійок і знижку 0..100%; клас Product з приватними сетерами повертає кінцеву цілу ціну з округленням донизу. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести назву, ціну 0..1000000 копійок і знижку 0..100%; клас Product з приватними сетерами повертає кінцеву цілу ціну з округленням донизу. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести назву, ціну 0..1000000 копійок і знижку 0..100%; клас Product з приватними сетерами повертає кінцеву цілу ціну з округленням донизу. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: методи зміни ціни та знижки, підсумок для кількості 1..100. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 13. Двотарифний лічильник
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести попередні та нові показання день/ніч; клас Meter дозволяє лише невід’ємні зростаючі показання; ціна дня 4, ночі 2 умовні одиниці за кВт·год. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести попередні та нові показання день/ніч; клас Meter дозволяє лише невід’ємні зростаючі показання; ціна дня 4, ночі 2 умовні одиниці за кВт·год. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести попередні та нові показання день/ніч; клас Meter дозволяє лише невід’ємні зростаючі показання; ціна дня 4, ночі 2 умовні одиниці за кВт·год. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: історія періодів і окремі денні/нічні підсумки. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 14. Комплексне число
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести дійсну та уявну частини −10000..10000; клас Complex обчислює модуль і аргумент через atan2; для нуля аргумент позначити невизначеним. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести дійсну та уявну частини −10000..10000; клас Complex обчислює модуль і аргумент через atan2; для нуля аргумент позначити невизначеним. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести дійсну та уявну частини −10000..10000; клас Complex обчислює модуль і аргумент через atan2; для нуля аргумент позначити невизначеним. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: методи додавання та множення без перевантаження операторів. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 15. Спортсмен
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести ім’я спортсмена, рекорд 0..1000 с і ім’я тренера; клас Athlete з lateinit-тренером та методом призначення; новий додатний менший час покращує рекорд. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести ім’я спортсмена, рекорд 0..1000 с і ім’я тренера; клас Athlete з lateinit-тренером та методом призначення; новий додатний менший час покращує рекорд. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести ім’я спортсмена, рекорд 0..1000 с і ім’я тренера; клас Athlete з lateinit-тренером та методом призначення; новий додатний менший час покращує рекорд. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: звіт до та після призначення тренера, журнал покращень. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 16. Паркувальне місце
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести номер місця, час в’їзду та виїзду у хвилинах 0..1440; клас ParkingPlace не дозволяє подвійний в’їзд; оплату рахувати по 20 одиниць за почату годину. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести номер місця, час в’їзду та виїзду у хвилинах 0..1440; клас ParkingPlace не дозволяє подвійний в’їзд; оплату рахувати по 20 одиниць за почату годину. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести номер місця, час в’їзду та виїзду у хвилинах 0..1440; клас ParkingPlace не дозволяє подвійний в’їзд; оплату рахувати по 20 одиниць за почату годину. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: послідовність паркувань однієї доби та сумарний дохід. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 17. Точка GPS
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести широту −90..90 і довготу −180..180 двох точок; клас GeoPoint повертає відстань за гаверсинусом з радіусом Землі 6371 км. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести широту −90..90 і довготу −180..180 двох точок; клас GeoPoint повертає відстань за гаверсинусом з радіусом Землі 6371 км. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести широту −90..90 і довготу −180..180 двох точок; клас GeoPoint повертає відстань за гаверсинусом з радіусом Землі 6371 км. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: таблиця відстаней від початкової точки; обмеження проміжного аргументу до 0..1. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 18. Секундомір
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести команди start і stop з цілими часовими позначками 0..1000000 мс; клас Stopwatch відхиляє stop до start і від’ємну тривалість. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести команди start і stop з цілими часовими позначками 0..1000000 мс; клас Stopwatch відхиляє stop до start і від’ємну тривалість. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести команди start і stop з цілими часовими позначками 0..1000000 мс; клас Stopwatch відхиляє stop до start і від’ємну тривалість. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: кола з явними часовими позначками та загальна тривалість без реального очікування. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 19. Квартира
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести назву квартири та площі трьох кімнат 1..200 м²; клас Apartment обчислює сумарну площу й плату по 15 умовних одиниць за м². Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести назву квартири та площі трьох кімнат 1..200 м²; клас Apartment обчислює сумарну площу й плату по 15 умовних одиниць за м². Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести назву квартири та площі трьох кімнат 1..200 м²; клас Apartment обчислює сумарну площу й плату по 15 умовних одиниць за м². Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: заміна площі кімнати через перевірений метод і порівняльний звіт. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 20. Вантажний ліфт
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести поверх 1..20, вантаж 0..1000 кг і цільовий поверх; клас Lift дозволяє рух лише з вантажем до 600 кг, поточний поверх має private set. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести поверх 1..20, вантаж 0..1000 кг і цільовий поверх; клас Lift дозволяє рух лише з вантажем до 600 кг, поточний поверх має private set. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести поверх 1..20, вантаж 0..1000 кг і цільовий поверх; клас Lift дозволяє рух лише з вантажем до 600 кг, поточний поверх має private set. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: команди load, unload, move і журнал виконаних переміщень. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 21. Коло
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести додатний радіус до 10000; клас Circle в пакеті geometry обчислює площу та довжину кола через kotlin.math.PI. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести додатний радіус до 10000; клас Circle в пакеті geometry обчислює площу та довжину кола через kotlin.math.PI. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести додатний радіус до 10000; клас Circle в пакеті geometry обчислює площу та довжину кола через kotlin.math.PI. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: переміщення центра, перевірка належності точки та пакет app. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 22. Будильник
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести час сигналу та поточний час у хвилинах доби 0..1439; клас Alarm з init-перевіркою обчислює хвилини до наступного сигналу за модулем 1440. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести час сигналу та поточний час у хвилинах доби 0..1439; клас Alarm з init-перевіркою обчислює хвилини до наступного сигналу за модулем 1440. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести час сигналу та поточний час у хвилинах доби 0..1439; клас Alarm з init-перевіркою обчислює хвилини до наступного сигналу за модулем 1440. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: метод snooze на 1..60 хв і стан enabled. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 23. Грошова сума
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести гривні 0..1000000 і копійки 0..99; клас Money зберігає загальні копійки Long, має вторинний конструктор із загальної суми. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести гривні 0..1000000 і копійки 0..99; клас Money зберігає загальні копійки Long, має вторинний конструктор із загальної суми. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести гривні 0..1000000 і копійки 0..99; клас Money зберігає загальні копійки Long, має вторинний конструктор із загальної суми. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: методи add і subtract без Double та без від’ємного результату. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 24. Лампа з диммером
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести потужність 1..500 Вт, яскравість 0..100% і час 0..24 год; клас Lamp має перевірений сетер та обчислює енергію як потужність × частка яскравості × години / 1000. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести потужність 1..500 Вт, яскравість 0..100% і час 0..24 год; клас Lamp має перевірений сетер та обчислює енергію як потужність × частка яскравості × години / 1000. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести потужність 1..500 Вт, яскравість 0..100% і час 0..24 год; клас Lamp має перевірений сетер та обчислює енергію як потужність × частка яскравості × години / 1000. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: стан on/off та накопичення енергії кількох сеансів. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 25. Пляшки з водою
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести місткості й залишки двох пляшок у мл 1..10000 та обсяг переливання; клас Bottle забезпечує межі від 0 до місткості; відхилити переливання без зміни обох об’єктів. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести місткості й залишки двох пляшок у мл 1..10000 та обсяг переливання; клас Bottle забезпечує межі від 0 до місткості; відхилити переливання без зміни обох об’єктів. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести місткості й залишки двох пляшок у мл 1..10000 та обсяг переливання; клас Bottle забезпечує межі від 0 до місткості; відхилити переливання без зміни обох об’єктів. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: послідовність переливань і перевірка збереження загальної кількості води. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 26. Календарна дата
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести рік 1900..2100, місяць 1..12 і день; клас Date перевіряє довжину місяця та високосність за григоріанським правилом. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести рік 1900..2100, місяць 1..12 і день; клас Date перевіряє довжину місяця та високосність за григоріанським правилом. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести рік 1900..2100, місяць 1..12 і день; клас Date перевіряє довжину місяця та високосність за григоріанським правилом. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: методи наступного й попереднього дня в межах дозволених років. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 27. Робот на сітці
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести координати 0..9 та команду up, down, left або right; клас Robot змінює координати лише в межах сітки 10×10. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести координати 0..9 та команду up, down, left або right; клас Robot змінює координати лише в межах сітки 10×10. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести координати 0..9 та команду up, down, left або right; клас Robot змінює координати лише в межах сітки 10×10. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: маршрут до 100 команд, лічильник прийнятих і відхилених кроків. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 28. Віртуальний вихованець
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести голод і енергію 0..100 та дію feed, play або rest; клас Pet: feed зменшує голод на 20, play збільшує голод на 10 і зменшує енергію на 15, rest додає 20 енергії; обмежити результат 0..100. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести голод і енергію 0..100 та дію feed, play або rest; клас Pet: feed зменшує голод на 20, play збільшує голод на 10 і зменшує енергію на 15, rest додає 20 енергії; обмежити результат 0..100. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести голод і енергію 0..100 та дію feed, play або rest; клас Pet: feed зменшує голод на 20, play збільшує голод на 10 і зменшує енергію на 15, rest додає 20 енергії; обмежити результат 0..100. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: журнал станів і відмова play за енергії нижче 15. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 29. Електромобіль
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести місткість батареї 1..200 кВт·год, заряд і витрату 1..50 кВт·год/100 км; клас ElectricCar обчислює запас ходу й виконує поїздку лише за достатнього заряду. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести місткість батареї 1..200 кВт·год, заряд і витрату 1..50 кВт·год/100 км; клас ElectricCar обчислює запас ходу й виконує поїздку лише за достатнього заряду. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести місткість батареї 1..200 кВт·год, заряд і витрату 1..50 кВт·год/100 км; клас ElectricCar обчислює запас ходу й виконує поїздку лише за достатнього заряду. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: метод recharge та підсумок витраченої енергії. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Варіант 30. Пароль користувача
1. Початковий рівень. Створити консольну програму Kotlin/JVM: ввести навчальний пароль довжини 8..32 та дві спроби; клас Password має приватне значення, метод verify і зміну лише за правильного старого пароля; сам пароль ніколи не виводити. Вивести стан до та після дії або зрозумілу причину відмови. Подати UML класів і перевірити інваріанти в конструкторі та методах.
2. Базовий рівень. Створити консольну програму Kotlin/JVM: ввести навчальний пароль довжини 8..32 та дві спроби; клас Password має приватне значення, метод verify і зміну лише за правильного старого пароля; сам пароль ніколи не виводити. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Подати UML класів і перевірити інваріанти в конструкторі та методах.
3. Високий рівень. Створити консольну програму Kotlin/JVM: ввести навчальний пароль довжини 8..32 та дві спроби; клас Password має приватне значення, метод verify і зміну лише за правильного старого пароля; сам пароль ніколи не виводити. Вивести стан до та після дії або зрозумілу причину відмови. Обробити до 20 наборів із клавіатури, відхилити неправильні значення до зміни стану, показати таблицю результатів. Розширення: лічильник невдалих спроб і блокування після трьох; лише локальні вигадані дані, без збереження у файл. Реалізувати --help, іменовані аргументи та повторюваний --item з описаними полями; без аргументів читати клавіатуру. Помилки: stderr і код 2; успіх: код 0. Вивести вирівняну таблицю та підсумки, подати п’ять перевірок із межами й відмовою. Подати UML класів і перевірити інваріанти в конструкторі та методах.
Порядок виконання та захисту роботи
- Запишіть вхідні дані, одиниці, межі та інваріанти.
- Намалюйте UML і визначте, які властивості доступні для запису.
- Реалізуйте конструктор і перевірку кожного способу зміни.
- Перевірте звичайний випадок, межу, відмову, незмінність стану після відмови та незалежність двох об’єктів.
- Відокремте модель у пакет; додайте консольний інтерфейс.
- Подайте README, UML, код, очікувані та фактичні результати щонайменше п’яти перевірок, команди збирання і запуску.
- На захисті покажіть
initі сетер у налагоджувачі та поясніть, чому обчислювані значення не зберігаються окремо.