Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
100587_Lytvyn.doc
Скачиваний:
173
Добавлен:
07.02.2016
Размер:
6.01 Mб
Скачать

5.3.2. Ідентифікація механізмів

Як знайти механізми? У попередньому обговоренні ми нази­вали механізмами структури, за допомогою яких об’єкти взаємодіють один з одним і поводяться так, як потрібно. Як, розробляючи клас, фактично визначають поведінку окремих об’єктів, так само й механізми слугують для задання поведінки сукупності об’єктів. Отже, механізми відображають шаблони поведінки.

Розглянемо вимогу до автомобіля: натискання на акселератор має приводити до збільшення обертів двигуна, а відпускання акселе­ратора – до їх зменшення. Як це відбувається, водієві зовсім бай­дуже. Може бути використаний будь-який механізм, який забез­печує потрібну поведінку, і його вибір – справа смаку розробника. Наприк­лад, припустимо кожне із запропонованих нижче інженерних рішень:

  • механічний зв’язок між акселератором і карбюратором (зви­чайне рішення);

  • під педаллю ставиться давач тиску, що з’єднується з комп’ю­тером, який керує карбюратором (механізм керування через дроти);

  • карбюратора немає; бак із пальним розташований на даху автомобіля й паливо вільно тече у двигун; потік палива регулюється затискачем на трубці; натискання на педаль акселератора послаблює затискач (дуже дешево).

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

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

Отже, механізми – це стратегічні рішення в проектуванні, по­дібно до проектування структури класів. З іншого боку, проектування інтерфейсу якогось одного класу – це швидше тактичне рішення. Стратегічні рішення потрібно виконувати явно, інакше отримаємо неорганізований набір об’єктів, що кидаються виконувати роботу, розштовхуючи один одного. У найелегантніших, найстрункіших і най­швидших програмах втілені ретельно розроблені механізми. 

Механізми відображають лише один із шаблонів, які ми знаходимо в структурованих системах. Так, на нижньому кінці своє­рідної біологічної піраміди перебувають ідіоми. Наприклад, в CLOS не прийнято використовувати підкреслення в іменах функцій або змінних, хоча в Ada ця справа звична. Вивчаючи мову, доводиться вчити її ідіоми, які зазвичай передаються у формі фольклору. Однак, ідіоми відіграють важливу роль в кодифікації шаблонів низького рівня. Багато звичних програмістських дій ідіоматичні, і тому розпізнавання таких ідіом дає змогу використовувати конструкції C++ для вираження функціональності поза самою цією мовою зі збереженням ілюзії, що вони є частиною мови.

Місце на верху піраміди займає середовище розроблення. Се­редовище розроблення – це набір класів, призначених для певної прикладної ситуації. Середовище дає готові класи, механізми й по­слуги, якими можна відразу користуватися або пристосовувати для своїх потреб.

Якщо ідіоми становлять частину програмістської культури, то середовища розроблення – комерційний продукт. Наприклад, Apple MacApp і його спадкоємець Bedrock – середовища, написані на C++ і призначені для побудови ІС зі стандартним інтерфейсом користувача Macintosh. Аналогічну роль для Windows відіграють Microsoft Foundation Classes і ObjectWindows корпорації Borland.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]