Определение 11.1. Синтаксис конструктора defclass

(defclass <имя-класса> [<комментарии>]

(is-a <список-суперклассов>+)

[<роль-класса>]

[<активность-класса >]

<слот>*

<объявление-обработчика-сообщений>*)

<роль-класса>::= (role concrete | abstract)

<активность-класса>::= (pattern-match reactive | non-reactive)

<слот>::= (slot <имя> <грани>*) │

(single-slot <имя> <грани>*)|
(multislot <имя> <грани>*)

<грань>::= < значение-по-умолчанию > |

<грань-хранения> |<грань-доступа> │

<грань-распространения>│

<грань-источника>│

<грань-сопоставления-образцов>│

<грань-видимости>│

<грань-создания-акцессоров>│

<грань-переопределения-сообщений>│

<ограничения-атрибутов>

<значение-по-умолчанию>::= (default? DERIVE │?NONE│<выражение>*)│

(default-dynamic <выражение>*)

<грань-хранения>::= (storage local │ shared)

<грань-доступа>::= (access read-write │ read-only │ initialize-only)

<грань-распространения >::= (propagation inherit │ no-inherit)

<грань-источника >::= (source exclusive │ composite)

<грань-сопоставления-образцов >::= (pattern-match reactive │ non-reactive)

<грань-видимости >::= (visibility private │ public)

<грань-создания-акцессоров >::= (create-accessor? NONE │ read│ write│ read-write)

<грань-переопределения-сообщений >::= (override-message? DEFAULT │<имя-сообщения>)

<объявление-обработчика-сообщений >::= (message-handler <имя-обработчика>

[<тип-обработчика>])

<тип-обработчика >::= primary │around│before│after

Замечание

В представленном выше определении значения по умолчанию подчеркнуты.

Попытка переопределения существующего класса приведет к удалению это­го класса и всех ассоциированных с ним обработчиков сообщений. Если определен хотя бы один объект удаляемого класса, произойдет ошибка, и новый класс не будет создан.


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



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