Page 86 - 4190
P. 86

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

            стан об’єкта таким чином, щоб у майбутньому його можна було від-
            новити в такому ж стані. Об’єкти, що задовольняють вимоги патерна
            збережувач,  повинні  визначити  два  інтерфейси;  один  обмежений,

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

            терфейсами.  Зокрема,  вони  вказують,  що  деякі  класи  повинні  мати
            подібні  інтерфейси,  а  інколи  накладають  обмеження  на  інтерфейси
            класів. Так декоратор і замісник вимагають, що інтерфейси об’єктів

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

            цювати.
                  Специфікування реалізації  об’єктів. Реалізація об’єкта  визна-
            чається його класом. Клас специфікує внутрішні дані об’єкта і його

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

            інстанціювання одного класу можна утворити багато різних об’єктів-
            екземплярів.
                  Нові  класи  можна  визначити  в  термінах  існуючих  з  батьківсь  а

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

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

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

            своїх предків. Точніше,  клас може замінити операцію, визначену у
            батьківському класі. Заміна дає  підкласам можливість обробляти за-

                                                              86
   81   82   83   84   85   86   87   88   89   90   91