Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
підручник Менеджмент знань.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
6 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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