Методичні вказівки до виконання самостійних робіт з дисципліни: «проектний практикум»


Проектування проекту з використанням шаблону Bridge



Сторінка3/5
Дата конвертації16.03.2017
Розмір3.38 Mb.
ТипМетодичні вказівки
1   2   3   4   5
Проектування проекту з використанням шаблону Bridge
Щоб краще зрозуміти ідею побудови шаблону Bridge і принципи його роботи, розглянемо конкретний приклад поетапно. Спочатку обговоримо встановлені вимоги, а потім проаналізуємо висновок основної ідеї шаблону і способи його застосування. Можливо, цей приклад може здатися занадто простим. Однак придивіться до обговорюваних в ньому концепціям, іям, а потім спробуйте згадати аналогічні ситуації, з якими нам доводилося стикатися раніше. Зверніть особливу увагу на наступне.

• Наявність варіацій в абстрактному представленні концепцій.

• Наявність варіацій в тому, як ці концепції реалізуються.

Гадаю, у вас не з'явиться сумнівів, що наведений нижче приклад має багато спільного з обговорювалася вище завданням підтримки декількох версій САПР. Однак ми не станемо попередньо обговорювати всі пропоновані вимоги. Як правило, приступаючи до вирішення завдання, не вдається відразу побачити всі існуючі варіації. Рекомендація. Формулюючи вимоги до проекту, намагайтеся якомога раніше і якомога частіше обмірковувати, що в ньому може змінюватися надалі. Припустимо, що нам потрібно написати програму, яка буде виводити зображення прямокутників за допомогою однієї з двох наявних графічних програм.

Вперше знайомлячись з ідеологією шаблонів проектування, люди часто надмірно зосереджуються на тих рішеннях, які пропонуються шаблонами. Це здається їм цілком розумним, оскільки дана ідеологія підноситься як сукупність оптимальних рішень різноманітних завдань. Однак це не зовсім правильний підхід. Якщо вивчати шаблони проектування переважно з точки зору тих рішень, які вони пропонують, то це ускладнює розуміння, в яких ситуаціях ті чи інші шаблони застосовуються. Кожен шаблон сам по собі повідомляє тільки про те, що треба зробити, але замовчує про те, ко ¬ гда це треба робити і чому. Я прийшов до висновку, що при вивченні шаблонів корисніше зосередитися на контексті їх застосування - тобто на тих проблемах, які намагаються вирішити з їх допомогою. Це дозволяє отримати відповіді на питання коли

І чому. Такий підхід перегукується з філософією шаблонів Александера: "Кожен шаблон описує проблему, яка виникає в даному середовищі знову і знову, а потім пропонує принцип її вирішення таким способом.

Спробуємо застосувати даний підхід до нашого випадку і сформулюємо задачу, для вирішення якої призначений шаблон Bridge. Шаблон Bridge корисний тоді, коли є деяка абстракція і існує не ¬ скільки різних варіантів її реалізації. Шаблон дозволяє абстракції та реалі ¬ зації змінюватися незалежно один від одного. Зазначені характеристики якнайкраще відповідають нашій ситуації. Тому можна зробити висновок, що шаблон Bridge слід використовувати, навіть ще не знаючи до пуття, як він реалізується на практиці. Те, що абстракцію можна буде міняти незалежно від її реалізації, означає, що нові елементи абстракції можна буде додавати, не вносячи яких змін на рівні реалізації і навпаки. Існуюче у нас рішення не забезпечує подібної незалежності змін. Не викликає сумніву, що проект був би набагато краще, якби вдалося знайти рішення, що надає таку можливість. Зауваження. Зверніть особливу увагу на те, що, навіть не знаючи конкретних способів реалізації шаблону Bridge, ми змогли прийти до висновку про можливість і корисності його застосування в нашому проекті. Пізніше ви зрозумієте, що це зауваження справедливо щодо практично всіх шаблонів проектування. Іншими словами, завжди можна встановити, що застосування того чи іншого шаблону в даній предметній області буде можливо і полезн про, навіть не маючи точного уявлення про те, як саме він може бути реалізований.

Тепер, коли досягнуто ясне розуміння стоїть перед нами проблеми, прийшов час спільними зусиллями вивести шаблон Bridge. Самостійний висновок цього шаблону допоможе нам усвідомити його складність і, одночасно, міць. Використовуємо на практиці деякі з основних положень якісного об'єктно-орієнтованого проектування - вони допоможуть нам знайти рішення, дуже близьке до шаблону Bridge.

Наше завдання полягає в тому, щоб визначити, де можливі зміни (аналіз спільності), а потім встановити, як це зміна відбувається (аналіз мінливості). За Коплін, "аналіз спільності полягає в пошуку спільних елементів, що допоможе зрозуміти, чим члени сімейства схожі один на одного." Таким чином, це процес пошуку спільних рис у всіх елементах, складових деяке сімейство (і, отже, їх відмінностей). Аналіз мінливості дозволяє встановити, яким чином члени сімейства змінюються. Мінливість має сенс тільки в межах даної спільності. Аналіз спільності передбачає виявлення структур, які навряд чи будуть змінюватися з плином часу, тоді як аналіз мінливості полягає у виявленні структур, які, ймовірно, зміняться. Аналіз мінливості має сенс тільки в термінах контексту, певного попереднім аналізом спільності. В архітектурному сенсі аналіз спільності дає архітектурі її довговічність, а аналіз мінливості сприяє досягненню зручності у використанні.

