Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Транспортні засоби
1. Початковий рівень. Створити базовий клас Vehicle з властивостями Model і EngineVolume та віртуальним методом AnnualTax(), похідні класи Car, Truck (податок залежить від вантажопідйомності) і Motorcycle з перевизначенням методу. Вивести податок для масиву транспортних засобів.
2. Базовий рівень. Створити ієрархію Vehicle → Car, Truck, Motorcycle з конструкторами, що викликають base(…) і перевіряють свої дані, перевизначеними AnnualTax() і ToString(). Консольна програма зчитує автопарк, виводить таблицю податків, суму за типами (is) і найдорожчий у податку транспортний засіб.
3. Високий рівень. Створити ієрархію транспорту з проміжним класом MotorVehicle (двигун) і Bicycle без двигуна, запечатаними кінцевими класами та власним винятком VehicleRegistrationException. Застосунок dotnet CLI завантажує автопарк зі стандартного введення, обчислює податки за ставками з опцій, виводить звіт з групуванням за типами через switch за типами і некоректні записи в Console.Error; коди завершення: 0, 1, 2.
Варіант 2. Спортивні тренування
1. Початковий рівень. Створити базовий клас Workout з тривалістю й віртуальним методом Calories(double weight) та похідні класи Running, Swimming, Yoga з різними коефіцієнтами. Вивести калорії для тижневого плану тренувань.
2. Базовий рівень. Створити ієрархію тренувань із властивостями інтенсивності (перевірка в конструкторах через base), перевизначеними Calories і Describe, та клас TrainingPlan з поліморфним масивом. Консольна програма формує план на тиждень і виводить калорії за днями та типами.
3. Високий рівень. Створити ієрархію тренувань з проміжними класами CardioWorkout (пульсові зони) і StrengthWorkout (підходи, повтори), перевизначенням Equals/GetHashCode для виявлення дублікатів. Застосунок dotnet CLI обробляє щоденник тренувань зі стандартного введення й виводить тижневий звіт і дублікати; помилки – у Console.Error.
Варіант 3. Підписки на сервіси
1. Початковий рівень. Створити базовий клас Subscription з місячною ціною й віртуальним методом MonthlyCharge() та похідні класи FamilySubscription (кількість учасників) і StudentSubscription (знижка 50 %). Вивести суму списань за масивом підписок.
2. Базовий рівень. Створити ієрархію підписок із датою початку, пробним періодом у базовому класі (protected властивість), перевизначеними MonthlyCharge(DateTime month) і ToString. Консольна програма обчислює списання за рік для кількох підписок і виводить таблицю за місяцями.
3. Високий рівень. Створити ієрархію підписок з апгрейдом тарифу (Upgrade повертає новий об’єкт іншого похідного типу з пропорційним перерахунком), запечатаними тарифами й власним винятком SubscriptionException. Застосунок dotnet CLI обробляє журнал подій підписок зі стандартного введення і виводить рахунки клієнтів; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 4. Ігрові персонажі
1. Початковий рівень. Створити базовий клас Character з іменем, здоров’ям і віртуальним методом Attack(), що повертає шкоду, та похідні класи Warrior, Mage, Archer. Кожен персонаж атакує один раз; вивести шкоду.
2. Базовий рівень. Створити ієрархію персонажів з методом TakeDamage(int damage) у базовому класі (здоров’я невід’ємне), віртуальним методом Defend (воїн блокує частину шкоди) і методом Attack(Character target). Консольна програма моделює бій двох команд раундами до перемоги.
3. Високий рівень. Створити ієрархію персонажів з рівнями, спеціальними вміннями (віртуальний метод UseAbility з перевіркою мани або енергії) і запечатаними класами. Застосунок dotnet CLI моделює турнір персонажів зі стандартного введення з фіксованим зерном --seed, виводить журнал боїв і таблицю перемог; помилки – у Console.Error.
Варіант 5. Медіатека
1. Початковий рівень. Створити базовий клас MediaItem з назвою, роком і віртуальним методом Describe() та похідні класи Book (автор, сторінки), Movie (тривалість) і Album (виконавець, треки). Вивести опис елементів медіатеки.
2. Базовий рівень. Створити ієрархію медіа з перевизначеними ToString, Equals і GetHashCode (однакова назва та рік – той самий елемент), методом пошуку за назвою без урахування регістру і звітом кількості елементів кожного типу (is). Консольна програма керує медіатекою в меню.
3. Високий рівень. Створити ієрархію медіа з віртуальною властивістю Duration (книга – оцінка часу читання) і класом Library з методами фільтрації за типом і роком. Застосунок dotnet CLI імпортує каталог зі стандартного введення, відкидає дублікати, виводить звіт і загальну тривалість за типами; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 6. Служба доставки
1. Початковий рівень. Створити базовий клас Delivery з вагою та відстанню й віртуальним методом Cost(), похідні класи StandardDelivery, ExpressDelivery (+50 %) і InternationalDelivery (мито). Вивести вартість кількох відправлень.
2. Базовий рівень. Створити ієрархію доставок із перевіркою ваги в конструкторах (різні ліміти для типів), віртуальним методом EstimatedDays() і власним винятком DeliveryLimitException з допустимим і фактичним значенням. Консольна програма оформлює відправлення з введення й перехоплює винятки.
3. Високий рівень. Створити ієрархію доставок з тарифами зон, запечатаними класами та методом Create у базовому класі, який за рядком типу повертає відповідний об’єкт. Застосунок dotnet CLI обробляє замовлення зі стандартного введення, групує їх за типами й формує рахунок клієнтам; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 7. Квитки
1. Початковий рівень. Створити базовий клас Ticket з базовою ціною й віртуальним методом Price() та похідні класи StudentTicket (−50 %) і SeniorTicket (−30 %). Вивести ціни квитків у масиві.
2. Базовий рівень. Створити ієрархію квитків з перевіркою документа в конструкторах пільгових квитків (номер студентського квитка, вік пенсіонера), перевизначеними Price і ToString та методом IsValidFor(DateTime date). Консольна програма продає квитки й виводить виручку за типами.
3. Високий рівень. Створити ієрархію квитків з багаторазовими квитками (кількість поїздок) і абонементами (період дії), запечатаними класами та власним винятком TicketValidationException. Застосунок dotnet CLI обробляє журнал продажу й контролю зі стандартного введення і виводить звіт порушень; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 8. Складські вантажі
1. Початковий рівень. Створити базовий клас Cargo з вагою й віртуальним методом StorageCost(int days) та похідні класи FragileCargo (подвійна ціна) і HazardousCargo (фіксована доплата). Вивести вартість зберігання для масиву вантажів.
2. Базовий рівень. Створити ієрархію вантажів з віртуальною властивістю RequiresSpecialZone, методом CanStackOn(Cargo other) (крихкий вантаж не можна ставити знизу) і перевизначеним ToString. Консольна програма розміщує вантажі на стелажах і повідомляє про порушення.
3. Високий рівень. Створити ієрархію вантажів з температурними вимогами (RefrigeratedCargo), класом Warehouse із зонами та методом розміщення, що використовує switch за типами вантажів. Застосунок dotnet CLI обробляє надходження й відвантаження зі стандартного введення і виводить завантаженість зон; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 9. Напої кав’ярні
1. Початковий рівень. Створити базовий клас Drink з назвою й віртуальним методом Price() та похідні класи Coffee (розмір), Tea (сорт) і Smoothie (кількість фруктів). Вивести замовлення з масиву напоїв і загальну суму.
2. Базовий рівень. Створити ієрархію напоїв з додатками (молоко, сироп) у базовому класі, віртуальним методом Prepare(), що повертає кроки приготування, і перевизначеним Equals для однакових напоїв. Консольна програма формує замовлення з меню й об’єднує однакові позиції в чеку.
3. Високий рівень. Створити ієрархію напоїв з сезонними спеціальними напоями (запечатані класи з обмеженим періодом продажу) і власним винятком OutOfStockException для відсутніх інгредієнтів. Застосунок dotnet CLI обробляє замовлення за день зі стандартного введення, виводить чек і звіт продажів за типами; помилки – у Console.Error.
Варіант 10. Страхові поліси
1. Початковий рівень. Створити базовий клас InsurancePolicy зі страховою сумою й віртуальним методом Premium() та похідні класи CarPolicy, HomePolicy і TravelPolicy з різними ставками. Вивести премії для масиву полісів.
2. Базовий рівень. Створити ієрархію полісів з коефіцієнтами ризику (вік водія, площа житла, країна подорожі) у конструкторах із перевірками, перевизначеними Premium() і ToString() та методом IsActive(DateTime date). Консольна програма оформлює поліси й виводить сумарні премії.
3. Високий рівень. Створити ієрархію полісів з методом ProcessClaim(decimal loss) (франшиза, ліміт виплат, власний виняток ClaimRejectedException з причиною). Застосунок dotnet CLI обробляє поліси та страхові випадки зі стандартного введення і виводить звіт виплат і відмов; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 11. Документи
1. Початковий рівень. Створити базовий клас Document з номером і датою та віртуальним методом Print(), похідні класи Invoice (сума), Act (перелік робіт) і Contract (сторони). Вивести документи з масиву.
2. Базовий рівень. Створити ієрархію документів з автоматичною нумерацією в базовому класі (префікс визначає віртуальна властивість похідного класу), перевизначеним Print(), що доповнює базовий заголовок, і методом Validate(). Консольна програма формує пакет документів і виводить друковані форми.
3. Високий рівень. Створити ієрархію документів зі статусами (чернетка, підписано, скасовано) у базовому класі, забороною змін підписаних документів (виняток) і рахунком-фактурою як нащадком Invoice (sealed). Застосунок dotnet CLI обробляє операції з документами зі стандартного введення і виводить реєстр; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 12. Електроприлади
1. Початковий рівень. Створити базовий клас Appliance з потужністю й віртуальним методом DailyConsumption() та похідні класи Fridge (цикли компресора), WashingMachine (прання на день) і Heater (години роботи). Вивести добове споживання.
2. Базовий рівень. Створити ієрархію приладів із режимом очікування в базовому класі (protected властивість), перевизначеним розрахунком і методом Describe(), та клас House з поліморфним масивом і методом вартості за місяць. Консольна програма виводить звіт споживання.
3. Високий рівень. Створити ієрархію приладів з розумними приладами (планування роботи за двозонним тарифом, запечатані класи) і методом Optimize(). Застосунок dotnet CLI моделює добу за списком приладів зі стандартного введення, порівнює вартість до й після оптимізації; помилки – у Console.Error.
Варіант 13. Нерухомість
1. Початковий рівень. Створити базовий клас Property з площею й ціною за м² та віртуальним методом Value(), похідні класи Apartment (поверх), House (ділянка) і Land. Вивести оцінку об’єктів.
2. Базовий рівень. Створити ієрархію нерухомості з коефіцієнтами району в базовому класі, перевизначеними Value() і ToString(), та Equals за кадастровим номером. Консольна програма керує каталогом, фільтрує об’єкти за типом (is) і ціновим діапазоном.
3. Високий рівень. Створити ієрархію з комерційною нерухомістю (оренда, доходність) і методом Compare(Property other). Застосунок dotnet CLI імпортує оголошення зі стандартного введення, відкидає дублікати за кадастровим номером, розраховує оцінки й виводить найвигідніші пропозиції; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 14. Навчальні курси
1. Початковий рівень. Створити базовий клас Course з назвою, кількістю годин і віртуальним методом Price(), похідні класи OnlineCourse, OfflineCourse (оренда аудиторії) і BlendedCourse. Вивести ціни курсів.
2. Базовий рівень. Створити ієрархію курсів із розкладом занять (віртуальний метод Schedule()), обмеженням кількості слухачів для очних курсів і методом Enroll(string student), що генерує виняток при переповненні. Консольна програма записує слухачів і виводить розклад.
3. Високий рівень. Створити ієрархію курсів із сертифікацією (запечатаний клас CertifiedCourse), знижками для груп і власним винятком EnrollmentException. Застосунок dotnet CLI обробляє заявки зі стандартного введення і виводить списки груп, доходи курсів і відмови; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 15. Шахові фігури
1. Початковий рівень. Створити базовий клас Piece з позицією на дошці та віртуальним методом CanMoveTo(int row, int col) і похідні класи Rook, Bishop, Knight. Перевірити кілька ходів кожної фігури.
2. Базовий рівень. Створити ієрархію всіх шахових фігур (без рокіровки й взяття на проході), клас Board з перевіркою, що шлях вільний для тури, слона й ферзя, і метод MoveTo з винятком для неможливого ходу. Консольна програма виконує ходи з введення в шаховій нотації e2 e4.
3. Високий рівень. Створити ієрархію фігур із кольором, взяттям фігур суперника і перевіркою шаху після ходу (віртуальний метод AttackedSquares). Застосунок dotnet CLI відтворює партію зі стандартного введення, виводить дошку після кожного ходу й повідомляє про неможливі ходи в Console.Error; коди завершення: 0, 1, 2.
Варіант 16. Платники податків
1. Початковий рівень. Створити базовий клас Taxpayer з доходом і віртуальним методом Tax(), похідні класи Individual (18 % + 5 %), Entrepreneur (5 % єдиного податку) і Company (18 % прибутку). Вивести податки (ставки задано константами).
2. Базовий рівень. Створити ієрархію платників із перевіркою ідентифікаційних кодів у конструкторах (10 або 8 цифр), перевизначеними Tax() і ToString() та методом декларації за квартал. Консольна програма обчислює податки для списку платників і виводить підсумок за типами.
3. Високий рівень. Створити ієрархію платників з пільгами (запечатані похідні класи), власним винятком DeclarationException і методом звіряння задекларованого та розрахункового податку. Застосунок dotnet CLI обробляє декларації зі стандартного введення і виводить звіт розбіжностей; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 17. Рослини теплиці
1. Початковий рівень. Створити базовий клас Plant з назвою й віртуальним методом WaterNeed() (мл на день), похідні класи Tomato, Cucumber і Cactus. Вивести добову потребу у воді для теплиці.
2. Базовий рівень. Створити ієрархію рослин з віртуальними методами IsComfortable(double temperature, double humidity) і Grow(int days), станом здоров’я в базовому класі та перевизначеним ToString. Консольна програма моделює тиждень із введеними умовами.
3. Високий рівень. Створити ієрархію рослин зі стадіями росту (віртуальна властивість, що змінює потреби), класом Greenhouse і планом догляду. Застосунок dotnet CLI моделює сезон за погодою зі стандартного введення, виводить урожай і проблемні дні; помилки – у Console.Error.
Варіант 18. Спортсмени
1. Початковий рівень. Створити базовий клас Athlete з іменем, результатом і віртуальним методом MeetsStandard(), похідні класи Runner, Swimmer і Cyclist з нормативами. Вивести спортсменів, які виконали норматив.
2. Базовий рівень. Створити ієрархію спортсменів з віртуальним методом Points() (очки за результатом, для бігунів і плавців менший час – більше очок), перевизначеними ToString і Equals. Консольна програма формує рейтинг за очками й виводить найкращого в кожній дисципліні.
3. Високий рівень. Створити ієрархію спортсменів із віковими категоріями й таблицями нормативів у запечатаних класах. Застосунок dotnet CLI імпортує протоколи змагань зі стандартного введення, присвоює розряди, будує рейтинг і виводить некоректні результати в Console.Error; коди завершення: 0, 1, 2.
Варіант 19. Готельні номери
1. Початковий рівень. Створити базовий клас Room з ціною за ніч і віртуальним методом Cost(int nights), похідні класи StandardRoom, SuiteRoom (сніданок) і Apartment (прибирання). Вивести вартість проживання.
2. Базовий рівень. Створити ієрархію номерів з місткістю (перевірка в конструкторах), сезонними коефіцієнтами в базовому класі й перевизначеними Cost та Describe. Консольна програма підбирає номер за кількістю гостей і бюджетом та виводить варіанти, упорядковані за ціною.
3. Високий рівень. Створити ієрархію номерів із додатковими послугами (віртуальний метод AvailableServices), бронюванням і власним винятком BookingException. Застосунок dotnet CLI обробляє бронювання зі стандартного введення, виводить рахунки гостей і завантаженість за типами номерів; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 20. Музичні інструменти
1. Початковий рівень. Створити базовий клас Instrument з назвою й віртуальним методом Play(string note), похідні класи Guitar, Flute і Drum (барабан ігнорує висоту ноти). Виконати коротку мелодію для масиву інструментів.
2. Базовий рівень. Створити ієрархію інструментів з діапазоном нот у базовому класі (перевірка ноти – виняток), віртуальною властивістю Family і методом Tune(). Консольна програма розподіляє партію між інструментами оркестру й повідомляє про ноти поза діапазоном.
3. Високий рівень. Створити ієрархію інструментів з транспонуючими інструментами (запечатані класи зі зсувом тональності) і класом Orchestra. Застосунок dotnet CLI зчитує партитуру зі стандартного введення, розписує партії для інструментів, виводить таблицю й помилки діапазону в Console.Error; коди завершення: 0, 1, 2.
Варіант 21. Замовлення їжі
1. Початковий рівень. Створити базовий клас Dish з ціною й віртуальним методом Price(), похідні класи Pizza (розмір), Sushi (кількість шматків) і Burger (подвійна котлета). Вивести чек для масиву страв.
2. Базовий рівень. Створити ієрархію страв з модифікаторами (додаткові інгредієнти в базовому класі), перевизначеними Price і ToString, та методом CookingMinutes(). Консольна програма формує замовлення, виводить чек і орієнтовний час готовності (найдовша страва).
3. Високий рівень. Створити ієрархію страв з комбо-наборами (композиція страв у класі Combo, похідному від Dish) і власним винятком InvalidOrderException. Застосунок dotnet CLI обробляє замовлення зі стандартного введення, застосовує знижки для наборів і виводить чеки; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 22. Ігрові бонуси
1. Початковий рівень. Створити базовий клас PowerUp з тривалістю й віртуальним методом Apply(Player player) та похідні класи Shield, SpeedBoost і Heal. Застосувати бонуси до гравця й вивести його стан.
2. Базовий рівень. Створити ієрархію бонусів з методом Tick() (зменшення тривалості) і віртуальним методом Expire(Player player), що скасовує ефект, та клас Player з масивом активних бонусів. Консольна програма моделює 10 кроків гри.
3. Високий рівень. Створити ієрархію бонусів із комбінованими ефектами й правилами несумісності (віртуальний метод ConflictsWith), запечатаними класами рідкісних бонусів. Застосунок dotnet CLI моделює гру за сценарієм зі стандартного введення і виводить журнал ефектів; помилки – у Console.Error.
Варіант 23. Датчики IoT
1. Початковий рівень. Створити базовий клас Sensor з ідентифікатором і віртуальним методом IsAlarm(double value), похідні класи TemperatureSensor, HumiditySensor і MotionSensor. Перевірити кілька вимірювань.
2. Базовий рівень. Створити ієрархію датчиків з порогами в конструкторах, віртуальним методом Format(double value) (одиниці вимірювання) і журналом тривог у базовому класі. Консольна програма обробляє показники з введення й виводить тривоги за датчиками.
3. Високий рівень. Створити ієрархію датчиків з калібруванням, фільтрацією шуму (віртуальний метод) і власним винятком SensorFaultException для несправних показників. Застосунок dotnet CLI обробляє потік показників зі стандартного введення (id;час;значення) і виводить тривоги та несправності; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 24. Способи оплати
1. Початковий рівень. Створити базовий клас Payment із сумою й віртуальним методом Fee(), похідні класи CardPayment (1,5 %), CashPayment (0) і CryptoPayment (фіксована комісія). Вивести комісії для масиву платежів.
2. Базовий рівень. Створити ієрархію платежів з віртуальним методом Process(decimal balance), що повертає результат або генерує власний виняток PaymentDeclinedException з причиною (ліміт картки, нестача готівки), і перевизначеним ToString. Консольна програма обробляє платежі й виводить звіт.
3. Високий рівень. Створити ієрархію платежів з поверненням коштів (віртуальний метод Refund) і запечатаними типами, класом PaymentProcessor з повторними спробами. Застосунок dotnet CLI обробляє журнал транзакцій зі стандартного введення, виводить звіт успішних, відхилених і повернених платежів; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 25. Лабораторні прилади
1. Початковий рівень. Створити базовий клас Instrument з назвою, похибкою й віртуальним методом Measure(double trueValue), похідні класи Thermometer, Manometer і Scales. Вивести виміряні значення.
2. Базовий рівень. Створити ієрархію приладів з діапазоном вимірювань (виняток поза діапазоном), віртуальним методом Unit і датою повірки в базовому класі; прилад із простроченою повіркою не вимірює. Консольна програма виконує серію вимірювань і виводить результати з похибками.
3. Високий рівень. Створити ієрархію приладів з цифровими нащадками (запечатані класи з роздільною здатністю) і класом Laboratory. Застосунок dotnet CLI обробляє журнал вимірювань зі стандартного введення, обчислює середнє та невизначеність для кожного приладу і виводить відхилені вимірювання в Console.Error; коди завершення: 0, 1, 2.
Варіант 26. Прокат транспорту
1. Початковий рівень. Створити базовий клас RentalVehicle з тарифом за хвилину й віртуальним методом Cost(int minutes), похідні класи Scooter (плата за старт), Bike і Car (мінімум 30 хвилин). Вивести вартість поїздок.
2. Базовий рівень. Створити ієрархію прокатного транспорту із зарядом або пальним у базовому класі (protected), віртуальним методом CanStart() і методом EndRide(int minutes, double km). Консольна програма моделює оренди й виводить рахунки.
3. Високий рівень. Створити ієрархію прокатного транспорту з тарифними пакетами (запечатані класи-обгортки через композицію) і власним винятком RentalException. Застосунок dotnet CLI обробляє поїздки зі стандартного введення і виводить виручку за типами; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 27. Турнірні системи
1. Початковий рівень. Створити базовий клас Tournament з масивом команд і віртуальним методом Pairs(), що повертає пари першого туру, та похідні класи RoundRobin і Knockout. Вивести пари для 8 команд.
2. Базовий рівень. Створити ієрархію турнірів з віртуальним методом генерації всіх турів (кругова система – алгоритм «колеса», олімпійська – з перевіркою кількості команд як степеня двійки) і методом RecordResult. Консольна програма проводить турнір із введеними результатами.
3. Високий рівень. Створити ієрархію турнірів зі швейцарською системою (запечатаний клас) і власним винятком TournamentException. Застосунок dotnet CLI проводить турнір за результатами зі стандартного введення, виводить таблиці після кожного туру і переможця; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 28. Меблі на замовлення
1. Початковий рівень. Створити базовий клас Furniture з розмірами й віртуальним методом MaterialArea(), похідні класи Wardrobe, Table і Chair. Вивести площу матеріалу для замовлення.
2. Базовий рівень. Створити ієрархію меблів з матеріалом і ціною за м² у базовому класі, перевизначеними MaterialArea і Estimate() (кошторис із фурнітурою) та перевіркою розмірів у конструкторах. Консольна програма формує замовлення й виводить кошторис.
3. Високий рівень. Створити ієрархію меблів із модульними меблями (композиція модулів у класі ModularWardrobe), розкроєм листів матеріалу і власним винятком DesignException. Застосунок dotnet CLI обробляє замовлення зі стандартного введення, виводить кошторис і кількість листів; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 29. Космічні апарати
1. Початковий рівень. Створити базовий клас Spacecraft з масою й пальним і віртуальним методом DeltaV(), похідні класи Satellite, Probe і Rocket з різними двигунами. Вивести запас характеристичної швидкості.
2. Базовий рівень. Створити ієрархію апаратів з віртуальним методом ExecuteManeuver(double deltaV), що витрачає пальне або генерує виняток при нестачі, і перевизначеним ToString. Консольна програма виконує план маневрів для кількох апаратів.
3. Високий рівень. Створити ієрархію апаратів з багатоступеневою ракетою (композиція ступенів), запечатаними класами й власним винятком MissionFailedException. Застосунок dotnet CLI моделює місії зі стандартного введення і виводить журнал маневрів та залишок пального; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 30. Вакансії
1. Початковий рівень. Створити базовий клас Vacancy з назвою, зарплатою й віртуальним методом Describe(), похідні класи FullTimeVacancy, PartTimeVacancy (години на тиждень) і Internship (тривалість). Вивести вакансії.
2. Базовий рівень. Створити ієрархію вакансій з вимогами (досвід, навички) у базовому класі й віртуальним методом Matches(Candidate candidate) з різними правилами для стажування. Консольна програма підбирає вакансії для введеного кандидата.
3. Високий рівень. Створити ієрархію вакансій з рейтингом відповідності (віртуальний метод Score) і перевизначеними Equals/GetHashCode для дублікатів. Застосунок dotnet CLI обробляє вакансії й кандидатів зі стандартного введення, виводить найкращі збіги та дублікати; помилки – у Console.Error; коди завершення: 0, 1, 2.
Порядок виконання та захисту роботи
- Опрацювати теоретичні відомості та приклади розв’язання завдань.
- Побудувати UML-діаграму ієрархії класів свого варіанта: базовий клас, похідні класи, віртуальні та перевизначені члени; перевірити кожне наслідування реченням «X є Y».
- Створити рішення та проєкт; кожен клас розмістити в окремому файлі.
- Реалізувати ієрархію відповідно до обраного рівня складності: конструктори з
base(…), віртуальні методи, перевизначенняToString(іEquals/GetHashCode, якщо цього вимагає завдання), поліморфний масив об’єктів. - Перевірити роботу програми; у налагоджувачі переглянути фактичні типи елементів поліморфного масиву та покроково пройти виклик віртуального методу (F11).
- Продемонструвати роботу програми викладачеві, пояснити програмний код і відповісти на контрольні питання.