Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Определение 11.2. Синтаксис спецификатора роли класса





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

Абстрактные классы предназначаются только для наследования. Нельзя создать экземпляры объектов абстрактного класса. Конкретные классы могут быть использованы как для наследования, так и для создания экземпляров объектов этих классов.

Если с помощью спецификатора роли был создан абстрактный класс, а потом данный класс был использован в функции make-instance для создания экземпляра объекта этого класса, COOL сгенерирует соответствующую ошибку.

Если спецификатор роли класса не был задан, роль класса определяется наследованием. В этом случае роль нового класса принимает значение роли первого непосредственного суперкласса из списка наследования (при­мер 11.11).

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

(defclass A (is-a USER)

(role concrete))

(defclass В (is-a USER))

(defclass С (is-a A B))

(defclass D (.is-a В А))

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

Активные и неактивные классы

С помощью спецификатора активности класса можно задать поведение объекта данного класса при проведении сопоставления образцов. Класс может быть либо активным, либо неактивным.

Определение 11.3. Синтаксис спецификатора активности класса

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

Объекты активного класса могут применяться при сопоставлении образцов во время выполнения правил. Объекты неактивного класса не могут ис­пользоваться при сопоставлении образцов и не принимают участие в опре­делении списков классов, применимых для сопоставления образцов. Абстрактный класс не может быть активным.

Если спецификатор роли класса не был задан явно, активность класса определяется наследованием. В этом случае активность нового класса принимает значение активности первого непосредственного суперкласса из списка наследования (пример 11.12).

Пример 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.







Дата добавления: 2015-08-30; просмотров: 451. Нарушение авторских прав; Мы поможем в написании вашей работы!




Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

В эволюции растений и животных. Цель: выявить ароморфозы и идиоадаптации у растений Цель: выявить ароморфозы и идиоадаптации у растений. Оборудование: гербарные растения, чучела хордовых (рыб, земноводных, птиц, пресмыкающихся, млекопитающих), коллекции насекомых, влажные препараты паразитических червей, мох, хвощ, папоротник...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

Репродуктивное здоровье, как составляющая часть здоровья человека и общества   Репродуктивное здоровье – это состояние полного физического, умственного и социального благополучия при отсутствии заболеваний репродуктивной системы на всех этапах жизни человека...

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

Studopedia.info - Студопедия - 2014-2025 год . (0.011 сек.) русская версия | украинская версия