Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Нарахування зарплати
1. Початковий рівень. Створити консольну програму нарахування зарплати, у якій switch за видом оплати (оклад, погодинна, відрядна) замінено інтерфейсом IPayStrategy і трьома стратегіями. Працівник має ім’я, вид оплати й параметри (оклад, години та ставка, кількість виробів і розцінка). Вивести зарплату кількох працівників.
2. Базовий рівень. Створити консольну програму нарахування зарплати зі стратегіями IPayStrategy (оклад, погодинна, відрядна), фабричним методом вибору стратегії за назвою, премією як стратегією-обгорткою (декоратор) і класом PayrollService, що отримує залежності через конструктор. Користувач вводить працівників (ім’я, вид оплати, параметри, премія), програма виводить відомість.
3. Високий рівень. Створити бібліотеку класів нарахування зарплати зі стратегіями видів оплати (IPayStrategy), реєстром стратегій, що розширюється без зміни коду (OCP), податками й утриманнями як декораторами та інтерфейсом джерела даних з тестовою реалізацією. Застосунок dotnet CLI обробляє табель зі стандартного введення (ім’я, вид оплати, параметри) і виводить відомість; помилки – у Console.Error.
Варіант 2. Піцерія
1. Початковий рівень. Створити консольну програму піцерії з шаблоном «Декоратор»: базова піца має опис і ціну, декоратори інгредієнтів (сир, гриби, шинка) доповнюють опис і збільшують ціну. Скласти кілька піц і вивести їхні описи та ціни.
2. Базовий рівень. Створити консольну програму піцерії з «Будівельником» замовлення піци (розмір, тісто, інгредієнти з цінами): метод Build перевіряє обмеження (не більше 6 інгредієнтів) і розраховує ціну. Користувач обирає параметри в меню, програма виводить склад і ціну або повідомлення про порушення.
3. Високий рівень. Створити бібліотеку класів піцерії: піца з розміром, тістом та інгредієнтами, меню стандартних піц, що створюються фабричним методом, і знижки як декоратори замовлення (відсоткова, «друга піца дешевше»). Застосунок dotnet CLI оформлює замовлення зі стандартного введення (назва піци, кількість, код знижки) і виводить чек; помилки – у Console.Error.
Варіант 3. Малювання фігур
1. Початковий рівень. Створити консольну програму з полотном, що зберігає фігури (назва, координати), інтерфейсом команди з методом Execute і командами AddShape та MoveShape. Виконати кілька команд і вивести стан полотна.
2. Базовий рівень. Створити консольну програму графічного редактора: полотно з фігурами (назва, координати), команди AddShape і MoveShape з методами Execute і Undo, історія команд з Undo/Redo і групове переміщення як складена команда з кількох команд. Користувач вводить дії в меню, програма виводить полотно після кожної.
3. Високий рівень. Створити бібліотеку класів графічного редактора: полотно з фігурами (тип, координати, розмір), команди додавання, переміщення й видалення з Undo, збереження історії команд у JSON і відтворення малюнка з історії. Застосунок dotnet CLI виконує сценарій команд зі стандартного введення й виводить полотно символами; помилки – у Console.Error.
Варіант 4. Торговий автомат
1. Початковий рівень. Створити консольну програму торгового автомата зі станом у переліченні (очікування, гроші внесено, видача), товарами з цінами та методами InsertCoin і SelectProduct, що перевіряють поточний стан через switch. Виконати кілька сценаріїв покупки й вивести повідомлення автомата.
2. Базовий рівень. Створити консольну програму торгового автомата за шаблоном «Стан»: стани очікування, гроші внесено й видача – класи з інтерфейсом IVendingState з методами InsertCoin і SelectProduct; недопустимі дії відхиляються поточним станом. Користувач вносить монети й обирає товар у меню, програма виводить стан і повідомлення.
3. Високий рівень. Створити бібліотеку класів торгового автомата за шаблоном «Стан» (очікування, гроші внесено, видача, «Немає товару») з товарами й залишками, поверненням решти та подією продажу, на яку підписується звіт («Спостерігач»). Застосунок dotnet CLI виконує сценарій зі стандартного введення (coin, select, refill) і виводить звіт продажів; помилки – у Console.Error.
Варіант 5. Сповіщення клієнтів
1. Початковий рівень. Створити консольну програму з інтерфейсом INotificationChannel (метод Send) і класами EmailChannel та SmsChannel, що виводять повідомлення; сервіс замовлень отримує канал через конструктор і сповіщає клієнта про оформлення замовлення. Оформити кілька замовлень з різними каналами.
2. Базовий рівень. Створити консольну програму сповіщень за шаблоном «Спостерігач»: клієнти з каналами INotificationChannel (email, SMS) підписуються на події магазину (надходження товару, знижка) і відписуються, а сервіс подій залежить лише від абстракцій (DIP). Користувач керує підписками й генерує події в меню, програма виводить надіслані повідомлення.
3. Високий рівень. Створити бібліотеку сповіщень з каналами INotificationChannel (email, SMS), налаштуванням каналів для кожного клієнта, підпискою на події магазину, повторними спробами як декоратором каналу і тестовим каналом, що зберігає повідомлення. Застосунок dotnet CLI моделює події зі стандартного введення (клієнти, підписки, події) і виводить надіслані повідомлення; помилки – у Console.Error.
Варіант 6. Платіжна система
1. Початковий рівень. Створити консольну програму з інтерфейсом IPaymentGateway (метод Pay(decimal amount, string account)) і адаптером для стороннього класу, що має лише метод MakeTransfer(string json). Виконати кілька платежів через інтерфейс і вивести результати.
2. Базовий рівень. Створити консольну програму оплати з інтерфейсом IPaymentGateway, адаптерами для двох «сторонніх» провайдерів з різними методами й форматами відповідей (JSON, рядок з кодом), обробкою їхніх помилок і фабричним методом вибору провайдера за назвою. Користувач вводить провайдера, суму й рахунок, програма виводить результат платежу.
3. Високий рівень. Створити бібліотеку платежів з інтерфейсом IPaymentGateway, адаптерами сторонніх провайдерів, декоратором журналювання й фасадом CheckoutFacade (перевірка даних, оплата, формування чека). Застосунок dotnet CLI обробляє платежі зі стандартного введення (провайдер, сума, рахунок) і виводить чеки; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 7. Генератор звітів
1. Початковий рівень. Створити консольну програму з інтерфейсом IReportFormatter і стратегіями текстового та CSV-форматування звіту про продажі (товар, кількість, сума). Вивести той самий звіт в обох форматах.
2. Базовий рівень. Створити консольну програму звітів про продажі (товар, кількість, сума) зі стратегіями IReportFormatter (текст, CSV, Markdown), фабричним методом вибору формату за розширенням файлу й класом ReportService, що не змінюється при додаванні форматів (OCP). Користувач вводить ім’я файлу, програма записує в нього звіт.
3. Високий рівень. Створити бібліотеку звітів із «Будівельником» структури звіту (заголовок, таблиці, підсумки) і форматувальниками IReportFormatter (текст, CSV, Markdown) як стратегіями. Застосунок dotnet CLI читає дані продажів з JSON-файлу й створює звіт у форматі з опції --format; помилки – у Console.Error.
Варіант 8. Журналювання
1. Початковий рівень. Створити консольну програму з інтерфейсом ILogger (метод Log(level, message)) і реалізацією ConsoleLogger; сервіс замовлень отримує журнал через конструктор і записує в нього свої дії. Виконати кілька операцій сервісу.
2. Базовий рівень. Створити консольну програму з інтерфейсом ILogger, реалізацією ConsoleLogger і декораторами часової мітки, фільтра рівня та дублювання у файл; у композиційному корені скомбінувати декоратори й передати журнал сервісу через конструктор. Користувач обирає комбінацію в меню, програма виводить записи журналу.
3. Високий рівень. Створити бібліотеку журналювання з інтерфейсом ILogger, консольною й файловою реалізаціями, декораторами (часова мітка, фільтр рівня, дублювання) і фабричним методом, що будує ланцюжок декораторів з конфігурації в JSON-файлі; журнал підключається через DI-контейнер. Застосунок dotnet CLI демонструє конфігурації з файлів, заданих аргументами; помилки – у Console.Error.
Варіант 9. Розумний дім
1. Початковий рівень. Створити консольну програму з пристроями розумного дому (назва, стан увімкнено/вимкнено), командами TurnOn і TurnOff та пультом, що виконує призначені йому команди. Вивести стан пристроїв після натискання кнопок.
2. Базовий рівень. Створити консольну програму розумного дому з командами TurnOn/TurnOff для пристроїв, «Компонувальником» груп (кімната, поверх), до яких застосовуються ті самі команди, і сценаріями як складеними командами з Undo. Користувач виконує команди й сценарії в меню, програма виводить стан пристроїв.
3. Високий рівень. Створити бібліотеку розумного дому з пристроями й групами, командами та сценаріями з Undo, розкладом сценаріїв за часом, подіями датчиків («Спостерігач»), що запускають сценарії, і фасадом керування. Застосунок dotnet CLI виконує сценарії й події зі стандартного введення та виводить стан дому; помилки – у Console.Error.
Варіант 10. Конфігуратор ПК
1. Початковий рівень. Створити консольну програму з класом комп’ютера й «Будівельником», що послідовно задає процесор, пам’ять, накопичувач і відеокарту. Зібрати дві конфігурації й вивести їхній склад.
2. Базовий рівень. Створити консольну програму конфігуратора ПК з «Будівельником» комп’ютера (процесор із сокетом, материнська плата, пам’ять, накопичувач, відеокарта, блок живлення): метод Build перевіряє сумісність сокетів і потужність блоку живлення, а готові конфігурації (офісна, ігрова) задаються методами-директорами. Програма виводить конфігурації або помилки сумісності.
3. Високий рівень. Створити бібліотеку конфігуратора ПК з каталогом компонентів у JSON (тип, ціна, сокет, потужність), «Будівельником» з перевіркою сумісності, стратегіями підбору («найдешевша», «ігрова») і звітом про конфігурацію. Застосунок dotnet CLI підбирає конфігурацію за бюджетом і стратегією з аргументів; помилки – у Console.Error.
Варіант 11. Рефакторинг бібліотечної системи
1. Початковий рівень. Створити консольну програму з класом LibraryManager, що видає книги, нараховує штрафи за прострочення, записує дані у файл і сповіщує читачів; визначити його відповідальності й винести розрахунок штрафів в окремий клас. Вивести штрафи для кількох видач.
2. Базовий рівень. Створити консольну програму бібліотеки, у якій клас LibraryManager (видача книг, штрафи, запис у файл, сповіщення) розділено за SRP на сервіс видачі, калькулятор штрафів, репозиторій і сповіщувач з інтерфейсами; об’єкти збираються в композиційному корені. Користувач видає й повертає книги в меню, програма виводить штрафи.
3. Високий рівень. Створити бібліотеку класів обліку видачі книг із сервісом видачі, калькулятором штрафів, сповіщувачем та інтерфейсом репозиторію з двома реалізаціями (пам’ять, JSON-файл), тестовими реалізаціями залежностей і перевіркою поведінки сервісу без файлів. Застосунок dotnet CLI обирає сховище опцією --storage і виконує команди видачі; помилки – у Console.Error.
Варіант 12. Система знижок
1. Початковий рівень. Створити консольну програму з кошиком товарів (назва, ціна, кількість) і стратегіями знижок (відсоткова, фіксована, без знижки). Застосувати кожну стратегію до кошика й вивести підсумкові суми.
2. Базовий рівень. Створити консольну програму знижок для кошика товарів (назва, ціна, кількість), у якій складені знижки (сезонна + картка лояльності) реалізовано декораторами над базовою стратегією з обмеженням максимальної знижки. Користувач вводить товари й обирає знижки, програма виводить суму до й після знижки.
3. Високий рівень. Створити бібліотеку знижок для кошика товарів з правилами в JSON (тип, значення, умова), фабричним методом створення правил-стратегій, декораторами для складених знижок і вибором найвигіднішої комбінації. Застосунок dotnet CLI обробляє кошики зі стандартного введення й виводить обрану знижку та суму; помилки – у Console.Error.
Варіант 13. Віртуальна файлова система
1. Початковий рівень. Створити консольну програму з «Компонувальником» віртуальної файлової системи: файли (назва, розмір) і папки мають спільний інтерфейс з властивістю Size, розмір папки – сума вмісту. Побудувати дерево й вивести розміри.
2. Базовий рівень. Створити консольну програму віртуальної файлової системи з «Компонувальником» файлів (назва, розмір) і папок, пошуком за маскою в дереві, виведенням дерева з відступами та переміщенням елементів між папками з перевіркою циклів. Користувач виконує дії в меню.
3. Високий рівень. Створити бібліотеку віртуальної файлової системи з «Компонувальником» файлів і папок, командами mkdir, mv, rm з Undo і збереженням дерева в JSON. Застосунок dotnet CLI виконує команди зі стандартного введення й виводить дерево; помилки – у Console.Error.
Варіант 14. Стратегічна гра
1. Початковий рівень. Створити консольну програму з юнітами (назва, здоров’я, сила) і стратегіями поведінки (атака, оборона, відступ), які змінюються під час гри. Змоделювати кілька ходів і вивести дії юнітів.
2. Базовий рівень. Створити консольну програму стратегічної гри з юнітами (назва, здоров’я, сила), фабричним методом створення юнітів різних рас (похідні класи фабрики) і «Спостерігачем», що сповіщає про загибель юніта. Користувач обирає расу й атакує юніти в меню, програма виводить події.
3. Високий рівень. Створити бібліотеку стратегічної гри з юнітами й стратегіями поведінки, «Будівельником» армії, командами наказів із чергою та симуляцією бою з фіксованим зерном генератора випадкових чисел. Застосунок dotnet CLI моделює бій двох армій з JSON-описів і виводить хід бою та переможця; помилки – у Console.Error.
Варіант 15. Мультимедійний конвертер
1. Початковий рівень. Створити фасад MediaConverter з методом Convert(file, format), що послідовно викликає класи читання, перекодування й запису (заглушки з виведенням кроків).
2. Базовий рівень. Створити консольну програму мультимедійного конвертера з інтерфейсом кодека, адаптерами для двох «сторонніх» кодеків з різними інтерфейсами та фабричним методом вибору кодека за форматом. Користувач вводить файл і формат, програма виводить кроки конвертації.
3. Високий рівень. Створити бібліотеку конвеєра обробки медіафайлів з кроками (читання, перекодування, запис), декораторами кроків (нормалізація гучності, обрізання) і подіями прогресу. Застосунок dotnet CLI виконує конвертацію за параметрами з аргументів (файл, формат, обробки) і виводить прогрес; помилки – у Console.Error.
Варіант 16. Валідація замовлення
1. Початковий рівень. Створити консольну програму із замовленням (сума, адреса, товари з наявністю), інтерфейсом правила перевірки й кількома правилами (сума, адреса, наявність). Перевірити кілька замовлень і вивести повідомлення про помилки.
2. Базовий рівень. Створити консольну програму перевірки замовлень (сума, адреса, товари) з інтерфейсом правила й «Компонувальником» правил: складені правила «усі з» і «будь-яке з», збирання всіх повідомлень про помилки. Користувач вводить замовлення, програма виводить результат перевірки.
3. Високий рівень. Створити бібліотеку валідації замовлень з правилами, налаштованими в JSON, фабричним методом створення правил, складеними правилами «усі з» і «будь-яке з» та декоратором, що вимикає правило за умовою. Застосунок dotnet CLI перевіряє замовлення зі стандартного введення й виводить результати перевірки; помилки – у Console.Error.
Варіант 17. Меню ресторану
1. Початковий рівень. Створити консольну програму з «Компонувальником» меню ресторану: розділи й страви (назва, ціна) мають спільний інтерфейс, розділи містять страви та підрозділи. Вивести меню з відступами.
2. Базовий рівень. Створити консольну програму меню ресторану з «Компонувальником» розділів і страв (назва, ціна, ознака вегетаріанської), ітератором (yield return) обходу всіх страв, пошуком вегетаріанських страв і підрахунком цін розділів. Програма виводить меню, вегетаріанські страви й суми розділів.
3. Високий рівень. Створити бібліотеку меню ресторану з розділами й стравами («Компонувальник»), «Будівельником» меню дня, декораторами страв (порція, добавки), що змінюють опис і ціну, та експортом у JSON. Застосунок dotnet CLI формує меню з файлу, заданого аргументом; помилки – у Console.Error.
Варіант 18. Бібліотека
1. Початковий рівень. Створити консольну програму з інтерфейсом репозиторію книг (назва, автор, доступність) і реалізацією в пам’яті; сервіс видачі отримує репозиторій через конструктор. Видати й повернути кілька книг і вивести їхній стан.
2. Базовий рівень. Створити консольну програму бібліотеки, у якій «товстий» інтерфейс репозиторію книг розділено на інтерфейси читання й запису (ISP): сервіс видачі використовує обидва, а сервіс звітів – лише читання. Користувач видає книги й переглядає звіти в меню.
3. Високий рівень. Створити бібліотеку класів обліку книг з інтерфейсами читання й запису репозиторію, реалізаціями в пам’яті та в JSON-файлі, сервісами видачі й звітів, зареєстрованими в DI-контейнері Microsoft.Extensions.DependencyInjection з різним часом життя; реалізація сховища замінюється конфігурацією. Застосунок dotnet CLI виконує команди з аргументів; помилки – у Console.Error.
Варіант 19. Документообіг
1. Початковий рівень. Створити консольну програму з документом (назва, автор), стан якого («чернетка», «на погодженні», «погоджено», «відхилено») задано переліченням, і методами переходів. Виконати кілька переходів і вивести стан.
2. Базовий рівень. Створити консольну програму документообігу за шаблоном «Стан»: стани «чернетка», «на погодженні», «погоджено», «відхилено» – класи зі спільним інтерфейсом, журнал переходів, недопустимі переходи генерують виняток. Користувач виконує дії в меню, програма виводить стан і журнал.
3. Високий рівень. Створити бібліотеку документообігу з документами за шаблоном «Стан», маршрутами погодження (кілька погоджувачів), сповіщеннями учасників («Спостерігач») і командами дій з історією. Застосунок dotnet CLI обробляє дії зі стандартного введення (документ, користувач, дія) і виводить стан та історію; помилки – у Console.Error.
Варіант 20. Конвертер форматів даних
1. Початковий рівень. Створити консольну програму з інтерфейсом IDataReader, що повертає записи з полями, і адаптером для стороннього CSV-читача з несумісним інтерфейсом. Прочитати CSV-файл через інтерфейс і вивести записи.
2. Базовий рівень. Створити консольну програму конвертації даних з інтерфейсом IDataReader і читачами CSV, JSON та XML, фабричним методом вибору читача за розширенням файлу і записувачами форматів як стратегіями. Користувач вводить вхідний файл і формат виводу, програма записує результат.
3. Високий рівень. Створити бібліотеку конвертації даних з читачами й записувачами форматів (CSV, JSON, XML), реєстром форматів, що розширюється без зміни коду (OCP), фасадом Convert(input, output) і перевіркою даних. Застосунок dotnet CLI конвертує файли з аргументів; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 21. Моніторинг сервера
1. Початковий рівень. Створити консольну програму з класом метрики сервера (назва, поріг, поточне значення), подією перевищення навантаження і двома підписниками (консоль, журнал). Ввести кілька значень і вивести сповіщення.
2. Базовий рівень. Створити консольну програму моніторингу сервера за шаблоном «Спостерігач» для метрик процесора, пам’яті й диска з порогами та стратегіями сповіщень (одразу, після трьох перевищень поспіль). Користувач вводить значення метрик, програма виводить сповіщення.
3. Високий рівень. Створити бібліотеку моніторингу сервера з метриками й порогами в JSON-правилах, підписниками-сповіщувачами, декораторами сповіщувачів (затримка, групування) і журналом інцидентів. Застосунок dotnet CLI обробляє значення метрик зі стандартного введення й виводить інциденти; помилки – у Console.Error.
Варіант 22. Шаблони документів
1. Початковий рівень. Створити консольну програму з «Будівельником» ділового листа (адресат, тема, абзаци, підпис), що складає лист і виводить його текст.
2. Базовий рівень. Створити консольну програму документів з «Будівельником» (адресат, тема, абзаци, підпис) і фабричним методом типів документів (лист, наказ, довідка) з різними обов’язковими частинами, що перевіряються в Build. Користувач обирає тип і вводить частини, програма виводить документ або помилки.
3. Високий рівень. Створити бібліотеку документів (лист, наказ, довідка) з «Будівельником», шаблонами в JSON (обов’язкові частини, текст з полями для підстановки) і форматувальниками (текст, HTML) як стратегіями. Застосунок dotnet CLI створює документ за шаблоном і файлом даних з аргументів; помилки – у Console.Error.
Варіант 23. Навігатор
1. Початковий рівень. Створити консольну програму зі стратегіями розрахунку часу маршруту (відстань, кількість перехресть) для авто, пішки й велосипеда. Вивести час одного маршруту для кожної стратегії.
2. Базовий рівень. Створити консольну програму навігатора зі стратегіями часу маршруту (авто, пішки, велосипед), фабричним методом за назвою, зміною стратегії під час роботи і декоратором врахування заторів для автомобільної стратегії. Користувач вводить відстань і вид руху, програма виводить час.
3. Високий рівень. Створити бібліотеку навігатора з графом доріг (вузли, ребра з довжиною й типом), стратегіями вартості ребер (авто, пішки, велосипед) і пошуком найкращого маршруту. Застосунок dotnet CLI будує маршрут між вузлами з аргументів за картою у JSON і виводить шлях та час; помилки – у Console.Error.
Варіант 24. Розумний кінотеатр
1. Початковий рівень. Створити консольну програму з класами проєктора, звукової системи й світла та фасадом HomeTheater з методом WatchMovie, що вмикає проєктор і звук та приглушує світло. Вивести кроки запуску фільму.
2. Базовий рівень. Створити консольну програму домашнього кінотеатру з фасадом HomeTheater (методи WatchMovie і EndMovie), пристроями, що передаються через конструктор фасаду, та адаптером для «стороннього» аудіоприймача з несумісним інтерфейсом. Користувач керує кінотеатром у меню, програма виводить дії пристроїв.
3. Високий рівень. Створити бібліотеку домашнього кінотеатру з пристроями (проєктор, звук, світло), командами пульта з Undo останньої дії і профілями сценаріїв (фільм, музика). Застосунок dotnet CLI виконує сценарій зі стандартного введення й виводить стан пристроїв; помилки – у Console.Error.
Варіант 25. Шахова партія
1. Початковий рівень. Створити консольну програму з шаховою дошкою (фігури на клітинках) і командою ходу фігури з методами Execute та Undo. Виконати й скасувати кілька ходів, виводячи дошку.
2. Базовий рівень. Створити консольну програму шахової партії з дошкою, командами ходу (Execute, Undo), історією ходів з відкатом і повтором, записом партії в нотації та забороною ходу поза дошкою. Користувач вводить ходи в меню, програма виводить дошку.
3. Високий рівень. Створити бібліотеку шахової партії з командами ходу, стратегіями перевірки ходу для кожного типу фігури, що створюються фабричним методом, і збереженням партії в JSON. Застосунок dotnet CLI відтворює партію з файлу й виводить дошку після кожного ходу; помилки – у Console.Error.
Варіант 26. Консольні команди
1. Початковий рівень. Створити консольну програму з інтерфейсом команди (назва, метод Execute(string[] args)) і трьома командами (echo, sum, time). Виконувати команди, введені користувачем, і виводити результат.
2. Базовий рівень. Створити консольну оболонку з інтерфейсом команди (назва, опис, Execute(string[] args)), реєстром команд, до якого нова команда додається без зміни коду обробника (OCP), і командою help, що бере описи з команд. Користувач вводить команди з аргументами.
3. Високий рівень. Створити бібліотеку консольної оболонки з інтерфейсом команди, реєстром команд, декораторами команд (вимір часу, перевірка аргументів) і впровадженням залежностей у команди. Застосунок dotnet CLI виконує команди зі стандартного введення; помилки – у Console.Error.
Варіант 27. Ієрархія працівників
1. Початковий рівень. Створити консольну програму, що показує порушення LSP: Intern успадковує Employee з методом CalculateBonus і генерує в ньому виняток. Обчислити премії списку працівників і вивести результат.
2. Базовий рівень. Створити консольну програму з ієрархією працівників (Employee, Manager, Developer, Intern), у якій порушення LSP (стажист не має премії) виправлено розділенням інтерфейсів IBonusEligible і IOvertimeEligible. Поліморфний код обчислює премії й понаднормові для всіх типів і виводить результат.
3. Високий рівень. Створити бібліотеку кадрового обліку з ієрархією працівників, розділеними інтерфейсами (IBonusEligible, IOvertimeEligible), стратегіями премій і звітом, що використовує лише потрібні інтерфейси. Застосунок dotnet CLI обробляє працівників з JSON-файлу й виводить звіт; помилки – у Console.Error.
Варіант 28. Сервіс погоди
1. Початковий рівень. Створити консольну програму з інтерфейсом IWeatherService (температура й опис погоди для міста) і реалізацією-заглушкою з фіксованими даними. Вивести погоду для кількох міст.
2. Базовий рівень. Створити консольну програму з інтерфейсом IWeatherService, реалізацією-заглушкою і декораторами кешування (повторний запит того самого міста не звертається до сервісу) та повторних спроб при помилці з лічильником звертань. Користувач вводить міста, програма виводить погоду й кількість звертань.
3. Високий рівень. Створити бібліотеку погоди з інтерфейсом IWeatherService, адаптером формату «стороннього» сервісу, декораторами кешування й повторних спроб і реєстрацією в DI-контейнері. Застосунок dotnet CLI запитує погоду для міст з аргументів і показує статистику кешу; помилки – у Console.Error.
Варіант 29. Ігровий рівень
1. Початковий рівень. Створити консольну програму з фабричним методом, що за символом карти (# – стіна, . – підлога, E – ворог) створює об’єкти рівня. Перетворити рядки карти на об’єкти й вивести їх.
2. Базовий рівень. Створити консольну програму ігрового рівня з клітинками (стіна, підлога, ворог), «Компонувальником» кімнат і рівня, підрахунком ворогів у всіх кімнатах і виведенням карти символами. Програма будує рівень з кількох кімнат і виводить карту й кількість ворогів.
3. Високий рівень. Створити бібліотеку ігрових рівнів із завантаженням карти з текстового файлу (символи стіни, підлоги, ворога, входу й виходу), «Будівельником» рівня та перевіркою досяжності виходу від входу. Застосунок dotnet CLI перевіряє всі рівні з каталогу, заданого аргументом; помилки – у Console.Error.
Варіант 30. Банківські операції
1. Початковий рівень. Створити консольну програму переказів між рахунками зі стратегіями комісій (без комісії, фіксована, відсоткова). Виконати кілька переказів і вивести суми з комісією.
2. Базовий рівень. Створити консольну програму переказів між рахунками із сервісом переказів, що отримує стратегію комісії (без комісії, фіксована, відсоткова) і журнал через конструктор, та декоратором журналювання операцій. Користувач вводить рахунки й суму, програма виводить результат і журнал.
3. Високий рівень. Створити бібліотеку банківських операцій з рахунками, командами Deposit, Withdraw, Transfer з відміною, сповіщеннями про операції («Спостерігач») і фасадом банку. Застосунок dotnet CLI обробляє операції зі стандартного введення й виводить баланси; помилки – у Console.Error.
Порядок виконання та захисту роботи
- Опрацювати теоретичні відомості та приклади розв’язання завдань.
- Для свого варіанта визначити класи та їх відповідальності, побудувати UML-діаграму класів із зазначенням застосованих шаблонів і принципів SOLID.
- Створити рішення та проєкт; кожен тип розмістити в окремому файлі, конкретні реалізації обирати в композиційному корені (
Program.cs). - Реалізувати завдання обраного рівня складності; залежності впроваджувати через конструктор.
- Показати, як додати новий варіант поведінки (нову стратегію, декоратор, команду) без зміни наявних класів.
- Продемонструвати роботу програми викладачеві, пояснити проєктні рішення та відповісти на контрольні питання.