- •4.1. Знання і деякі підходи до їх подання
- •4.2. Вербально-дедуктивне визначення знань
- •4.3. Експертні системи
- •4.4. Дані та знання
- •4.5. Зв'язки між інформаційними одиницями
- •4.6. Проблема винятків
- •4.7. Властивості знань
- •4.8. Неоднорідність знань. Області і рівні знань
- •4.9. База знань як об'єднання простіших одиниць
- •4.10. Бінарні предикати і тріада
- •4.11. Проблема неточних і неповних знань
- •5Л. Визначення та класифікація семантичних мереж
- •5.2. Семантичні мережі в пам'ті людини
- •5.3. Трирівнева архітектура семантичних мереж
- •5.4. Асиміляція нових знань на основі семантичних мереж
- •5.5. Різні способи задання семантичних мереж
- •5.6. Логічне виведення на семантичних мережах
- •5.7. Процедурні і роздалені семантичні мережі
- •Фрейми та слоти: базові поняття
- •Конкретизація, ієрархія та наслідуваніїя фреймів
- •6.3. Поповнення первинних описів на основі фреймових моделей
- •0.10 * (Кількість_уроків - 1)), (Коли, _ ), (Хто,_),
- •0.10 * (Кількість_уроків - 1)), (Коли, вчора), (Хто, Петро),
- •6.4. Мережі подібностей і відмінностей
- •6.5. Фрейми та об'єктно-орієнтоване програмування
- •6.6. Поняття про мову uml
- •7Л. Логічні побудови та логічні моделі
- •7.2. Короткий вступ до числення предикатів
- •7.3. Фразова форма запису логічних формул
- •7.4. Аналіз і доведення теорем
- •7.5. Побудова теорії певної області знань
- •7.6. Від формальної логіки до логічного програмування
- •Будь-який терм зіставляється сам з собою. Наприклад, дві фрази
- •Різні константи не зіставляються одна з одною, тому фрази
- •Змінна може бути замінена константою або іншим термом. Так, фрази
- •7.7. Мова Пролог і логічне програмування
- •7.8. Основні ідеї Прологу
- •7.9. Як працює Пролог
- •8.1. Характеристика продукіцйиих моделей
- •8.2. Продукції та мережі виведення
- •8.3. Типова схема роботи експертної системи на базі продукцій
- •8.4. Пряме та зворотне виведення
- •8.5. Типові дисципліїш виконання продукцій
- •8.6. Основні стратегії вирішешія конфліктів у продукіцйііих системах
6.5. Фрейми та об'єктно-орієнтоване програмування
Поняття фрейму, яке розглядається в теорії штучного інтелекту, та поняття об'єкта (в іншій термінології — класу), тісно пов'язані між собою. Парадигма об'єктно-орієнтованого програмування випливає з об'єктно- орієнтованого сприйняття світу, що складається з великої кількості об'єктів. Вони є порівняно незалежними, але постійно взаємодіють між собою. Кожний об'єкт має певні властивості та вміє виконувати деякі функції. Можна вважати, що об'єктна модель є конкретизацією абстрактнішої фреймової моделі.
У [31] сформульовано деякі важливі визначення.
\ Об'єктом називається абстракція, що характеризується станом, * поведінкою та ідентифікованістю; сукупності схожих об 'єктів утво- рюють клас; терміни "екземпляр класу" та "об'єкт"рівноправні.
} Стан об'єкта характеризується переліком (як правило, статичним) - і усіх його властивостей і поточними (як правило, динамічними) значен- I нями кожної з цих властивостей.
До цього можна додати, що "статичний перелік властивостей" є характеристикою всього класу, а "поточні динамічні значення" — характеристикою окремого об'єкта, або екземпляра класу. Опис окремого екземпляра на основі загального опису класу можна отримати, якщо визначити конкретні значення властивостей.
Поведінка визначається тим, як об 'єкт функціонує та реагує на зов-
Інішні події; поведінку прийнято характеризувати в термінах зміни станів об'єктів та передачі повідомлень між об'єктами; поточний стан об 'єкта є сумарним результатом його поведінки.
Ідентифікованість — це така властивість об'єкта, яка відрізняє його від усіх інших об 'єктів.
Важливим є те, що об'єкти слід розглядати як абстракції певних сутно- стей, тобто об'єкт описує властивості даної сутності, що є найважливішими з певної точки зору. При цьому для екземплярів класу спільними є всі характеристики, а не лише деякі. Точніше, спільним є перелік характеристик, а не конкретні значення; екземпляри одного класу можна розрізняти між собою саме за рахунок того, що характеристики різних екземплярів класу мають різні значення.
Об'єкти та класи мають такі найважливіші властивості [31]:
Абстрагування — виокремлення в описі класу найважливіших характеристик деякої сутності, що відрізняють її від усіх інших сут- ностей.
Інкапсуляція — елементи об'єкта, що визначають його властивості та поведінку, повинні бути відокремлені один від одного. Інакше кажучи, клас повідомляє про свої функціональні можливості, але приховує від зовнішнього світу особливості реалізації цих можливостей і свою внутрішню будову.
Слід відмітити, що в програмуванні термін "інкапсуляція" часто вживається у вужчому значенні, а саме: в класі можуть бути описані процедури (методи), що визначають його поведінку.
Модульність — об'єкт складається з окремих відносно самостійних модулів.
Ієрархія — об'єкти та класи є ієрархічно упорядкованими. Зокрема, вони утворюють ієрархію класів та ієрархію об'єктів (див. п. 4.5). Успадкування (наслідування) пов'язане саме з цими ієрархіями, в першу чергу — з ієрархією класів.
Існує багато об'єктно-орієнтованих мов програмування, тобто мов, які безпосередньо підтримують об'єктну модель та об'єктно-орієнтовану парадигму програмування. Історично першою була мова Smalltalk. Зараз популярними є Delphi (візуальна реалізація Паскалю), C++ (стандарт де-факто в сфері об'єктно-орієнтованого програмування), Java. Також розвиваються технології об'єктно-орієнтованих баз даних [99, 147].
