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

(defclass A (is-a USER)

(role concrete))

(defmessage-handler A delete before ()

(printout t "Deleting an instance of the class A..."crlf))

(defmessage-handler USER delete after ()

(printout t "System completed deletion of an instance." crlf))

Класс а является прямым потомком класса user и не имеет слотов. Кроме того, мы добавили два обработчика сообщения delete. Один обработчик типа before относится непосредственно к классу а, другой обработчик типа after относится к самому классу user. Помимо этих двух обработчиков со­общения delete у каждого объекта потомка класса user существует еще один обработчик primary, выполняющий удаление объекта (о системных обработчиках сообщений см. в разд. 11.3.3). Для демонстрации процесса связывания сообщений включите режим просмотра изменения списка эк­земпляров объектов с помощью команды (watch instances) или диалогового окна Watch Options, открываемого через меню Execution. Создайте экземп­ляр объекта класса а и пошлите ему сообщение delete. Результат этой по­следовательности действий приведен на рис. 11.13.

Рис. 11.13. Иллюстрация процесса связывания сообщений

Обратите внимание, что сначала был вызван обработчик before класса и, затем системный обработчик primary, который произвел удаления объекта, а после него обработчик after класса user.

В данном разделе подробно был рассмотрен тип обработчиков сообщений. Остальные параметры конструктора defmessage-handler будут представлены ниже.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: