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

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

Определение 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. Нарушение авторских прав; Мы поможем в написании вашей работы!




Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Кран машиниста усл. № 394 – назначение и устройство Кран машиниста условный номер 394 предназначен для управления тормозами поезда...

Приложение Г: Особенности заполнение справки формы ву-45   После выполнения полного опробования тормозов, а так же после сокращенного, если предварительно на станции было произведено полное опробование тормозов состава от стационарной установки с автоматической регистрацией параметров или без...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

Философские школы эпохи эллинизма (неоплатонизм, эпикуреизм, стоицизм, скептицизм). Эпоха эллинизма со времени походов Александра Македонского, в результате которых была образована гигантская империя от Индии на востоке до Греции и Македонии на западе...

Демографияда "Демографиялық жарылыс" дегеніміз не? Демография (грекше демос — халық) — халықтың құрылымын...

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