Назад Вперед Зміст


Варіанти задач

У кожному варіанті потрібно створити інтерфейс і реалізувати його в класах, які його наслідують.

  1. Програма має забезпечувати різні варіанти алгоритмів або поведінки.
  2. Необхідно змінювати поведінку кожного екземпляра класу.
  3. Потрібно змінювати поведінку об'єктів на етапі виконання програми.
  4. Введення інтерфейсу дозволяє клієнтським класам нічого не знати про класи, які реалізують цей інтерфейс і інкапсулюють конкретні алгоритми.

Спосіб розв’язання

  1. Відділення процедури вибору алгоритму від його реалізації. Це дозволяє зробити вибір на основі контексту.

Варіант 1

Існують різні види водного транспорту, які використовують різні джерела енергії: електрика, бензин, вітер тощо. Є гібридні види водного транспорту. Загалом вони схожі й відрізняються переважно типом джерела енергії. До того ж ми можемо змінити джерело енергії, модифікувавши своє плавзасіб. У цьому випадку цілком доцільно застосувати патерн «Стратегія».

Існують різні види водного транспорту, які використовують різні джерела енергії: електрика, бензин, вітер тощо. Деякі плавзасоби є гібридними та можуть комбінувати кілька джерел.

Усі ці види транспорту подібні за своєю структурою, і головна відмінність полягає у виборі типу джерела енергії. До того ж, ми можемо змінювати джерело енергії, модифікуючи наш плавзасіб.

У такій ситуації доцільно застосувати патерн «Стратегія», щоб винести логіку вибору джерела енергії в окремі стратегії.

Можливі джерела енергії

Джерело енергії Особливості
Електрика Екологічно чисте, тихе, потребує зарядки
Бензин Висока швидкість, доступність, але забруднює довкілля
Вітер (парус) Повністю безкоштовне джерело, залежність від погоди
Гібрид Комбінує кілька джерел, гнучкість використання

Тут варто використати патерн «Стратегія».

Варіант 2

У циклі n разів випадковим чином генеруємо число з діапазону [1,5]. Випадковим чином генеруємо довжини [10,50] трьох, двох або однієї сторін відповідно (довільний, прямокутний, рівносторонній, рівнобедрений, рівнобедрений прямокутний). Якщо можна побудувати трикутник із такими сторонами, обчислити його периметр і площу, застосувавши патерн «Стратегія».

Варіант 3

Дано масив рядків, кожен рядок містить одне ціле число. Визначити користувацькі стратегії сортування, наприклад: сортувати список рядків за довжиною, за алфавітом, за зростанням чисел (реалізація інтерфейсу стратегії), залежно від заданої умови. У циклі n разів випадково генеруємо число з діапазону [1,3].

Варіант 4

Авіакомпанії пропонують знижки протягом кількох місяців (липень–грудень). У вас може бути один модуль, який визначає правила ціноутворення залежно від номера місяця. У циклі n разів випадково генеруємо число з діапазону [1,12].

Варіант 5

На сайті є групи користувачів: адміністратор, редактор і гість. Кожна група має свої особливості. Адміністратори можуть додавати, видаляти, редагувати і читати матеріали. Редактори — лише редагувати і читати. Гості — тільки читати.

Варіант 6

У готелі є групи працівників: адміністратор, покоївка, охоронець. Адміністратори можуть реєструвати гостей, видавати кімнати, заходити в номер, виписувати. Покоївки — лише заходити в номер і прибирати. Охоронець — тільки заходити в номер. Усі працівники можуть розмістити гостя в готелі.

Варіант 7

Предметна область: АТС. АТС має список тарифів на міжміські розмови. Є два типи тарифів: звичайний і пільговий. У класі «АТС» реалізувати методи додавання звичайного тарифу та пільгового тарифу. Також — метод обчислення середньої вартості з урахуванням знижок.

Варіант 8

Предметна область: Вокзал. Клас «Вокзал» має список тарифів на різні напрямки. Деякі тарифи мають знижку у відсотках. Реалізувати методи додавання тарифів (зі знижкою та без) і пошук найменшого тарифу.

Варіант 9

Предметна область: ЖЕК. ЖЕК зберігає інформацію про мешканців. Є два типи: з пільгами та без. Реалізувати методи додавання мешканців і підрахунок загальної вартості наданих послуг.

Варіант 10

Предметна область: Аеропорт. Каса аеропорту має список тарифів. Тариф — це напрямок і вартість перевезення. На деякі напрямки діє фіксована знижка. Реалізувати методи додавання тарифу і пошуку найдорожчого.

Варіант 11

Предметна область: Банк. Система зберігає вкладників і суми вкладів. Деякі вкладники отримують додаткову фіксовану суму. Реалізувати метод додавання вкладника та обчислення загальної суми.

Варіант 12

Предметна область: Відділ нарахування зарплат. Зберігаються дані про оплату за види робіт. На деякі — надбавка у відсотках. Реалізувати методи додавання і обчислення середньої оплати.

Варіант 13

Предметна область: Фірма вантажоперевезень. Є список тарифів. Деякі мають знижку у відсотках. Реалізувати методи додавання тарифу і пошуку з найменшою ціною.

Варіант 14

Предметна область: Готель. Зберігається інформація про номери та ціни. На деякі — знижка у відсотках. Реалізувати методи додавання і підрахунок середньої вартості.

Варіант 15

Предметна область: Інтернет-провайдер. Зберігаються клієнти. Деяким надається фіксована знижка. Реалізувати метод додавання клієнта і підрахунок загальної вартості послуг.

Постановка задачі

Інтернет-провайдер зберігає інформацію про клієнтів. Деяким клієнтам надається фіксована знижка.

Необхідно реалізувати:

Пояснення до постановки

Для обчислення вартості послуг у різних клієнтів можуть використовуватись різні стратегії:

Клас Client зберігає інформацію про клієнта (ім’я, тариф, стратегію знижки). Клас Provider містить список клієнтів, метод додавання нового клієнта та метод підрахунку загальної суми.

Варіант 16

Предметна область: Інтернет-магазин. Зберігаються товари з ціною та назвою. Деякі — зі знижкою у відсотках. Реалізувати метод додавання і пошуку товару з мінімальною вартістю.

Варіант 17

Предметна область: Ресторан. Меню має тарифи: комплексні (сніданок, обід, вечеря) та фірмові страви. На комплексні надається фіксована знижка. Реалізувати метод додавання і пошуку найдорожчого замовлення.

Назад Вперед Зміст