Page 40 - 4190
P. 40
дачі об’єктно-орієнтованого проектування.
Аналізується – коли необхідно застосовувати патерн, чи можна за-
стосовувати його з врахування інших обмежень, які будуть наслідки
при застосуванні методу. Оскільки будь-який проект в кінцевому ви-
падку необхідно реалізовувати, то до складу патерна включають при-
клад коду мовою C++ (інколи Smalltalk), що ілюструє реалізацію.
Хоча патерни використовуються в проектуванні вони основані на
практичних, рішеннях, що реалізуються основними мовами
об’єктно-орієнтованого програмування Smalltalk і C++, а не на про-
цедурних (Pascal, С, Ada тощо.) або об’єктно-орієнтованих мовах з
динамічною типізацією (CLOS, Dylan, Self). Але найбільшу популяр-
ність завоювали мови Smalltalk і C++. Вибір мови програмування
безперечно важливий.
Патерни проектування за схемою MVC мовою Smalltalk. В
Smalltalk80 для побудови інтерфейсу користувача застосовується три
класи модель-вид-котролер (Model/View/Controller - MVC). MVC
складається з трьох видів. Модель – це об’єкт додатку. Вид - екранне
зображення. Контролер описує, як інтерфейс реагує на керуючу дію
користувача. МVC відділяє вид від моделі, встановлюючи між ними
протокол взаємодії типу,,підписка-повідомлення’’. Вид повинен га-
рантувати, що зовнішнє представлення відображає стан моделі. При
кожній зміні внутрішніх даних модель повідомляє усі залежно від неї
види, в результаті чого вид оновлює себе. Такий підхід дозволяє при-
єднати до однієї моделі декілька видів, забезпечуючи тим самим різ-
номанітні представлення. Можна створювати новий вид, не перепи-
суючи модель.
На рис. 4.1 показано одну модель и три види. Модель містить де-
які дані, які можуть бути представлені у вигляді електронної табли-
цю, гістограми і колової діаграми
Модель повідомляє свої види при кожній зміні значень даних, а
види звертаються до моделі для отримання нових значень.
На перший погляд, у даному випадку продемонстровано просто
дизайн, що відділяє вид від моделі. Але цей самий принцип може бу-
ти застосований і до більш загальної задачі: поділу об’єктів таким
чином, що зміна одного відображається відразу на декількох інших,
причому об’єкт, немає інформації про деталі реалізації об’єктів, на
які він має вплив. Цей більш загальний підхід описується патерном
проектування спостерігача.
40