Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Для всіх рівнів подайте UML-діаграму класів із типами атрибутів, сигнатурами методів і зв’язками. Угоди _name та __name відображайте на схемі, пояснюючи їх зміст у Python. Валідація належить моделі; input і print залишайте зовнішньому інтерфейсу. Для високого рівня підтримайте CLI та клавіатурне меню, --help, структуровані аргументи --item з описаними полями, stderr і код 2 для неправильного вводу; успіх має код 0. Звіти містять вирівняні рядки об’єктів і підсумки. Усі тарифи й фізичні коефіцієнти навчальні; жодні зовнішні рахунки не використовуються.
Варіанти
Варіант 1. Автомобіль і гараж
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Car, яка читає марку, пробіг 0..1000000 км і паливо 0..60 л. Реалізувати ініціалізатор, анотації та операцію: поїздка d км витрачає 0.08*d літра, збільшує пробіг; нестачу відхилити. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Car, яка читає марку, пробіг 0..1000000 км і паливо 0..60 л. Реалізувати ініціалізатор, анотації та операцію: поїздка d км витрачає 0.08*d літра, збільшує пробіг; нестачу відхилити. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Car, яка читає марку, пробіг 0..1000000 км і паливо 0..60 л. Реалізувати ініціалізатор, анотації та операцію: поїздка d км витрачає 0.08*d літра, збільшує пробіг; нестачу відхилити. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Garage агрегує до 10 автомобілів; додати, знайти за маркою, показати сумарний пробіг. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 2. Смартфон
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Phone, яка читає модель і заряд 0..100. Реалізувати ініціалізатор, анотації та операцію: заряджання додає відсотки до 100; використання віднімає, не дозволяючи від’ємного заряду. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Phone, яка читає модель і заряд 0..100. Реалізувати ініціалізатор, анотації та операцію: заряджання додає відсотки до 100; використання віднімає, не дозволяючи від’ємного заряду. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Phone, яка читає модель і заряд 0..100. Реалізувати ініціалізатор, анотації та операцію: заряджання додає відсотки до 100; використання віднімає, не дозволяючи від’ємного заряду. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Phone має окремий список назв застосунків; classmethod читає модель:заряд, відхиляє дублікати застосунків. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 3. Рецепт
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Recipe, яка читає назву, порції 1..20 і масу інгредієнта 1..5000 г. Реалізувати ініціалізатор, анотації та операцію: масштабування змінює маси пропорційно новому числу порцій. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Recipe, яка читає назву, порції 1..20 і масу інгредієнта 1..5000 г. Реалізувати ініціалізатор, анотації та операцію: масштабування змінює маси пропорційно новому числу порцій. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Recipe, яка читає назву, порції 1..20 і масу інгредієнта 1..5000 г. Реалізувати ініціалізатор, анотації та операцію: масштабування змінює маси пропорційно новому числу порцій. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Recipe володіє списком Ingredient із назвою, масою й ккал на 100 г; обчислює загальну калорійність. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 4. Навчальна банківська картка
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Card, яка читає ім’я, баланс 0..100000 коп і денний ліміт 0..10000 коп. Реалізувати ініціалізатор, анотації та операцію: списання зменшує баланс, але не перевищує залишок чи невикористаний ліміт. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Card, яка читає ім’я, баланс 0..100000 коп і денний ліміт 0..10000 коп. Реалізувати ініціалізатор, анотації та операцію: списання зменшує баланс, але не перевищує залишок чи невикористаний ліміт. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Card, яка читає ім’я, баланс 0..100000 коп і денний ліміт 0..10000 коп. Реалізувати ініціалізатор, анотації та операцію: списання зменшує баланс, але не перевищує залишок чи невикористаний ліміт. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: зберігати приватний навчальний PIN із 4 цифр та історію операцій; окрема команда починає новий день, реальних платежів немає. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 5. Акваріум
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Aquarium, яка читає назву та об’єм 10..1000 л. Реалізувати ініціалізатор, анотації та операцію: додавання риби збільшує кількість; навчальна норма 10 л на рибу. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Aquarium, яка читає назву та об’єм 10..1000 л. Реалізувати ініціалізатор, анотації та операцію: додавання риби збільшує кількість; навчальна норма 10 л на рибу. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Aquarium, яка читає назву та об’єм 10..1000 л. Реалізувати ініціалізатор, анотації та операцію: додавання риби збільшує кількість; навчальна норма 10 л на рибу. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Fish має вид і ознаку хижака; Aquarium агрегує риб, забороняє змішувати хижих і нехижих, виводить навантаження. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 6. Термостат
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Thermostat, яка читає поточну й цільову температуру 5..35. Реалізувати ініціалізатор, анотації та операцію: сеттер цільової температури перевіряє межі; режим heat, якщо поточна нижча за ціль, інакше idle. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Thermostat, яка читає поточну й цільову температуру 5..35. Реалізувати ініціалізатор, анотації та операцію: сеттер цільової температури перевіряє межі; режим heat, якщо поточна нижча за ціль, інакше idle. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Thermostat, яка читає поточну й цільову температуру 5..35. Реалізувати ініціалізатор, анотації та операцію: сеттер цільової температури перевіряє межі; режим heat, якщо поточна нижча за ціль, інакше idle. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: історія змін зберігає старе й нове значення; меню обслуговує до 5 незалежних термостатів. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 7. Читацький квиток
1. Початковий рівень. Створити консольну програму Python 3.14 із класом ReaderCard, яка читає ім’я та ліміт видач 1..10. Реалізувати ініціалізатор, анотації та операцію: видати й повернути назву книги, заборонити дублікати й перевищення ліміту. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом ReaderCard, яка читає ім’я та ліміт видач 1..10. Реалізувати ініціалізатор, анотації та операцію: видати й повернути назву книги, заборонити дублікати й перевищення ліміту. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом ReaderCard, яка читає ім’я та ліміт видач 1..10. Реалізувати ініціалізатор, анотації та операцію: видати й повернути назву книги, заборонити дублікати й перевищення ліміту. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Book створено незалежно; агрегувати книги з датами повернення, рахувати навчальний штраф 200 коп/день на задану дату. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 8. Кавова машина
1. Початковий рівень. Створити консольну програму Python 3.14 із класом CoffeeMachine, яка читає воду 0..2000 мл і каву 0..500 г. Реалізувати ініціалізатор, анотації та операцію: еспресо витрачає 30 мл і 8 г; за нестачі не змінювати стан. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом CoffeeMachine, яка читає воду 0..2000 мл і каву 0..500 г. Реалізувати ініціалізатор, анотації та операцію: еспресо витрачає 30 мл і 8 г; за нестачі не змінювати стан. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом CoffeeMachine, яка читає воду 0..2000 мл і каву 0..500 г. Реалізувати ініціалізатор, анотації та операцію: еспресо витрачає 30 мл і 8 г; за нестачі не змінювати стан. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: staticmethod повертає рецепт еспресо або американо 60 мл/8 г; меню поповнює резервуари й рахує приготовані напої. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 9. Туристичний похід
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Hike, яка читає назву та довжину 1..100 км. Реалізувати ініціалізатор, анотації та операцію: додати учасника з вагою спорядження 0..30 кг і вивести загальну вагу. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Hike, яка читає назву та довжину 1..100 км. Реалізувати ініціалізатор, анотації та операцію: додати учасника з вагою спорядження 0..30 кг і вивести загальну вагу. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Hike, яка читає назву та довжину 1..100 км. Реалізувати ініціалізатор, анотації та операцію: додати учасника з вагою спорядження 0..30 кг і вивести загальну вагу. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Backpack володіє Item із назвою та масою; Hike агрегує учасників, перевіряє ліміт рюкзака й формує розподіл. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 10. Електронний квиток
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Ticket, яка читає код рейсу й місце 1..60. Реалізувати ініціалізатор, анотації та операцію: змінити місце після перевірки діапазону. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Ticket, яка читає код рейсу й місце 1..60. Реалізувати ініціалізатор, анотації та операцію: змінити місце після перевірки діапазону. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Ticket, яка читає код рейсу й місце 1..60. Реалізувати ініціалізатор, анотації та операцію: змінити місце після перевірки діапазону. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: classmethod читає рейс:місце; Trip агрегує квитки й забороняє дублювати місце одного рейсу. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 11. Точка й відрізок
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Segment, яка читає координати двох точок від -100 до 100. Реалізувати ініціалізатор, анотації та операцію: властивості повертають довжину й середину відрізка. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Segment, яка читає координати двох точок від -100 до 100. Реалізувати ініціалізатор, анотації та операцію: властивості повертають довжину й середину відрізка. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Segment, яка читає координати двох точок від -100 до 100. Реалізувати ініціалізатор, анотації та операцію: властивості повертають довжину й середину відрізка. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Point незалежні; Segment агрегує точки, staticmethod рахує відстань; додати перевірку перетину лише горизонтальних і вертикальних відрізків. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 12. Будильник
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Alarm, яка читає час HH:MM і ознаку ввімкнення. Реалізувати ініціалізатор, анотації та операцію: додати цілу кількість хвилин із нормалізацією доби. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Alarm, яка читає час HH:MM і ознаку ввімкнення. Реалізувати ініціалізатор, анотації та операцію: додати цілу кількість хвилин із нормалізацією доби. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Alarm, яка читає час HH:MM і ознаку ввімкнення. Реалізувати ініціалізатор, анотації та операцію: додати цілу кількість хвилин із нормалізацією доби. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: classmethod читає час; список днів 1..7 задає повтори, меню перевіряє спрацювання для введених дня й часу. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 13. Гітара
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Guitar, яка читає назву і частоти 6 струн 20..1000 Гц. Реалізувати ініціалізатор, анотації та операцію: налаштувати струну 1..6, властивість повертає середню частоту. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Guitar, яка читає назву і частоти 6 струн 20..1000 Гц. Реалізувати ініціалізатор, анотації та операцію: налаштувати струну 1..6, властивість повертає середню частоту. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Guitar, яка читає назву і частоти 6 струн 20..1000 Гц. Реалізувати ініціалізатор, анотації та операцію: налаштувати струну 1..6, властивість повертає середню частоту. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: String створюються всередині Guitar; звіряти стрій із навчальними частотами 82.41, 110, 146.83, 196, 246.94, 329.63 із допуском 1 Гц. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 14. Спортивна команда
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Team, яка читає назву й місткість 1..20. Реалізувати ініціалізатор, анотації та операцію: додати гравця з віком 16..80 та зростом 140..230 см, відхилити перевищення місткості. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Team, яка читає назву й місткість 1..20. Реалізувати ініціалізатор, анотації та операцію: додати гравця з віком 16..80 та зростом 140..230 см, відхилити перевищення місткості. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Team, яка читає назву й місткість 1..20. Реалізувати ініціалізатор, анотації та операцію: додати гравця з віком 16..80 та зростом 140..230 см, відхилити перевищення місткості. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Player незалежні, Team агрегує; властивості середнього віку й зросту, пошук за ім’ям та список заявки. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 15. Рахунок-фактура
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Invoice, яка читає номер і навчальну ставку ПДВ 0..30 відсотків. Реалізувати ініціалізатор, анотації та операцію: додати позицію з ціною в копійках і кількістю 1..100; обчислити підсумок. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Invoice, яка читає номер і навчальну ставку ПДВ 0..30 відсотків. Реалізувати ініціалізатор, анотації та операцію: додати позицію з ціною в копійках і кількістю 1..100; обчислити підсумок. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Invoice, яка читає номер і навчальну ставку ПДВ 0..30 відсотків. Реалізувати ініціалізатор, анотації та операцію: додати позицію з ціною в копійках і кількістю 1..100; обчислити підсумок. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Invoice володіє Line; знижка 0..50 відсотків перед ПДВ, округлювати вниз до копійки, звіт містить базу, знижку, податок, оплату. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 16. Теплиця
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Greenhouse, яка читає назву й вологість 0..100. Реалізувати ініціалізатор, анотації та операцію: полив додає 10 відсотків, але не перевищує 100. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Greenhouse, яка читає назву й вологість 0..100. Реалізувати ініціалізатор, анотації та операцію: полив додає 10 відсотків, але не перевищує 100. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Greenhouse, яка читає назву й вологість 0..100. Реалізувати ініціалізатор, анотації та операцію: полив додає 10 відсотків, але не перевищує 100. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Plant агрегуються теплицею, кожна має бажаний мінімум вологості; звіт показує рослини, яким бракує вологи. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 17. Рюкзак героя
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Backpack, яка читає власника й місткість 1..100 кг. Реалізувати ініціалізатор, анотації та операцію: додати або вилучити предмет за унікальною назвою та масою 0.1..20 кг. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Backpack, яка читає власника й місткість 1..100 кг. Реалізувати ініціалізатор, анотації та операцію: додати або вилучити предмет за унікальною назвою та масою 0.1..20 кг. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Backpack, яка читає власника й місткість 1..100 кг. Реалізувати ініціалізатор, анотації та операцію: додати або вилучити предмет за унікальною назвою та масою 0.1..20 кг. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Item має лічильник створень, Backpack агрегує предмети; зміна не дозволяє перевищити вагу, звіт містить вільну місткість. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 18. Навчальна картка пацієнта
1. Початковий рівень. Створити консольну програму Python 3.14 із класом PatientCard, яка читає вигадане ім’я, масу 1..300 кг і зріст 0.5..2.5 м. Реалізувати ініціалізатор, анотації та операцію: властивість обчислює лише числовий ІМТ без діагнозів. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом PatientCard, яка читає вигадане ім’я, масу 1..300 кг і зріст 0.5..2.5 м. Реалізувати ініціалізатор, анотації та операцію: властивість обчислює лише числовий ІМТ без діагнозів. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом PatientCard, яка читає вигадане ім’я, масу 1..300 кг і зріст 0.5..2.5 м. Реалізувати ініціалізатор, анотації та операцію: властивість обчислює лише числовий ІМТ без діагнозів. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Visit із датою та навчальною приміткою створюється карткою; приватний код не потрапляє до repr, звіт містить число візитів, лише синтетичні дані. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 19. Ремонт кімнати
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Room, яка читає довжину 1..20 м, ширину 1..20 м, висоту 2..5 м. Реалізувати ініціалізатор, анотації та операцію: властивість повертає площу чотирьох стін. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Room, яка читає довжину 1..20 м, ширину 1..20 м, висоту 2..5 м. Реалізувати ініціалізатор, анотації та операцію: властивість повертає площу чотирьох стін. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Room, яка читає довжину 1..20 м, ширину 1..20 м, висоту 2..5 м. Реалізувати ініціалізатор, анотації та операцію: властивість повертає площу чотирьох стін. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: classmethod читає LxWxH; Room володіє отворами з площею, сума отворів не більша за площу стін, звіт містить площу фарбування. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 20. Ліфт
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Lift, яка читає число поверхів 2..30 і місткість 100..1000 кг. Реалізувати ініціалізатор, анотації та операцію: виклик на поверх 1..N переміщує кабіну лише за допустимого навантаження. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Lift, яка читає число поверхів 2..30 і місткість 100..1000 кг. Реалізувати ініціалізатор, анотації та операцію: виклик на поверх 1..N переміщує кабіну лише за допустимого навантаження. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Lift, яка читає число поверхів 2..30 і місткість 100..1000 кг. Реалізувати ініціалізатор, анотації та операцію: виклик на поверх 1..N переміщує кабіну лише за допустимого навантаження. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: окрема черга викликів екземпляра усуває дублікати, обробляє по порядку, звіт показує маршрут і число переходів. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 21. Навчальний кредит
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Loan, яка читає суму 100..100000 грн, ставку 0..30 відсотків, строк 1..24 місяці. Реалізувати ініціалізатор, анотації та операцію: обчислити платіж за рівними частками тіла та щомісячним відсотком на залишок. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Loan, яка читає суму 100..100000 грн, ставку 0..30 відсотків, строк 1..24 місяці. Реалізувати ініціалізатор, анотації та операцію: обчислити платіж за рівними частками тіла та щомісячним відсотком на залишок. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Loan, яка читає суму 100..100000 грн, ставку 0..30 відсотків, строк 1..24 місяці. Реалізувати ініціалізатор, анотації та операцію: обчислити платіж за рівними частками тіла та щомісячним відсотком на залишок. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Loan володіє рядками ScheduleRow; звіт містить тіло, відсоток, залишок, підсумки, навчальна модель без комісій. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 22. Метеостанція
1. Початковий рівень. Створити консольну програму Python 3.14 із класом WeatherStation, яка читає назву й температуру від -40 до 50. Реалізувати ініціалізатор, анотації та операцію: додати скінченний вимір, властивості повертають мінімум і максимум. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом WeatherStation, яка читає назву й температуру від -40 до 50. Реалізувати ініціалізатор, анотації та операцію: додати скінченний вимір, властивості повертають мінімум і максимум. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом WeatherStation, яка читає назву й температуру від -40 до 50. Реалізувати ініціалізатор, анотації та операцію: додати скінченний вимір, властивості повертають мінімум і максимум. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: classmethod читає назва:температура; Measurement має часову позначку, станція володіє вимірами, звіт за заданим інтервалом. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 23. Студентська група
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Group, яка читає назву й місткість 1..30. Реалізувати ініціалізатор, анотації та операцію: додати студента з оцінками 0..100, властивість повертає середнє групи. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Group, яка читає назву й місткість 1..30. Реалізувати ініціалізатор, анотації та операцію: додати студента з оцінками 0..100, властивість повертає середнє групи. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Group, яка читає назву й місткість 1..30. Реалізувати ініціалізатор, анотації та операцію: додати студента з оцінками 0..100, властивість повертає середнє групи. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Student незалежні, Group агрегує, staticmethod перевіряє оцінку, рейтинг середнього з іменем для однакових значень. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 24. Квартира й лічильники
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Apartment, яка читає номер та попередні й поточні показання 0..100000. Реалізувати ініціалізатор, анотації та операцію: поточні показання не можуть бути меншими за попередні; оплата витрата*4 навчальні грн. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Apartment, яка читає номер та попередні й поточні показання 0..100000. Реалізувати ініціалізатор, анотації та операцію: поточні показання не можуть бути меншими за попередні; оплата витрата*4 навчальні грн. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Apartment, яка читає номер та попередні й поточні показання 0..100000. Реалізувати ініціалізатор, анотації та операцію: поточні показання не можуть бути меншими за попередні; оплата витрата*4 навчальні грн. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Meter створюються квартирою для води й електрики, навчальні тарифи 30 і 4; звіт містить витрати й суму, оновлення атомарне. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 25. Електросамокат
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Scooter, яка читає код, заряд 0..100 і пробіг 0..10000 км. Реалізувати ініціалізатор, анотації та операцію: поїздка d км витрачає 2*d відсотки заряду і збільшує пробіг. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Scooter, яка читає код, заряд 0..100 і пробіг 0..10000 км. Реалізувати ініціалізатор, анотації та операцію: поїздка d км витрачає 2*d відсотки заряду і збільшує пробіг. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Scooter, яка читає код, заряд 0..100 і пробіг 0..10000 км. Реалізувати ініціалізатор, анотації та операцію: поїздка d км витрачає 2*d відсотки заряду і збільшує пробіг. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Rental створюється самокатом із тривалістю 1..120 хв, навчальна оплата 10+3*t грн; історія й підсумкова виручка. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 26. Музичний альбом
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Album, яка читає назву та рік 1900..2100. Реалізувати ініціалізатор, анотації та операцію: додати трек із назвою й тривалістю 1..1800 с, властивість повертає загальний час. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Album, яка читає назву та рік 1900..2100. Реалізувати ініціалізатор, анотації та операцію: додати трек із назвою й тривалістю 1..1800 с, властивість повертає загальний час. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Album, яка читає назву та рік 1900..2100. Реалізувати ініціалізатор, анотації та операцію: додати трек із назвою й тривалістю 1..1800 с, властивість повертає загальний час. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Track створюються альбомом; classmethod читає назва:секунди, меню шукає й вилучає треки, друкує час MM:SS. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 27. Шахова фігура
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Piece, яка читає назву та позицію a1..h8. Реалізувати ініціалізатор, анотації та операцію: сеттер перевіряє запис позиції й дозволяє зміну на іншу клітинку без правил гри. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Piece, яка читає назву та позицію a1..h8. Реалізувати ініціалізатор, анотації та операцію: сеттер перевіряє запис позиції й дозволяє зміну на іншу клітинку без правил гри. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Piece, яка читає назву та позицію a1..h8. Реалізувати ініціалізатор, анотації та операцію: сеттер перевіряє запис позиції й дозволяє зміну на іншу клітинку без правил гри. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Board агрегує Piece і забороняє дві фігури на клітинці; move змінює стан лише після перевірки, виводить ASCII-дошку. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 28. Фітнес-трекер
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Tracker, яка читає ім’я й ціль 1..50000 кроків. Реалізувати ініціалізатор, анотації та операцію: додати невід’ємну кількість кроків; властивість повертає прогрес у відсотках. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Tracker, яка читає ім’я й ціль 1..50000 кроків. Реалізувати ініціалізатор, анотації та операцію: додати невід’ємну кількість кроків; властивість повертає прогрес у відсотках. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Tracker, яка читає ім’я й ціль 1..50000 кроків. Реалізувати ініціалізатор, анотації та операцію: додати невід’ємну кількість кроків; властивість повертає прогрес у відсотках. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: DayRecord створюються трекером за датою, звіт показує тиждень і суму, ккал лише навчальна оцінка 0.04 на крок. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 29. Кінозал
1. Початковий рівень. Створити консольну програму Python 3.14 із класом CinemaHall, яка читає назву, ряди 1..20 і місця 1..30. Реалізувати ініціалізатор, анотації та операцію: забронювати або звільнити місце після перевірки координат і стану. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом CinemaHall, яка читає назву, ряди 1..20 і місця 1..30. Реалізувати ініціалізатор, анотації та операцію: забронювати або звільнити місце після перевірки координат і стану. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом CinemaHall, яка читає назву, ряди 1..20 і місця 1..30. Реалізувати ініціалізатор, анотації та операцію: забронювати або звільнити місце після перевірки координат і стану. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: Seat створюються залом, властивість заповненості; CLI приймає серію бронювань, друкує карту й підсумок. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Варіант 30. Вектор швидкості
1. Початковий рівень. Створити консольну програму Python 3.14 із класом Velocity, яка читає компоненти vx, vy від -100 до 100. Реалізувати ініціалізатор, анотації та операцію: властивості обчислюють модуль і кут atan2, для нульового вектора напрямок None. Вивести стан і результат. Подати UML класів із типами, методами й кратностями зв’язків.
2. Базовий рівень. Створити консольну програму Python 3.14 із класом Velocity, яка читає компоненти vx, vy від -100 до 100. Реалізувати ініціалізатор, анотації та операцію: властивості обчислюють модуль і кут atan2, для нульового вектора напрямок None. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Подати UML класів із типами, методами й кратностями зв’язків.
3. Високий рівень. Створити консольну програму Python 3.14 із класом Velocity, яка читає компоненти vx, vy від -100 до 100. Реалізувати ініціалізатор, анотації та операцію: властивості обчислюють модуль і кут atan2, для нульового вектора напрямок None. Вивести стан і результат. Додати властивість із перевіркою або обчислювану властивість, ValueError для порушення інваріантів; після відмови стан незмінний. Перевірити два незалежні екземпляри. Розширена модель: staticmethod створює вектор із полярних координат, Fleet агрегує до 10 векторів, звіт містить компоненти, модулі та сумарний вектор. Підтримати --help, іменовані параметри та --item із документованими полями; без аргументів клавіатурне меню. Помилки у stderr з кодом 2, успіх 0. Вивести таблицю та підсумки, подати п’ять перевірок. Подати UML класів із типами, методами й кратностями зв’язків.
Порядок виконання та захисту роботи
- Визначте відповідальність класу й інваріанти. Намалюйте UML до реалізації, потім звірте його з остаточним кодом.
- Реалізуйте ініціалізатор і методи з анотаціями. Колекції екземпляра створюйте в конструкторі, а не в атрибутах класу.
- Розділіть перевірку й зміну стану. Для похідних значень оберіть властивість замість дублювання даних.
- Перевірте два незалежні об’єкти, звичайну дію, межу та відмову. Після відмови перевірте незмінність попереднього стану.
- Перевірте альтернативний конструктор, рядкове подання та зв’язки об’єктів, якщо вони є у вашому рівні.
- Подайте код, UML, README з командами запуску та таблицю щонайменше п’яти перевірок; збережіть локальну історію Git.
- На захисті поясніть
self, атрибут класу, сеттер і вибір композиції або агрегації. Покажіть стан у налагоджувачі.