(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.