Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Для кожного розв’язку обов’язкова UML-діаграма зі стрілками узагальнення та видимістю членів.
Варіанти
Варіант 1. Прокат транспорту
1. Початковий рівень. Створити консольну програму Java: ввести вид car або bike, дні 1..30 і ставку 1..100000 копійок; Rental та два підкласи обчислюють ціну: car додає 10000 страховки, bike – без доплати; вивести вид і суму. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид car або bike, дні 1..30 і ставку 1..100000 копійок; Rental та два підкласи обчислюють ціну: car додає 10000 страховки, bike – без доплати; вивести вид і суму. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид car або bike, дні 1..30 і ставку 1..100000 копійок; Rental та два підкласи обчислюють ціну: car додає 10000 страховки, bike – без доплати; вивести вид і суму. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: масив прокату та пошук найдорожчого замовлення. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 2. Банківські рахунки
1. Початковий рівень. Створити консольну програму Java: ввести вид standard або savings, залишок 0..1000000 копійок; Account і SavingsAccount закривають період: standard без змін, savings додає один відсоток із відкиданням дробової копійки; вивести залишок. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид standard або savings, залишок 0..1000000 копійок; Account і SavingsAccount закривають період: standard без змін, savings додає один відсоток із відкиданням дробової копійки; вивести залишок. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид standard або savings, залишок 0..1000000 копійок; Account і SavingsAccount закривають період: standard без змін, savings додає один відсоток із відкиданням дробової копійки; вивести залишок. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: зняття коштів із захищеним методом перевірки та відмовою за нестачі. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 3. Товари магазину
1. Початковий рівень. Створити консольну програму Java: ввести назву, ціну 0..1000000 і вид normal або sale; Product та DiscountProduct повертають ціну без змін або зі знижкою 10 відсотків; вивести ціну в копійках. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести назву, ціну 0..1000000 і вид normal або sale; Product та DiscountProduct повертають ціну без змін або зі знижкою 10 відсотків; вивести ціну в копійках. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести назву, ціну 0..1000000 і вид normal або sale; Product та DiscountProduct повертають ціну без змін або зі знижкою 10 відсотків; вивести ціну в копійках. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: equals і hashCode за точним класом, назвою та вихідною ціною. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 4. Медіатека
1. Початковий рівень. Створити консольну програму Java: ввести тип audio або video, назву і секунди 1..7200; Media та підкласи показують опис, для video також ввести висоту 480, 720 або 1080; вивести поліморфний опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести тип audio або video, назву і секунди 1..7200; Media та підкласи показують опис, для video також ввести висоту 480, 720 або 1080; вивести поліморфний опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип audio або video, назву і секунди 1..7200; Media та підкласи показують опис, для video також ввести висоту 480, 720 або 1080; вивести поліморфний опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: пошук найдовшого матеріалу та суми тривалостей. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 5. Персонажі гри
1. Початковий рівень. Створити консольну програму Java: ввести вид warrior або mage, ім’я й силу 1..100; Character та підкласи обчислюють умовну атаку як подвоєну або потроєну силу; вивести атаку. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид warrior або mage, ім’я й силу 1..100; Character та підкласи обчислюють умовну атаку як подвоєну або потроєну силу; вивести атаку. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид warrior або mage, ім’я й силу 1..100; Character та підкласи обчислюють умовну атаку як подвоєну або потроєну силу; вивести атаку. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: безпечне instanceof для окремої операції відновлення мани. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 6. Нерухомість
1. Початковий рівень. Створити консольну програму Java: ввести тип flat або house, площу 1..1000 і ставку 1..100000 за квадратний метр; Property та підкласи повертають площу, помножену на ставку, для house додають 100000; вивести умовну ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести тип flat або house, площу 1..1000 і ставку 1..100000 за квадратний метр; Property та підкласи повертають площу, помножену на ставку, для house додають 100000; вивести умовну ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип flat або house, площу 1..1000 і ставку 1..100000 за квадратний метр; Property та підкласи повертають площу, помножену на ставку, для house додають 100000; вивести умовну ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: порівняння вартостей і копіювальні конструктори. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 7. Квитки
1. Початковий рівень. Створити консольну програму Java: ввести тип standard або student, маршрут і базову ціну 1..100000 копійок; Ticket та StudentTicket застосовують 0 або 50 відсотків знижки; вивести опис і ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести тип standard або student, маршрут і базову ціну 1..100000 копійок; Ticket та StudentTicket застосовують 0 або 50 відсотків знижки; вивести опис і ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип standard або student, маршрут і базову ціну 1..100000 копійок; Ticket та StudentTicket застосовують 0 або 50 відсотків знижки; вивести опис і ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: рівність за точним класом, маршрутом і базовою ціною. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 8. Абоненти зв’язку
1. Початковий рівень. Створити консольну програму Java: ввести тип prepaid або contract, ім’я і хвилини 0..10000; Subscriber та підкласи обчислюють умовний рахунок як хвилини на 100 або 5000 плюс хвилини на 50 копійок; вивести рахунок. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести тип prepaid або contract, ім’я і хвилини 0..10000; Subscriber та підкласи обчислюють умовний рахунок як хвилини на 100 або 5000 плюс хвилини на 50 копійок; вивести рахунок. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип prepaid або contract, ім’я і хвилини 0..10000; Subscriber та підкласи обчислюють умовний рахунок як хвилини на 100 або 5000 плюс хвилини на 50 копійок; вивести рахунок. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: деталізацію базової плати й змінної частини. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 9. Зоопарк
1. Початковий рівень. Створити консольну програму Java: ввести вид cat або bird та ім’я; Animal та підкласи повертають meow або chirp через sound; вивести ім’я й голос. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид cat або bird та ім’я; Animal та підкласи повертають meow або chirp через sound; вивести ім’я й голос. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид cat або bird та ім’я; Animal та підкласи повертають meow або chirp через sound; вивести ім’я й голос. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: додатковий метод fly тільки Bird з безпечним instanceof. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 10. Сповіщення
1. Початковий рівень. Створити консольну програму Java: ввести вид sms або email, непорожнього адресата й текст до 100 символів; Notification та підкласи формують текстовий опис без реального надсилання; вивести канал, адресата й текст. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид sms або email, непорожнього адресата й текст до 100 символів; Notification та підкласи формують текстовий опис без реального надсилання; вивести канал, адресата й текст. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид sms або email, непорожнього адресата й текст до 100 символів; Notification та підкласи формують текстовий опис без реального надсилання; вивести канал, адресата й текст. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: умовну ціну SMS 100 копійок, email 0 та загальну вартість. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 11. Страхові поліси
1. Початковий рівень. Створити консольну програму Java: ввести тип basic або extended, суму покриття 10000..10000000 копійок; Policy та підкласи обчислюють навчальний внесок 1 або 2 відсотки; вивести внесок. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести тип basic або extended, суму покриття 10000..10000000 копійок; Policy та підкласи обчислюють навчальний внесок 1 або 2 відсотки; вивести внесок. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип basic або extended, суму покриття 10000..10000000 копійок; Policy та підкласи обчислюють навчальний внесок 1 або 2 відсотки; вивести внесок. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: рівність полісів за ідентифікатором і точним класом. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 12. Доставка
1. Початковий рівень. Створити консольну програму Java: ввести вид pickup або courier, масу 1..100 кг; Delivery та підкласи повертають 0 або 5000 плюс 100 за кілограм копійок; вивести ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид pickup або courier, масу 1..100 кг; Delivery та підкласи повертають 0 або 5000 плюс 100 за кілограм копійок; вивести ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид pickup або courier, масу 1..100 кг; Delivery та підкласи повертають 0 або 5000 плюс 100 за кілограм копійок; вивести ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: сортування результатів ручним циклом за ціною. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 13. Датчики
1. Початковий рівень. Створити консольну програму Java: ввести вид temperature або pressure та скінченне вимірювання в межах −100..200 або 800..1200 відповідно; Sensor і підкласи формують опис з одиницями; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид temperature або pressure та скінченне вимірювання в межах −100..200 або 800..1200 відповідно; Sensor і підкласи формують опис з одиницями; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид temperature або pressure та скінченне вимірювання в межах −100..200 або 800..1200 відповідно; Sensor і підкласи формують опис з одиницями; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: метод нормалізації: температури до 0..1 за заданими межами, тиску аналогічно. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 14. Побутові прилади
1. Початковий рівень. Створити консольну програму Java: ввести вид heater або lamp, потужність 1..3000 Вт і години 0..24; Appliance та підкласи повертають Вт·год, heater має коефіцієнт роботи 0.5; вивести витрату. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид heater або lamp, потужність 1..3000 Вт і години 0..24; Appliance та підкласи повертають Вт·год, heater має коефіцієнт роботи 0.5; вивести витрату. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид heater або lamp, потужність 1..3000 Вт і години 0..24; Appliance та підкласи повертають Вт·год, heater має коефіцієнт роботи 0.5; вивести витрату. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: тариф у копійках за кВт·год і умовну суму. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 15. Люди університету
1. Початковий рівень. Створити консольну програму Java: ввести вид student або teacher, ім’я і номер групи або кафедру; Person та підкласи перевизначають describe; вивести представлення. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид student або teacher, ім’я і номер групи або кафедру; Person та підкласи перевизначають describe; вивести представлення. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид student або teacher, ім’я і номер групи або кафедру; Person та підкласи перевизначають describe; вивести представлення. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: рівність за точним класом, ідентифікатором та іменем. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 16. Шахові фігури
1. Початковий рівень. Створити консольну програму Java: ввести тип rook або bishop, початкові й кінцеві координати 1..8; Piece та підкласи перевіряють геометрію ходу без інших фігур: одна координата незмінна або рівні модулі зсувів; вивести true чи false, нульовий хід заборонити. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести тип rook або bishop, початкові й кінцеві координати 1..8; Piece та підкласи перевіряють геометрію ходу без інших фігур: одна координата незмінна або рівні модулі зсувів; вивести true чи false, нульовий хід заборонити. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип rook або bishop, початкові й кінцеві координати 1..8; Piece та підкласи перевіряють геометрію ходу без інших фігур: одна координата незмінна або рівні модулі зсувів; вивести true чи false, нульовий хід заборонити. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: підрахунок допустимих цілей із заданої клітинки. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 17. Документи
1. Початковий рівень. Створити консольну програму Java: ввести вид text або invoice, заголовок і кількість сторінок 1..1000; Document та підкласи повертають опис, invoice також має суму 0..1000000; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид text або invoice, заголовок і кількість сторінок 1..1000; Document та підкласи повертають опис, invoice також має суму 0..1000000; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид text або invoice, заголовок і кількість сторінок 1..1000; Document та підкласи повертають опис, invoice також має суму 0..1000000; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: копіювальні конструктори та порівняння копій. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 18. Спортивні змагання
1. Початковий рівень. Створити консольну програму Java: ввести вид race або jump, ім’я й додатний результат до 10000; Result та підкласи визначають кращий із двох: менший час або більшу відстань; вивести переможця чи нічию. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид race або jump, ім’я й додатний результат до 10000; Result та підкласи визначають кращий із двох: менший час або більшу відстань; вивести переможця чи нічию. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид race або jump, ім’я й додатний результат до 10000; Result та підкласи визначають кращий із двох: менший час або більшу відстань; вивести переможця чи нічию. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: окремий звіт кожного виду без змішування одиниць. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 19. Навчальні податки ФОП
1. Початковий рівень. Створити консольну програму Java: ввести вид fixed або percent та дохід 0..100000000 копійок; Taxpayer і підкласи рахують умовні 10000 або 5 відсотків доходу; вивести суму з приміткою, що це модель, не чинне право. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид fixed або percent та дохід 0..100000000 копійок; Taxpayer і підкласи рахують умовні 10000 або 5 відсотків доходу; вивести суму з приміткою, що це модель, не чинне право. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид fixed або percent та дохід 0..100000000 копійок; Taxpayer і підкласи рахують умовні 10000 або 5 відсотків доходу; вивести суму з приміткою, що це модель, не чинне право. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: деталізацію та порівняння двох навчальних правил. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 20. Кавові напої
1. Початковий рівень. Створити консольну програму Java: ввести вид espresso або latte й кількість 1..100; Coffee та підкласи задають умовну ціну порції 3000 або 4500 копійок; вивести опис і суму. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид espresso або latte й кількість 1..100; Coffee та підкласи задають умовну ціну порції 3000 або 4500 копійок; вивести опис і суму. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид espresso або latte й кількість 1..100; Coffee та підкласи задають умовну ціну порції 3000 або 4500 копійок; вивести опис і суму. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: додаткову порцію молока лише для Latte через перевірений метод. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 21. Музичні інструменти
1. Початковий рівень. Створити консольну програму Java: ввести вид piano або guitar, назву й гучність 0..100; Instrument та підкласи повертають опис звучання клавіші або струни; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид piano або guitar, назву й гучність 0..100; Instrument та підкласи повертають опис звучання клавіші або струни; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид piano або guitar, назву й гучність 0..100; Instrument та підкласи повертають опис звучання клавіші або струни; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: спільний фінальний метод виконання з перевизначеним sound. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 22. Садові рослини
1. Початковий рівень. Створити консольну програму Java: ввести вид tree або flower і вік 0..100; Plant та підкласи задають умовний полив 10 плюс вік або 2 літри; вивести добовий обсяг. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид tree або flower і вік 0..100; Plant та підкласи задають умовний полив 10 плюс вік або 2 літри; вивести добовий обсяг. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид tree або flower і вік 0..100; Plant та підкласи задають умовний полив 10 плюс вік або 2 літри; вивести добовий обсяг. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: масив рослин і загальний обсяг поливу. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 23. Класи таксі
1. Початковий рівень. Створити консольну програму Java: ввести вид economy або comfort, відстань 0..1000 км; Taxi та підкласи рахують 4000 плюс 1200 за км або 6000 плюс 1800 за км копійок; вивести ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид economy або comfort, відстань 0..1000 км; Taxi та підкласи рахують 4000 плюс 1200 за км або 6000 плюс 1800 за км копійок; вивести ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид economy або comfort, відстань 0..1000 км; Taxi та підкласи рахують 4000 плюс 1200 за км або 6000 плюс 1800 за км копійок; вивести ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: порівняння цін обох класів для одного маршруту. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 24. Космічні апарати
1. Початковий рівень. Створити консольну програму Java: ввести вид probe або station, назву й масу 1..100000; Spacecraft та підкласи описують призначення дослідження або проживання; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид probe або station, назву й масу 1..100000; Spacecraft та підкласи описують призначення дослідження або проживання; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид probe або station, назву й масу 1..100000; Spacecraft та підкласи описують призначення дослідження або проживання; вивести опис. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: копіювання та equals за точним класом і назвою. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 25. Медичні аналізи як модель
1. Початковий рівень. Створити консольну програму Java: ввести вид blood або urine та код зразка; Analysis та підкласи повертають навчальний строк готовності 24 або 12 годин без медичного висновку; вивести код і строк. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид blood або urine та код зразка; Analysis та підкласи повертають навчальний строк готовності 24 або 12 годин без медичного висновку; вивести код і строк. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид blood або urine та код зразка; Analysis та підкласи повертають навчальний строк готовності 24 або 12 годин без медичного висновку; вивести код і строк. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: облік лише станів pending та ready з перевіркою переходу. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 26. Стипендії
1. Початковий рівень. Створити консольну програму Java: ввести вид regular або increased та ім’я; Scholarship та підкласи повертають умовні 200000 або 300000 копійок; вивести суму. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид regular або increased та ім’я; Scholarship та підкласи повертають умовні 200000 або 300000 копійок; вивести суму. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид regular або increased та ім’я; Scholarship та підкласи повертають умовні 200000 або 300000 копійок; вивести суму. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: навчальну соціальну доплату 50000 через окремий підклас. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 27. Видання бібліотеки
1. Початковий рівень. Створити консольну програму Java: ввести вид book або magazine, назву й прострочені дні 0..365; Publication та підкласи рахують умовний штраф 100 або 50 копійок за день; вивести штраф. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид book або magazine, назву й прострочені дні 0..365; Publication та підкласи рахують умовний штраф 100 або 50 копійок за день; вивести штраф. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид book або magazine, назву й прострочені дні 0..365; Publication та підкласи рахують умовний штраф 100 або 50 копійок за день; вивести штраф. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: поліморфний опис терміну видачі 14 або 7 днів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 28. Туристичні путівки
1. Початковий рівень. Створити консольну програму Java: ввести вид excursion або cruise та дні 1..30; Tour та підкласи рахують 100000 за день або 300000 за день плюс 500000 копійок; вивести ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид excursion або cruise та дні 1..30; Tour та підкласи рахують 100000 за день або 300000 за день плюс 500000 копійок; вивести ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид excursion або cruise та дні 1..30; Tour та підкласи рахують 100000 за день або 300000 за день плюс 500000 копійок; вивести ціну. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: порівняння копій і загальну суму замовлень. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 29. Геометричні тіла
1. Початковий рівень. Створити консольну програму Java: ввести вид sphere або cylinder, радіус 0.1..100 та для циліндра висоту 0.1..100; Solid і підкласи обчислюють об’єм за формулами 4 * pi * r^3 / 3 або pi * r^2 * h; вивести об’єм. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид sphere або cylinder, радіус 0.1..100 та для циліндра висоту 0.1..100; Solid і підкласи обчислюють об’єм за формулами 4 * pi * r^3 / 3 або pi * r^2 * h; вивести об’єм. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид sphere або cylinder, радіус 0.1..100 та для циліндра висоту 0.1..100; Solid і підкласи обчислюють об’єм за формулами 4 * pi * r^3 / 3 або pi * r^2 * h; вивести об’єм. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: поверхню сфери 4 * pi * r^2 і циліндра 2 * pi * r * (r + h). Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 30. Персонал лікарні
1. Початковий рівень. Створити консольну програму Java: ввести вид doctor або nurse, ім’я й зміни 0..31; Worker та підкласи рахують умовну оплату 100000 або 60000 копійок за зміну; вивести відомість. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип.
2. Базовий рівень. Створити консольну програму Java: ввести вид doctor або nurse, ім’я й зміни 0..31; Worker та підкласи рахують умовну оплату 100000 або 60000 копійок за зміну; вивести відомість. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид doctor або nurse, ім’я й зміни 0..31; Worker та підкласи рахують умовну оплату 100000 або 60000 копійок за зміну; вивести відомість. Подати UML класів; застосувати extends, явний super, приватні поля й перевизначення з @Override; обробляти результат через базовий тип. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: копіювальні конструктори й порівняння за точним класом та ідентифікатором. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Порядок виконання та захисту роботи
- Визначте спільний контракт, одиниці й допустимі межі.
- Подайте UML; обґрунтуйте кожний зв’язок наслідування.
- Реалізуйте приватний стан і перевірені конструктори.
- Перевизначте методи з анотацією Override.
- Обробіть масив базового типу без умов за назвами класів.
- Перевірте граничні дані, відмову без зміни стану та рівність.
- Подайте README, код і щонайменше п’ять перевірок.
- На захисті покажіть динамічний виклик у debugger.