Page 85 - 4190
P. 85
ють сигнатурою операції. Множина сігнатур усіх визначених для
об’єкта операцій називають інтерфейсом цього об’єкта. Інтерфейс
описує усі множини запитів, які можна відправити об’єкта. Будь-який
запит, сінгатура якого відповідає інтерфейсу об’єкта, може бути йому
посланий.
Специфікування об’єктів інтерфейсу. Тип – ім’я, що викорис-
товується для позначення конкретного інтерфейсу. Якщо говорити,
що об’єкт має тип Window, то він готовий приймати запити на вико-
нання будь-яких операцій, що визначені в інтерфейсі з ім’ям
Window. У одного об’єкта може бути декілька типів. У той же час
об’єкти, що дуже відрізняються, можуть поділяти загальний тип. Час-
тина інтерфейсу об’єкта може бути охарактеризована одним типом а
частина – іншим типом. Два об’єкти одного і того ж типу повинні
поділяти тільки частину своїх інтерфейсів. Інтерфейси можуть міс-
тити інші інтерфейси, як підмножини. У даному випадку другий тип
називають супертипом для першого.
В об’єктно-орієнтованих системах інтерфейс об’єкта нічого не
говорить про його реалізацію, тому що різні об’єкти можуть реалізо-
вувати подібні запити зовсім по-різному. Це означає, що два об’єкти з
різними реалізаціями можуть мати одинакові інтерфейси. Якщо
об’єкту посилають запит, то операція, яку він буде виконувати, зале-
жить як від запиту, так і від об’єкта адресата. Різні об’єкти, що під-
тримують одинакові інтерфейси, можуть виконувати у відповіді на
такі запити різні операції. Асоціацію запиту з об’єктом і однією з йо-
го операцій під час виконання називають динамічним зв’язуванням.
Динамічне зв’язування означає, що відправлення деякого запиту не
визначається ніякою конкретною реалізацією до моменту виконання.
Отже, можна написати програму, яка чекає об’єкт з конкретним ін-
терфейсом, точно знаючи, що будь-який об’єкт з подібним інтерфей-
сом зможе прийняти цей запит. Крім того, динамічне зв’язування до-
зволяє під час виконання підставити замість одного об’єкта інший,
якщо він має точно такий самий інтерфейс. Таку взаємозамінність
називають поліморфізмом, що є важливою особливістю об’єкто-
орієнтованих систем. Ця властивість дозволяє клієнтові не робити ні-
яких припущень щодо об’єкта, крім того, що він підтримує даний ін-
терфейс. Поліморфізм спрощує визначення клієнтів, дозволяє відді-
лити об’єкти один від одного і дає об’єктам можливість змінювати
взаємовідношення під час виконання.
Патерни проектування дозволяють визначати інтерфейси під час
85