Іншими словами, якщо мінливість - це особливі випадки в рамках заданої предметної області, то спільність встановлює в ній концепції, що поєднують ці особливі випадки між собою. Загальні концепції будуть представлені в системі абстрактними класами. Варіації, виявлені при аналізі мінливості, реалізуються за допомогою створення конкретних класів, похідних від цих абстрактних класів. В об'єктно-орієнтованому проектуванні стала вже майже аксіомою практика, коли розробник, аналізуючи опис проблемної області, виділяє в ньому іменники і створює об'єкти, що представляють їх. Потім він відшукує дієслова, пов'язані з цими іменником (тобто їх дії), і реалізує їх, додаючи до об'єктів необхідні методи. Подібний процес прояви підвищеної уваги до іменником і дієсловам в більшості випадків призводить до створення занадто громіздкою ієрархії класів. Я вважаю, що аналіз спільності і мінливості як первинний інструмент виділення об'єктів, насправді, переважніше пошуку

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

• Знайти те, що змінюється, і инкапсулировать це.

• Переважно використовувати композицію замість успадкування.

Раніше для координації змінюються елементів розробники часто створювали великі схеми спадкування класів. Однак друга з наведених вище стратегій рекомендує скрізь, де тільки можливо, замінювати

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

Тепер, коли ми проаналізували, як шаблон Bridge працює, варто подивитися на нього з більш концептуальної точки зору. Шаблон включає дві частини - абстрактну (зі своїми похідними класами) та реалізації. При проектуванні з використанням шаблону Bridge корисно завжди пам'ятати про ці двох частинах. Інтерфейс в частині реалізації слід розробляти з урахуванням особливостей різних похідних класів того абстрактного класу, який цей інтерфейс буде підтримувати. Зверніть увагу на те, що проектувальник не обов'язково повинен поміщати в ІНТЕРФОМ з реалізації всіх можливих похідних класів абстрактного класу (це ще одна можлива причина виникнення "Паралічу від аналізу"). Слід брати до уваги тільки ті похідні класи, які дійсно необхідно підтримувати. Не раз і не два автори цієї книги отримували підтвердження, що навіть невелике зусилля по збільшенню гнучкості в цій частині проекту істотно його покращує. Зауваження. У мові C + + реалізація шаблону Bridge повинна здійснюватися тільки за допомогою абстрактного класу, визначального відкритий інтерфейс. У мові Java можуть використовуватися як абстрактний клас, так і інтерфейс. Вибір залежить від того, чи дає перевагу розділення в реалізації спільних рис абстрактних класів.




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

• Знайдіть те, що змінюється, і Інкапсулює це.

• Віддавайте перевагу композиції, а не спадкоємства.

Виявлення того, що змінюється, - важливий етап вивчення предметної області. У прикладі з графічними програмами ми зіткнулися з тим, що один набір варіацій використовує інший. Це і є показник того, що в даній ситуації шаблон Bridge може виявитися досить корисним. У загальному випадку, щоб визначити, який саме шаблон краще використовувати в даній ситуації, слід зіставити його з характеристиками і поведінкою сутностей в проблемній області. Знаючи відповіді на питання навіщо і що стосовно всіх відомих вам шаблонів, нескладно буде вибрати серед них саме ті, які дозволять вирішити проблему. Шаблони можуть б ть обрані ще до того, як стане відомий спосіб їх реалізації. Застосування шаблону Bridge дозволяє отримати більш стійкі проектні рішення для представлення елементів абстракції і реалізації, спрощуючи їх можливий наступне зміна. Завершуючи обговорення шаблону, буде корисним ще раз нагадати про ті принципи об'єктно-орієнтованого проектування, які використовуються в шаблоні Bridge.


Каталог: download -> version
version -> Захист навколишнього середовища від забруднення мийними засобами
version -> «Валеологічне виховання дітей дошкільного віку, як фактор формування здорового способу життя»
version -> Виписка з навчального плану
version -> Методичні рекомендації щодо викладання уроків для стійкого розвитку «Моя щаслива планета» розділ Система уроків-зустрічей для 3 класу курсу за вибором «Моя щаслива планета»
version -> Затверджую директор Зіньківської спеціалізованої школи І-ІІІ ст.№2 Л. В. Литус
version -> Наказ №526 " Про затвердження Науково-методичних рекомендацій щодо оцінювання навчальних досягнень учнів та оформлення сторінок класних журналів загальноосвітніх
version -> Методичні рекомендації Донецьк  2006 ббк 64. 9 (ІІ) 722 ш 30
version -> Вимоги до оформлення посібника
version -> Програма бібліотечно-бібліографічних знань для учнів 1-11 класів


Поділіться з Вашими друзьями:
1   2   3   4   5




База даних захищена авторським правом ©uchika.in.ua 2020
звернутися до адміністрації

    Головна сторінка