Объявление обработчиков сообщений


CLIPS позволяет задавать предварительное объявление обработчиков сооб­щений класса в конструкторе defclass. Эти объявления применяются только для документирования, в качестве дополнительных комментариев, и иг­норируются CLIPS. Однако для обеспечения большей наглядности желательно использовать эту возможность.

Для реализации обработчиков сообщений класса необходимо применять конструктор defmessage-handler. Поскольку объявления обработчиков не являются обязательным элементом конструктора defclass, к классу могут быть добавлены обработчики, которые не были объявлены в defclass. Например, класс, представленный в примере 11.29, может содержать обработ­чики, приведенные в примере 11.30.

Пример 11.29. Объявление обработчика сообщений в определении класса

(defclass rectangle (is-a USER)

(slot side-a (default 1))

(slot side-b (default 1))

(message-handler find-area))

Пример 11.30. Реальные обработчики сообщений класса rectangle

(defmessage-handler rectangle find-area ( )

(* ?self:side-a ?self:side-b))

(defmessage-handler rectangle print-area ( )

(printout t (send ?self find-area) crlf))

11.3. Конструктор defmessage-handler

Манипулирование объектом происходит посредством передачи ему сообще­ний с помощью функции send. Результатом передачи сообщения могут быть либо вычисленное значение, либо некоторые действия обработчика. Конст­руктор defmessage-handler предназначен для создания обработчика сообще­ний, который фактически задает поведение объекта данного класса в ответ на получение определенного сообщения. Реализация сообщения представляет собой некоторую заданную последовательность действий, называемую обработчиком сообщений (или просто обработчиком).

Конструктор defmessage-handler состоит из семи элементов:

Ø имя класса, к которому добавляется обработчик (класс должен быть предварительно определен);

Ø имя сообщения, на которое будет откликаться обработчик;

Ø необязательный тип обработчика (по умолчанию primary);

Ø необязательные комментарии;

Ø список параметров, которые должны быть переданы обработчику в сообщении;

Ø необязательный символ групповых параметров для указания, что обработчик может иметь переменное число аргументов;

Ø последовательность действий, которые будут выполняться в заданном порядке в момент вызова обработчика.

Значение, возвращаемое обработчиком сообщения, является результатом вычислений последнего выражения в теле обработчика.



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


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

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

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

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