За
последние 20 лет было разработано довольно много языков
для представления знаний, причем большинство из них можно отнести к классу
объектно-ориентированных. Как и в случае с использованием концепции фреймов, основная
идея состоит в том, чтобы заключить данные и связанные с ними процедуры в некие
структуры, объединенные механизмом наследования.
Язык KRL
В качестве "строительных
блоков" системы использованы так называемые "концептуальные
объекты", которые были сходны с фреймами, предложенными Минским, в том,
что представляют прототипы и связанные с ними свойства.
Объектно-ориентированный
стиль программирования идеально подходит для решения проблем, требующих детального
представления объектов реального мира и динамических отношений между ними. Классическим
примером применения данного подхода являются задачи
моделирования
В
результате основной упор переносится с разработки
общей управляющей структуры программы, которая ответственна за порядок обращения
к функциям, на конструирование самих объектов, выяснение их ролей и создание протоколов
взаимодействия объектов.
С
этой проблемой впервые столкнулись при разработке объектно-ориентированного
языка FLAVORS, который поддерживает
множественное наследование и наложение методов
В
более поздних реализациях SmallTalk метакласс формировался автоматически всякий
раз, когда создавался новый класс, и этот класс становился экземпляром класса
Metaclass.
Появление
языка Common LISP было связано
с попыткой стандартизировать многочисленные диалекты LISP и создать устраивающую
большинство пользователей версию этого языка.
Если
планируется создавать экземпляры
любого класса, производного от USER, то этот класс нужно объявлять с квалификатором
concrete, как это и сделано при объявлении класса republican-quaker.
Как и в языке
FLAVORS, before-методы
(предварительные методы) используются для подготовки данных
для тех вычислений, которые должны быть выполнены primary-методом
(основным методом), а after-методы (заключительные-методы)
используются для выполнения заключительных операций. Вычислить
предел Математика Примеры решения задач
build-in-class.
Это метакласс тех классов объектов, которые реализованы необычным способом. Например,
некоторые из таких классов могут соответствовать типам данных Common LISP. Большинство
системных классов имеет именно этот метакласс.
В
языке C++ множественное наследование трактуется совсем не так, как мы это
делали в предшествующих разделах настоящей главы, а потому этот вопрос заслуживает
подробного обсуждения.
Философия и технология объектно-ориентированного программирования могут весьма
пригодиться проектировщику экспертных систем.