Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Усі рівні потребують UML-діаграми класів із напрямками наслідування або реалізації, сигнатурами й анотаціями. Для Protocol поясніть, чому клас відповідає йому без явного наслідування; для ABC покажіть відмову створення неповного класу. У високому рівні передбачте іменовані CLI-параметри та повторювані --item для записів із документованими полями, --help і клавіатурне меню без аргументів. Помилки йдуть у stderr із кодом 2, успіх – із кодом 0. Виводьте поліморфну таблицю і підсумки. Усі ставки, ціни й норми умов задач навчальні. Жодні повідомлення, платежі чи запити не надсилаються назовні.
Варіанти
Варіант 1. Зоопарк
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид cat або horse і масу 1..1000 кг. Спільний контракт: ABC Animal, метод food(); реалізації: Cat потребує 0.03*mass кг корму, Horse – 0.02*mass. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид cat або horse і масу 1..1000 кг. Спільний контракт: ABC Animal, метод food(); реалізації: Cat потребує 0.03*mass кг корму, Horse – 0.02*mass. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид cat або horse і масу 1..1000 кг. Спільний контракт: ABC Animal, метод food(); реалізації: Cat потребує 0.03*mass кг корму, Horse – 0.02*mass. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: згрупувати тварин за видом і підрахувати раціони; міксин форматує назву. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 2. Сповіщення
1. Початковий рівень. Створити консольну програму Python 3.14: ввести тип email, sms, push і непорожній текст до 100 символів. Спільний контракт: Protocol Notifier, метод format(text); реалізації: Email додає префікс EMAIL:, Sms – SMS:, Push – PUSH:; лише локальне формування рядка. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести тип email, sms, push і непорожній текст до 100 символів. Спільний контракт: Protocol Notifier, метод format(text); реалізації: Email додає префікс EMAIL:, Sms – SMS:, Push – PUSH:; лише локальне формування рядка. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести тип email, sms, push і непорожній текст до 100 символів. Спільний контракт: Protocol Notifier, метод format(text); реалізації: Email додає префікс EMAIL:, Sms – SMS:, Push – PUSH:; лише локальне формування рядка. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: масова обробка до 20 синтетичних адресатів; жодних зовнішніх надсилань. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 3. Податки з доходів
1. Початковий рівень. Створити консольну програму Python 3.14: ввести тип salary або gift і суму 0..100000 грн. Спільний контракт: ABC Income, метод tax(); реалізації: навчальний податок Salary – 18 відсотків, Gift – 5 відсотків. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести тип salary або gift і суму 0..100000 грн. Спільний контракт: ABC Income, метод tax(); реалізації: навчальний податок Salary – 18 відсотків, Gift – 5 відсотків. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести тип salary або gift і суму 0..100000 грн. Спільний контракт: ABC Income, метод tax(); реалізації: навчальний податок Salary – 18 відсотків, Gift – 5 відсотків. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: декларація до 20 доходів, підсумок за видами й загальна сума; ставки лише навчальні. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 4. Вантажні перевезення
1. Початковий рівень. Створити консольну програму Python 3.14: ввести масу 0.1..100 т, відстань 1..1000 км і вид road, water, air. Спільний контракт: ABC Transport, метод cost(mass, distance); реалізації: навчальні тарифи за тонно-кілометр 2, 1, 5 відповідно. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести масу 0.1..100 т, відстань 1..1000 км і вид road, water, air. Спільний контракт: ABC Transport, метод cost(mass, distance); реалізації: навчальні тарифи за тонно-кілометр 2, 1, 5 відповідно. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести масу 0.1..100 т, відстань 1..1000 км і вид road, water, air. Спільний контракт: ABC Transport, метод cost(mass, distance); реалізації: навчальні тарифи за тонно-кілометр 2, 1, 5 відповідно. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: порівняти всі способи для кожного вантажу, вибрати найдешевший; правила місткості компонентом. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 5. Геометричні тіла
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид cube або sphere та розмір 0.1..100. Спільний контракт: ABC Solid, методи volume() і surface(); реалізації: Cube обчислює a**3 і 6*a*a, Sphere – 4*pi*r**3/3 і 4*pi*r*r. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид cube або sphere та розмір 0.1..100. Спільний контракт: ABC Solid, методи volume() і surface(); реалізації: Cube обчислює a**3 і 6*a*a, Sphere – 4*pi*r**3/3 і 4*pi*r*r. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид cube або sphere та розмір 0.1..100. Спільний контракт: ABC Solid, методи volume() і surface(); реалізації: Cube обчислює a**3 і 6*a*a, Sphere – 4*pi*r**3/3 і 4*pi*r*r. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: поліморфний каталог до 20 тіл із сортуванням за об’ємом і сумою площ. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 6. Співробітники
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид hourly або salaried, години 0..200 і ставку 0..1000 або оклад 0..100000. Спільний контракт: ABC Worker, метод pay(); реалізації: Hourly повертає hours*rate, Salaried – оклад. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид hourly або salaried, години 0..200 і ставку 0..1000 або оклад 0..100000. Спільний контракт: ABC Worker, метод pay(); реалізації: Hourly повертає hours*rate, Salaried – оклад. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид hourly або salaried, години 0..200 і ставку 0..1000 або оклад 0..100000. Спільний контракт: ABC Worker, метод pay(); реалізації: Hourly повертає hours*rate, Salaried – оклад. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: додати Commission із навчальною оплатою 5 відсотків продажів, сформувати фонд оплати. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 7. Способи оплати
1. Початковий рівень. Створити консольну програму Python 3.14: ввести тип cash або wallet та цілі копійки 1..100000. Спільний контракт: Protocol Payable, метод pay(cents); реалізації: Cash і Wallet лише повертають різні підтвердження локальної симуляції. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести тип cash або wallet та цілі копійки 1..100000. Спільний контракт: Protocol Payable, метод pay(cents); реалізації: Cash і Wallet лише повертають різні підтвердження локальної симуляції. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести тип cash або wallet та цілі копійки 1..100000. Спільний контракт: Protocol Payable, метод pay(cents); реалізації: Cash і Wallet лише повертають різні підтвердження локальної симуляції. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: додати Card з навчальною комісією 1 відсоток, спільний звіт; без реальних платежів. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 8. Документообіг
1. Початковий рівень. Створити консольну програму Python 3.14: ввести тип order або letter, номер, заголовок і адресата. Спільний контракт: ABC Document, метод validate(); реалізації: Order вимагає додатний номер і заголовок, Letter додатково непорожнього адресата. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести тип order або letter, номер, заголовок і адресата. Спільний контракт: ABC Document, метод validate(); реалізації: Order вимагає додатний номер і заголовок, Letter додатково непорожнього адресата. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести тип order або letter, номер, заголовок і адресата. Спільний контракт: ABC Document, метод validate(); реалізації: Order вимагає додатний номер і заголовок, Letter додатково непорожнього адресата. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: шаблонний метод render виконує validate перед формуванням рядка; журнал відмов окремим компонентом. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 9. Ігрові персонажі
1. Початковий рівень. Створити консольну програму Python 3.14: ввести тип warrior, mage, archer та силу 1..100. Спільний контракт: ABC Character, метод attack(); реалізації: навчальна шкода: Warrior – 2*power, Mage – 3*power, Archer – power+10. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести тип warrior, mage, archer та силу 1..100. Спільний контракт: ABC Character, метод attack(); реалізації: навчальна шкода: Warrior – 2*power, Mage – 3*power, Archer – power+10. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести тип warrior, mage, archer та силу 1..100. Спільний контракт: ABC Character, метод attack(); реалізації: навчальна шкода: Warrior – 2*power, Mage – 3*power, Archer – power+10. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: поліморфно моделювати до 10 ходів із невід’ємним здоров’ям, однаковий контракт витрат ходу. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 10. Електроприлади
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид lamp або heater, потужність 1..3000 Вт і час 0..24 год. Спільний контракт: ABC Device, метод energy(hours); реалізації: обидва рахують power*hours/1000 кВт·год; Heater додатково має коефіцієнт роботи 0..1. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид lamp або heater, потужність 1..3000 Вт і час 0..24 год. Спільний контракт: ABC Device, метод energy(hours); реалізації: обидва рахують power*hours/1000 кВт·год; Heater додатково має коефіцієнт роботи 0..1. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид lamp або heater, потужність 1..3000 Вт і час 0..24 год. Спільний контракт: ABC Device, метод energy(hours); реалізації: обидва рахують power*hours/1000 кВт·год; Heater додатково має коефіцієнт роботи 0..1. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: міксин журналює локальні ввімкнення, зведення енергії будинку по пристроях. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 11. Банківські рахунки
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид current або deposit, баланс 0..100000 грн. Спільний контракт: ABC Account, метод month_change(); реалізації: Current дає зміну 0, Deposit – навчальні 0.5 відсотка балансу. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид current або deposit, баланс 0..100000 грн. Спільний контракт: ABC Account, метод month_change(); реалізації: Current дає зміну 0, Deposit – навчальні 0.5 відсотка балансу. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид current або deposit, баланс 0..100000 грн. Спільний контракт: ABC Account, метод month_change(); реалізації: Current дає зміну 0, Deposit – навчальні 0.5 відсотка балансу. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: додати Credit з невід’ємним боргом і нарахуванням 1 відсоток, звіт відокремлює доходи й витрати без реальних операцій. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 12. Страхування
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид car або home та страхову суму 1..1000000 грн. Спільний контракт: ABC Policy, метод premium(); реалізації: навчальна премія Car – 3 відсотки, Home – 1 відсоток суми. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид car або home та страхову суму 1..1000000 грн. Спільний контракт: ABC Policy, метод premium(); реалізації: навчальна премія Car – 3 відсотки, Home – 1 відсоток суми. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид car або home та страхову суму 1..1000000 грн. Спільний контракт: ABC Policy, метод premium(); реалізації: навчальна премія Car – 3 відсотки, Home – 1 відсоток суми. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: додати третю навчальну політику 2 відсотки, спільний каталог і сортування за премією. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 13. Оркестр
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид strings, wind, drums і назву ноти. Спільний контракт: Protocol Playable, метод play(note); реалізації: три незалежні класи повертають рядки з видом інструмента й нотою. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид strings, wind, drums і назву ноти. Спільний контракт: Protocol Playable, метод play(note); реалізації: три незалежні класи повертають рядки з видом інструмента й нотою. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид strings, wind, drums і назву ноти. Спільний контракт: Protocol Playable, метод play(note); реалізації: три незалежні класи повертають рядки з видом інструмента й нотою. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: оркестр агрегує до 20 інструментів, партитура до 10 нот; виводити текст, не аудіо. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 14. Навчальні дисципліни
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид lecture, practice, online і години 0..100. Спільний контракт: ABC Course, метод workload(); реалізації: навчальне навантаження: Lecture – 1.2*h, Practice – h, Online – 0.8*h. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид lecture, practice, online і години 0..100. Спільний контракт: ABC Course, метод workload(); реалізації: навчальне навантаження: Lecture – 1.2*h, Practice – h, Online – 0.8*h. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид lecture, practice, online і години 0..100. Спільний контракт: ABC Course, метод workload(); реалізації: навчальне навантаження: Lecture – 1.2*h, Practice – h, Online – 0.8*h. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: навчальний план із до 20 курсів, сума навантаження, заміна коефіцієнтів стратегією. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 15. Способи доставки
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид courier, post, pickup і відстань 0..1000 км. Спільний контракт: Protocol Delivery, метод hours(distance); реалізації: Courier – 2+d/50, Post – 24+d/100, Pickup – 0 годин. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид courier, post, pickup і відстань 0..1000 км. Спільний контракт: Protocol Delivery, метод hours(distance); реалізації: Courier – 2+d/50, Post – 24+d/100, Pickup – 0 годин. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид courier, post, pickup і відстань 0..1000 км. Спільний контракт: Protocol Delivery, метод hours(distance); реалізації: Courier – 2+d/50, Post – 24+d/100, Pickup – 0 годин. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: порівняти способи для до 20 замовлень, знайти найшвидший; обмеження виду доставки явно документувати. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 16. Шахові фігури
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид rook, bishop, knight і координати 1..8. Спільний контракт: ABC Piece, метод moves(); реалізації: на порожній дошці видати всі допустимі ходи фігури без виходу за межі. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид rook, bishop, knight і координати 1..8. Спільний контракт: ABC Piece, метод moves(); реалізації: на порожній дошці видати всі допустимі ходи фігури без виходу за межі. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид rook, bishop, knight і координати 1..8. Спільний контракт: ABC Piece, метод moves(); реалізації: на порожній дошці видати всі допустимі ходи фігури без виходу за межі. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: Board агрегує фігури й передає зайняті клітини компоненту перевірки; власну клітину й дружні фігури виключати. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 17. Розумний будинок
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид temperature, motion, smoke і значення. Спільний контракт: ABC Sensor, метод status(); реалізації: Temperature приймає -40..60 та позначає понад 30, Motion і Smoke приймають 0 або 1. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид temperature, motion, smoke і значення. Спільний контракт: ABC Sensor, метод status(); реалізації: Temperature приймає -40..60 та позначає понад 30, Motion і Smoke приймають 0 або 1. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид temperature, motion, smoke і значення. Спільний контракт: ABC Sensor, метод status(); реалізації: Temperature приймає -40..60 та позначає понад 30, Motion і Smoke приймають 0 або 1. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: поліморфне опитування до 20 сенсорів, звіт тривог; усі покази вводяться локально. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 18. Меню кафе
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид drink або dish, основну ціну 1..1000 грн. Спільний контракт: ABC MenuItem, метод price(); реалізації: Drink повертає базову ціну, Dish додає навчальну плату 10 грн. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид drink або dish, основну ціну 1..1000 грн. Спільний контракт: ABC MenuItem, метод price(); реалізації: Drink повертає базову ціну, Dish додає навчальну плату 10 грн. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид drink або dish, основну ціну 1..1000 грн. Спільний контракт: ABC MenuItem, метод price(); реалізації: Drink повертає базову ціну, Dish додає навчальну плату 10 грн. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: Combo агрегує позиції й застосовує знижку 10 відсотків; чек обробляє всі позиції поліморфно. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 19. Експорт звітів
1. Початковий рівень. Створити консольну програму Python 3.14: ввести тип txt, csv, html та до 10 пар назва:ціле значення. Спільний контракт: Protocol Exporter, метод export(rows); реалізації: Txt формує рядки назва=значення, Csv і Html використовують стандартне екранування відповідного формату. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести тип txt, csv, html та до 10 пар назва:ціле значення. Спільний контракт: Protocol Exporter, метод export(rows); реалізації: Txt формує рядки назва=значення, Csv і Html використовують стандартне екранування відповідного формату. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести тип txt, csv, html та до 10 пар назва:ціле значення. Спільний контракт: Protocol Exporter, метод export(rows); реалізації: Txt формує рядки назва=значення, Csv і Html використовують стандартне екранування відповідного формату. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: згенерувати всі три локальні рядки з одного набору, перевірити коми, лапки, кутові дужки; без публікації. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 20. Легка атлетика
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид run, jump, throw і додатний результат. Спільний контракт: ABC Event, метод score(value); реалізації: навчальний бал Run – 1000/seconds, Jump – 100*metres, Throw – 10*metres. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид run, jump, throw і додатний результат. Спільний контракт: ABC Event, метод score(value); реалізації: навчальний бал Run – 1000/seconds, Jump – 100*metres, Throw – 10*metres. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид run, jump, throw і додатний результат. Спільний контракт: ABC Event, метод score(value); реалізації: навчальний бал Run – 1000/seconds, Jump – 100*metres, Throw – 10*metres. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: рейтинг за спаданням балів з однаковим правилом нічиєї; одиниці й навчальний зміст формул описати. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 21. Нерухомість
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид apartment, house, office і площу 1..1000 м². Спільний контракт: ABC Property, метод value(); реалізації: умовна вартість за м²: 20000, 15000, 25000 грн. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид apartment, house, office і площу 1..1000 м². Спільний контракт: ABC Property, метод value(); реалізації: умовна вартість за м²: 20000, 15000, 25000 грн. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид apartment, house, office і площу 1..1000 м². Спільний контракт: ABC Property, метод value(); реалізації: умовна вартість за м²: 20000, 15000, 25000 грн. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: каталог до 20 об’єктів, сортування та підсумкова вартість, тариф як незалежний компонент. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 22. Площі фігур
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид disk або tile і радіус або сторони 0.1..100. Спільний контракт: Protocol HasArea, метод area(); реалізації: непов’язані класи Disk і Tile повертають pi*r*r та width*height. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид disk або tile і радіус або сторони 0.1..100. Спільний контракт: Protocol HasArea, метод area(); реалізації: непов’язані класи Disk і Tile повертають pi*r*r та width*height. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид disk або tile і радіус або сторони 0.1..100. Спільний контракт: Protocol HasArea, метод area(); реалізації: непов’язані класи Disk і Tile повертають pi*r*r та width*height. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: спільний звіт приймає третій незалежний клас, довести відсутність потреби міняти клієнт. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 23. Пільгові квитки
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид full, student, pension і базову ціну 1..1000. Спільний контракт: ABC Ticket, метод price(); реалізації: навчальні коефіцієнти Full – 1, Student – 0.5, Pension – 0.7. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид full, student, pension і базову ціну 1..1000. Спільний контракт: ABC Ticket, метод price(); реалізації: навчальні коефіцієнти Full – 1, Student – 0.5, Pension – 0.7. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид full, student, pension і базову ціну 1..1000. Спільний контракт: ABC Ticket, метод price(); реалізації: навчальні коефіцієнти Full – 1, Student – 0.5, Pension – 0.7. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: каса агрегує до 30 квитків, друкує виручку й розподіл, знижки лише умовні. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 24. Роботи
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид wheeled, walking, flying і відстань 0..1000 м. Спільний контракт: ABC Robot, метод duration(distance); реалізації: навчальні швидкості 2, 1, 5 м/с; час distance/speed. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид wheeled, walking, flying і відстань 0..1000 м. Спільний контракт: ABC Robot, метод duration(distance); реалізації: навчальні швидкості 2, 1, 5 м/с; час distance/speed. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид wheeled, walking, flying і відстань 0..1000 м. Спільний контракт: ABC Robot, метод duration(distance); реалізації: навчальні швидкості 2, 1, 5 м/с; час distance/speed. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: маршрут складається з відрізків, спільний планувальник рахує час кожного робота й вибирає мінімум. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 25. Навчальні аналізи
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид A або B і скінченне число 0..100. Спільний контракт: ABC LabTest, метод classify(); реалізації: синтетичний тест A має навчальний інтервал 10..20, тест B – 30..50; лише позначити нижче, у межах, вище. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид A або B і скінченне число 0..100. Спільний контракт: ABC LabTest, метод classify(); реалізації: синтетичний тест A має навчальний інтервал 10..20, тест B – 30..50; лише позначити нижче, у межах, вище. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид A або B і скінченне число 0..100. Спільний контракт: ABC LabTest, метод classify(); реалізації: синтетичний тест A має навчальний інтервал 10..20, тест B – 30..50; лише позначити нижче, у межах, вище. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: зведення до 20 синтетичних тестів, без медичних висновків; інтервали передавати компонентом. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 26. Контейнери логістики
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид standard або refrigerated, масу 0.1..20 т і температуру -30..40. Спільний контракт: ABC Container, метод accepts(mass, temperature); реалізації: Standard приймає масу до 20, Refrigerated – до 10 і температуру -20..10. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид standard або refrigerated, масу 0.1..20 т і температуру -30..40. Спільний контракт: ABC Container, метод accepts(mass, temperature); реалізації: Standard приймає масу до 20, Refrigerated – до 10 і температуру -20..10. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид standard або refrigerated, масу 0.1..20 т і температуру -30..40. Спільний контракт: ABC Container, метод accepts(mass, temperature); реалізації: Standard приймає масу до 20, Refrigerated – до 10 і температуру -20..10. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: додати Hazardous з місткістю 5 і позначкою дозволу, поліморфний підбір без зміни вантажу. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 27. Класичні шифри
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид caesar або atbash та латинський текст. Спільний контракт: ABC Cipher, методи encode(text) і decode(text); реалізації: Caesar зі зсувом 3, Atbash віддзеркалює A..Z, a..z, решту символів не змінює. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид caesar або atbash та латинський текст. Спільний контракт: ABC Cipher, методи encode(text) і decode(text); реалізації: Caesar зі зсувом 3, Atbash віддзеркалює A..Z, a..z, решту символів не змінює. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид caesar або atbash та латинський текст. Спільний контракт: ABC Cipher, методи encode(text) і decode(text); реалізації: Caesar зі зсувом 3, Atbash віддзеркалює A..Z, a..z, решту символів не змінює. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: додати третю реалізацію з введеним зсувом, контрактний тест decode(encode(text))==text для всіх. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 28. Медіатека
1. Початковий рівень. Створити консольну програму Python 3.14: ввести вид book, audio, video і непорожню назву. Спільний контракт: Protocol Borrowable, метод due_days(); реалізації: Book дає 14 днів, Audio – 7, Video – 3 як навчальні строки. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести вид book, audio, video і непорожню назву. Спільний контракт: Protocol Borrowable, метод due_days(); реалізації: Book дає 14 днів, Audio – 7, Video – 3 як навчальні строки. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести вид book, audio, video і непорожню назву. Спільний контракт: Protocol Borrowable, метод due_days(); реалізації: Book дає 14 днів, Audio – 7, Video – 3 як навчальні строки. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: каталог незалежних класів, журнал видач і повернень, спільний розрахунок дати заборгованості на задану дату. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 29. Шкали оцінювання
1. Початковий рівень. Створити консольну програму Python 3.14: ввести оцінку 0..100 та шкалу percent, ects, five. Спільний контракт: Protocol GradeScale, метод convert(score); реалізації: Percent повертає число; навчальна ECTS: A від 90, B від 82, C від 74, D від 64, E від 60, FX від 35, F нижче 35; Five: 5 від 90, 4 від 74, 3 від 60, 2 нижче 60. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести оцінку 0..100 та шкалу percent, ects, five. Спільний контракт: Protocol GradeScale, метод convert(score); реалізації: Percent повертає число; навчальна ECTS: A від 90, B від 82, C від 74, D від 64, E від 60, FX від 35, F нижче 35; Five: 5 від 90, 4 від 74, 3 від 60, 2 нижче 60. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести оцінку 0..100 та шкалу percent, ects, five. Спільний контракт: Protocol GradeScale, метод convert(score); реалізації: Percent повертає число; навчальна ECTS: A від 90, B від 82, C від 74, D від 64, E від 60, FX від 35, F нижче 35; Five: 5 від 90, 4 від 74, 3 від 60, 2 нижче 60. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: три незалежні стратегії, відомість до 30 оцінок, однакові перевірки меж; шкали суто навчальні. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Варіант 30. Прогноз погоди
1. Початковий рівень. Створити консольну програму Python 3.14: ввести день 1..7 і два набори 7 температур від -40 до 50. Спільний контракт: Protocol Forecast, метод temperature(day); реалізації: два незалежні локальні джерела повертають значення за днем. Викликати операції через спільний інтерфейс і вивести результат. Анотувати методи й подати UML з напрямками наслідування або реалізації.
2. Базовий рівень. Створити консольну програму Python 3.14: ввести день 1..7 і два набори 7 температур від -40 до 50. Спільний контракт: Protocol Forecast, метод temperature(day); реалізації: два незалежні локальні джерела повертають значення за днем. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Анотувати методи й подати UML з напрямками наслідування або реалізації.
3. Високий рівень. Створити консольну програму Python 3.14: ввести день 1..7 і два набори 7 температур від -40 до 50. Спільний контракт: Protocol Forecast, метод temperature(day); реалізації: два незалежні локальні джерела повертають значення за днем. Викликати операції через спільний інтерфейс і вивести результат. Прийняти до 20 об’єктів, перевірити діапазони, сформувати поліморфну таблицю без умов за конкретним типом; перевірити однакові контрактні випадки для всіх реалізацій. Розширення: агрегатор усереднює доступні джерела, одне може дати None; вивести діапазон і кількість джерел, жодної мережі. Додати --help, іменовані аргументи і повторюваний --item із документованими полями, без аргументів – введення з клавіатури; помилки stderr/код 2, успіх 0. Подати підсумки й не менше п’яти перевірок включно з відмовою. Анотувати методи й подати UML з напрямками наслідування або реалізації.
Порядок виконання та захисту роботи
- Опишіть спільний контракт: передумови, результат, одиниці й очікувані винятки. Намалюйте UML до реалізації.
- Оберіть ABC для спільної основи або Protocol для незалежних реалізацій. Не створюйте ієрархію лише заради одного поля.
- Реалізуйте типізовані класи та поліморфний цикл без ланцюжка перевірок конкретних типів. Спільну ініціалізацію викликайте через
superтам, де цього потребує контракт. - Застосуйте однакові контрактні перевірки до всіх реалізацій: звичайні дані, межі, відмови та тип результату.
- Для MRO або міксина, якщо вони потрібні у варіанті, перевірте порядок і одноразовість кроків. Для Protocol не обмежуйтеся лише
isinstance. - Подайте UML, код, README, таблицю щонайменше п’яти перевірок та локальну історію Git; UML звірте з остаточним кодом.
- На захисті додайте новий підклас або реалізацію протоколу, не змінюючи цикл звіту, і поясніть принцип підстановки.