Page 93 - 4190
P. 93
кціональності – це застосування параметризованих типів, що відомі
також, як узагальнені типи відомі типи (Ada, Eiffel) або шаблони
(Ada, Eiffel), або шаблони. Дана техніка дозволяє визначити тип, не
вказуючи типи, які він використовує. Не специфіковані типи пере-
даються у вигляді параметрів у точці використання. Наприклад, клас
List (список) можна параметризувати типом, що поміщається у спис-
ку елементів. Щоб оголосити список цілих чисел, можна передати
тип integer як параметр параметризованого типу List. Якщо, потрібно
оголосити список рядків, то як параметр передається тип String. Для
кожного типу елементів компілятор мови створює створює певний
певний варіант шаблону класу List. Параметризовані дають у розпо-
рядження третій (після наслідування класів і композиції об’єктів)
спосіб комбінування поведінки в об’єктно-орієнтованих системах.
Багато задач можна вирішувати за допомогою задач будь-якого з цих
трьох методів. Щоб параметризувати процедуру сортування операцій
можна зробити такі порівняння:
1) операція, що реалізується підкласами (застосування патерну
шаблонний метод);
2) фукцією об’єкта, передає процедурне сортування (стратегія);
3) аргументом шаблону в С++ або узагальненого типу Ada, який
задає ім’я функції, що викликається для порівняння елементів.
Але між цими трьома підходами є три важливі відмінності. Ком-
позиція об’єктів дозволяє змінювати поведінку під час виконання, але
для цього необхідні непрямі висновки, що знижають ефективність.
Успадкування надає можливість реалізації за замовчуванням, яку мо-
жна заміщати в підкласи. За допомогою параметризованих типів змі-
нюють типи, використовують класи. Але ні успадкування, ні пара-
метризовані типи на підлягають модифікації під час виконання. Вибір
того чи іншого проекту залежить від проекту і обмежень на реаліза-
цію. Слід зауважити, що параметризовані типи досить рідко викорис-
товуються для реалізації патернів в С++, у мові типу Smalltalk, де не-
має перевірки типу під час компіляції параметризовані типи взагалі
не потрібні.
Порівняння структур часу виконання і часу компіляції. Стру-
ктура об’єктно-орієнтованої програми на етапі виконання часто має
мало спільного зі структурою її вихідного коду. Остання фіксується
на етапі компіляції. Код складається з із класів, відношення успадку-
вання, між яким незмінні. Розглянемо відмінності між агрегуванням і
поінформованістю (acquaintance) об’єктів і його появою на етапах
93