Пример 11.12. Наследование спецификатора активности класса

(defclass A (is-a USER)

(role concrete)

(pattern-match reactive))

(defclass В (is-a USER)

(role concrete))

(defclass С (is-a A B))

(defclass D (is-a В А))

Класс а является активным, т. к. это явно задано спецификатором активно­сти класса. Класс В — неактивным, поскольку он наследуется от абстрактного, а значит, и неактивного класса user. Класс С будет активным классом, потому что первый его суперкласс (а) активен. Класс D, напротив, будет не­активным, т. к. первый суперкласс в его списке наследования (В) неактивен.

Слоты класса

Слот — это место для хранения значений, ассоциированных с объектом оп­ределенного пользователем класса. Каждый экземпляр объекта имеет свою копию набора слотов, определенных в его классе непосредственно, а также копию любых слотов, полученных наследованием. Количество слотов огра­ничивается только доступной памятью вашего компьютера. Именем слота может быть любое значение типа symbol за исключением ключевых слов is-а и name, которые зарезервированы для использования в образцах объекта.

Для определения набора слотов объекта список предшествования классов рассматривается в порядке от более определенных к более общим классам (слева направо). Класс является более определенным, чем любой его супер­класс. Слоты, определенные в любом классе в списке предшествования классов, помещаются в экземпляр объекта за исключением не наследуемых слотов (см. подразд. "Грань распространения при наследовании" данного разде­ла). Если слот наследуется более чем от одного класса, то используется оп­ределение, данное ему в наиболее определенном классе, за исключением композитных слотов (см. подразд. "Грань источника" этого раздела).

Рассмотрим пример 11.13.


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



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