Грань переопределения сообщений


Некоторые функции CLIPS устанавливают значения слотов объектов с помощью сообщений, например: make-instance, initialize-instance, message-modify-instance, message-duplicate-instance. По умолчанию все эти функции пытаются установить значение слота с помощью вызова сообщения put-<имя слота>. Если пользователь не задал автоматическое создание акцессоров с помощью грани create-accessor, но хочет, чтобы эти функции работали и могли переопределять значения слотов, то необходимо исполь­зовать специальную грань override-massage. Эта грань позволяет задавать имя сообщения, которое будет послано экземпляру объекта некоторого класса, при попытке изменить значение данного слота. Грань override-massage можно также использовать, если стандартные акцессоры сущест­вуют, но их применение приведенными выше функциями нежелательно.

В качестве иллюстрации использования этой грани рассмотрим класс из примера 11.26.

Пример 11.26. Использование грани переопределения сообщений

(defclass A (is-a USER)

(role concrete)

(slot special (create-accessor read-write)

(override-message special-put)))

Класс А содержит слот special, который с помощью грани override-massage сообщает среде CLIPS, что для изменения слота special необходимо ис­пользовать сообщение special-put, определенное пользователем, а не стан­дартное сообщение, созданное с помощью грани create-accessor с именем put-special. Определим обработчик сообщения special-put следующим образом (более подробно создание обработчиков сообщений будет рассмотре­но в разд. 11.3):

Пример 11.27. Создание обработчика special-put

(defmessage-handler A special-put primary (?value)

(printout t "special-put " ?value crlf)

(bind ?self:special ?value))

 

 

Рис. 11.11.Использование обработчиков put-special и special-put

Данный обработчик просто выводит на экран имя сообщения и новое зна­чение слота special.

Выполним последовательность действий, представленную в примере 11.28.



Дата добавления: 2021-12-14; просмотров: 287;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.