Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектування інформаційних систем.doc
Скачиваний:
95
Добавлен:
21.09.2019
Размер:
28.77 Mб
Скачать

16.2. Ідентифікація класів і об'єктів

16.2.1. Класичний і сучасний підходи

З часів Платона проблемою класифікації займалися філософи, лінгвісти, когнітивісти, математики. Тому було б розумно вивчити накопичений досвід і застосувати його в об’єктно-орієнтовному проектуванні. Історично відомі тільки три підходи:

  • класична категоризація;

  • концептуальна кластеризація;

  • теорія прототипів.

Класична категоризація. У класичному підході всі речі, що володіють деякою властивістю або сукупністю властивостей, формують деяку категорію. Причому наявність цих властивостей є необхідною й достатньою умовою, що визначає категорію. Наприклад, холостяки - це категорія: кожна людина або холостяк, або одружений, і ця ознака достатня для розв’язання задачі, до якої категорії належить той або інший індивідуум. З іншої сторони, високі люди не визначають категорії, якщо, звичайно, ми спеціально не уточнимо критерій, що дозволяє чітко відрізняти високих людей від невисоких.

Класична категоризація прийшла до нас від Платона й Аристотеля. Останній у своїй класифікації рослин і тварин користувався технікою міркувань, що нагадує сучасну дитячу гру в 20 питань (Це мінерал, тварина чи рослина? Це покрито хутром чи пір'ям? Чи може воно літати? Чи пахне воно?). Такий підхід знайшов послідовників, найвидатнішими з яких були: Фома Аквінський, Декарт, Локк. За твердженням Фоми Аквінського: "Ми можемо йменувати речі відповідно до наших знань про їх природу, яку отримуємо через пізнання їх властивостей і дій".

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

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

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

Сучасне мислення найчастіше використовує класичну категоризацією, однак, як показує приклад з високими й низькими людьми, цей підхід не завжди працює. Природні категорії не чітко відмежовані. Більшість птахів літає, але не всі. Стілець може бути дерев'яним, металевим або пластмасовим, а кількість ніг у нього цілком залежить від примхи конструктора. Практично неможливо перелічити визначальні властивості природної категорії, так, щоб не було виключень. Це, дійсно, проблема класичної категоризації, яку й спробували виправити в сучасних підходах. Розглянемо їх.  

Концептуальна кластеризація. Це сучасніший варіант класичного підходу. Він виник із спроб формального подання знань. При такому підході спочатку формуються концептуальні описи класів (кластерів об'єктів), а потім ми класифікуємо сутності відповідно до цих описів. Наприклад, візьмемо поняття "пісня про кохання". Це саме поняття, а не ознака або властивість, оскільки ступінь кохання в пісні виміряти неможливо. Але якщо можна стверджувати, що пісня скоріше про кохання, ніж про щось інше, то ми поміщаємо її в цю категорію.

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

Теорія прототипів. Класична категоризація й концептуальна кластеризація - досить виразні методи, цілком придатні для проектування складних програмних систем. Але є ситуації, в яких ці методи не працюють. Розглянемо сучасніший метод класифікації, теорію прототипів, передумови якої можна знайти в книзі з психології сприйняття [28].

Існують деякі абстракції, які не мають ні чітких властивостей, ні чіткого визначення. За твердженням Віттгенстейна (Wittgenstein), існують категорії (наприклад, ігри), які не відповідають класичним зразкам, тому що немає ознак, які властиві всім іграм... Із цієї причини їх можна об'єднати так званою сімейною подібністю... Віттгенстейн стверджує, що в категорії ігор немає чіткої межі. Категорію можна розширити й включити нові види ігор за умови, що вони нагадують вже відомі ігри. От чому цей підхід називається теорією прототипів: клас визначається одним об'єктом-прототипом, і новий об'єкт можна віднести до класу за умови, що він наділений істотною подібністю із прототипом.

Застосуємо класифікацію на основі прототипів до згаданої вище проблеми стільців. Ми вважаємо м'який пуф, перукарське крісло й складений стілець стільцями не тому, що вони задовольняють деякому фіксованому набору ознак прототипу, а тому, що вони мають достатню фамільну подібність із прототипом... Не потрібно ніякого загального набору властивостей для прототипу, щоб він підходив і для пуфика і для перукарського крісла, але вони обоє - стільці, тому що кожний з них окремо схожий на типовий стілець, нехай навіть кожний по-своєму. Властивості, обумовлені при взаємодії з об'єктом (властивості взаємодії), є головними при визначенні сімейної подібності.

Поняття властивостей взаємодії - центральне для теорії прототипів. В концептуальній кластеризації ми групуємо відповідно до різних концепцій. У теорії прототипів класифікація об'єктів здійснюється згідно ступеня їх подібності з конкретним прототипом.

Застосування класичних і нових теорій. Три розглянутих підходи до класифікації мають безпосереднє відношення до об’єктно-орієнтовного проектування.

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

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