Работа с классами и объектами
CLIPS предоставляет достаточно богатый набор возможностей, предназначенный для работы с классами и объектами, который включает в себе команды для работы с конструкторами defclass, defmessage-handler, definstances и команды для работы с экземплярами объектов (табл. 16.10).
Таблица 16.10. Команды для работы с классами и объектами
Команда ppdefdass выводит в диалоговое окно определение класса, созданного пользователем с помощью конструктора defclass. Определение 16.55. Команда ppdefclass (ppdefclass <имя-класса>) Команда list-defdasses отображает в диалоговом окне список имен всех (как определенных пользователем, так и системных) классов. Если параметр <имя-модуля> не задан, команда выводит список имен классов, определенных в текущем модуле. Если в качестве данного аргумента использовать имя конкретного модуля в диалоговое окно будут выведены классы, определенные в указанном модуле. В случае если в качестве параметра <имя-модуля> использован символ *, будет выведен список классов, определенных во всех модулях системы. Определение 16.56. Команда list-defclasses (list-defclasses [<имя-модуля>]) Для удаления определения класса, созданного пользователем с помощью конструкторов defdass, предназначена команда undefdass.
Определение 16.57. Команда undefclass (undefclass <имя-класса>) Данная команда удаляет также все классы, являющиеся наследниками класса, указанного в параметре <имя-класса>. В качестве этого параметра возможно указание символа *. В этом случае команда попытается удалить все определенные пользователем классы. Удаление определения класса закончится неудачей, если в списке объектов системы присутствует хотя бы один объект указанного класса или данный класс используется в качестве ограничений параметров родовой функции. Команда describe-class предназначена для получения подробного описания класса, которое включает в себя: описание роли класса (абстрактный или конкретный класс), список прямых суперклассов и наследников данного класса, список предшествования классов, список слотов с именами классов, от которых они унаследованы, и значениями всех граней, а также список всех присоединенных к данному классу обработчиков сообщений. Определение 16.58. Команда describe-class
(describe-class <имя-класса>) Для демонстрации работы команды describe-class используем следующий пример:
|