Page 86 - 4190
P. 86
виконання, вказуючи їх основні елементи, і те, які дані можна пере-
давати через інтерфейс. Патерн також може вказати, що не повинно
проходити через інтерфейс. Добрим прикладом у даному випадку є
зберігач. Він описує, як можна інкапсулювати і зберегти внутрішній
стан об’єкта таким чином, щоб у майбутньому його можна було від-
новити в такому ж стані. Об’єкти, що задовольняють вимоги патерна
збережувач, повинні визначити два інтерфейси; один обмежений,
який дозволяє клієнтам тримати у себе і копіювати збережену інфо-
рмацію, а інші можуть користуватися тільки самим об’єктом для збе-
реження і вилучення інформації про стан їх збережувача.
Патерни проектування специфікують також відношення між ін-
терфейсами. Зокрема, вони вказують, що деякі класи повинні мати
подібні інтерфейси, а інколи накладають обмеження на інтерфейси
класів. Так декоратор і замісник вимагають, що інтерфейси об’єктів
цих патернів були ідентичні інтерфейсам, що декорують і заміняють
об’єкти відповідно. Інтерфейс об’єкта, що належить патерну Відвіду-
вач, повинен відображати усі класи об’єктів, з якими він буде пра-
цювати.
Специфікування реалізації об’єктів. Реалізація об’єкта визна-
чається його класом. Клас специфікує внутрішні дані об’єкта і його
представлення, а також операції, які об’єкт може виконати. Об’єкти
створюються за допомогою інстанцювання класу. В процесі інстан-
цювання виділяється пам'ять для змінних екземплярів (внутрішніх да-
них об’єкта), і з цими даними асоціюються операції. За допомогою
інстанціювання одного класу можна утворити багато різних об’єктів-
екземплярів.
Нові класи можна визначити в термінах існуючих з батьківсь а
допомогою успадкування класів. Якщо підклас успадковує батьківсь-
кий клас, то він включає визначення усіх даних і операцій, що визна-
чені в батьківському класі. Такий об’єкт зможе виконувати усі опера-
ції, визначені в підкласі і в його предків. Клас називається абстракт-
ним, якщо його єдине значення є визначення загального інтерфейсу
для усіх своїх підкласів. Абстрактний клас делегує реалізацію усі або
частину своїх операцій підкласам, тому у нього не може бути екземп-
лярів. Операції, що оголошені але не реалізовані в абстрактному кла-
сі, називають абстрактними. Клас, що не є абстрактним, називають
конкретним. Підкласи можуть уточняти або перевизначати поведінку
своїх предків. Точніше, клас може замінити операцію, визначену у
батьківському класі. Заміна дає підкласам можливість обробляти за-
86