Отложенные классы
Отложенные классы
Как мы видели, компонент может быть отложенным или эффективным. То же относится и к классам.
Определение: отложенный класс, эффективный класс
Класс является отложенным, если у него имеется отложенный компонент.
В противном случае, класс является эффективным.
Таким образом, чтобы класс был эффективным, должны быть эффективными все его компоненты. Один или несколько отложенных компонентов делают класс отложенным. В этом случае класс должен содержать специальную метку:
Правило объявления отложенного класса
Объявление отложенного класса должно включать подряд идущие ключевые слова deferred class (в отличие от одного слова class для эффективных классов).
Поэтому класс FIGURE будет объявлен следующим образом:
deferred class FIGURE feature
rotate (...) is
... Объявления отложенных компонентов ...
... Объявления других компонентов ...
end
Обратно, если класс отмечен как отложенный, то у него должен быть хотя бы один отложенный компонент. При этом класс может быть отложенным, даже если в нем самом не объявлен ни один отложенный компонент, так как у него может быть отложенный родитель, от которого он унаследовал отложенный компонент, не ставший у него эффективным. В нашем примере в классе OPEN_FIGURE, скорее всего, останутся отложенными компоненты display, rotate и многие другие, унаследованные от класса FIGURE, поскольку понятие незамкнутой фигуры не настолько конкретизировано, чтобы поддерживать стандартные реализации этих операций. Поэтому этот класс является отложенным и будет объявлен как
deferred class OPEN_FIGURE inherit
FIGURE
...
даже если в нем самом не вводится ни один отложенный компонент.
Потомок отложенного класса является эффективным классом, если все отложенные компоненты его родителей имеют в нем эффективные определения и в нем не вводятся никакие собственные отложенные компоненты. Эффективные классы, такие как POLYGON и ELLIPSE, должны обеспечить реализацию отложенных компонентов display, rotate.
Для удобства мы будем называть тип отложенным, если его базовый класс является отложенным. Таким образом, класс FIGURE, рассматриваемый как тип, является отложенным. Если родовой класс LIST является отложенным (как это и должно быть, если он представляет понятие списка, не зависящее от реализации), то тип LIST [INTEGER] является отложенным. Учитывается только базовый класс: C [X] будет эффективным, если класс C эффективный, и отложенным, если C является отложенным, независимо от статуса X.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 7 Обработка нижних половин и отложенные действия
Глава 7 Обработка нижних половин и отложенные действия В предыдущей главе были рассмотрены обработчики прерываний — механизм ядра, который позволяет решать задачи, связанные с аппаратными прерываниями. Конечно, обработчики прерываний очень полезны и являются
Отложенные вызовы
Отложенные вызовы Отложенный вызов определяет функцию, вызов которой будет произведен ядром системы через некоторое время. Например, в SVR4 любая подсистема ядра может зарегистрировать отложенный вызов следующим образом:int co_ID = timeout(void (*fn)(), caddr_t arg, long delta);где fn() определяет
35. Классы
35. Классы Предназначение понятия класса заключается в том, чтобы предоставить инструмент для образования новых типов, таких же удобных в обращении, как и встроенные типы. В идеальном случае новый тип способом применения не должен отличаться от встроенных типов, только
R.9 классы
R.9 классы Класс есть тип. Его имя используется как имя-класса (§R.9.1), т.е. становится зарезервированным словом в его области видимости.имя-класса: идентификаторДля образования конструкции имя-класса используются спецификации-класса и спецификации-сложного-типа (§R.7.1.6).
Классы
Классы Класс — это структура, предназначенная для хранения данных (полей и свойств), а также кода, обрабатывающего эти данные (методы). Поля, методы и свойства называют членами класса.Класс может быть создан на основе другого класса — в этом случае он называется
13. Классы
13. Классы Механизм классов в C++ позволяет пользователям определять собственные типы данных. По этой причине их часто называют пользовательскими типами. Класс может наделять дополнительной функциональностью уже существующий тип. Так, например, IntArray, введенный в главе 2,
Классы
Классы ОО-метод основан на понятии класса. Неформально, класс - элемент ПО, описывающий абстрактный тип данных и его частичную или полную реализацию. Абстрактный тип данных - множество объектов, определяемое списком компонентов (features) - операций, применимых к этим
Отложенные (deferred) свойства и классы
Отложенные (deferred) свойства и классы В некоторых случаях, для которых динамическое связывание дает элегантное решение, устраняя необходимость явных проверок, не существует начальной версии компонента, подлежащего переопределению. Например, класс BOAT может быть настолько
Классы
Классы В поиске, начатом в лекции 3, АТД будут служить непосредственной основой модулей. Точнее, ОО-система будет строиться (на уровне анализа, проектирования и реализации) как совокупность взаимодействующих, частично или полностью реализованных АТД. Основное понятие
Отложенные компоненты и классы
Отложенные компоненты и классы Полиморфизм и динамическое связывание означают, что в процессе проектирования ПО можно рассчитывать на абстракции и быть уверенными в том, что при выполнении будет выбрана подходящая реализация. Но перед выполнением все должно быть
Отложенные классы
Отложенные классы Как мы видели, компонент может быть отложенным или эффективным. То же относится и к классам.Определение: отложенный класс, эффективный классКласс является отложенным, если у него имеется отложенный компонент.В противном случае, класс является
У14.6 Отложенные классы и прототип
У14.6 Отложенные классы и прототип Отложенные классы нельзя инициализировать. С другой стороны, были приведены аргументы в пользу того, чтобы в первой версии класса в проекте все компоненты оставались отложенными. Может появиться желание "выполнить" такой проект: при