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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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