Нижняя часть иерархии

Нижняя часть иерархии

На рис. 16.4 представлен также класс NONE, антипод класса ANY, потомок всех классов, не имеющих собственных наследников и превращающий глобальную иерархию наследования классов в решетку (математическую структуру). NONE не имеет потомков, его нельзя переопределить - это лишь удобная фикция, однако, теоретическое существование такого класса оправдано и служит двум практическим целям:

[x]. Void - пустая ссылка, используемая наряду с другими ссылками, по соглашению имеет тип NONE. (Фактически, Void -это один из компонентов класса GENERAL.)

[x]. Чтобы скрыть компонент от всех клиентов, достаточно экспортировать его только классу NONE. Предложение feature {NONE}(практически эквивалентное feature {}, но записанное явно) или предложение наследования export {NONE}(на практике дающее тот же результат, что и export {}), делает компонент недоступным для любого класса, написанного разработчиком, ибо NONE не имеет потомков. Обратите внимание на то, что NONE скрывает и все свои компоненты.

Первое свойство объясняет, почему значение Void можно присвоить любому элементу ссылочного типа данных. До сих пор статус Void оставался некой загадкой, теперь, когда Void связано с классом NONE, этот статус становится очевидным, официальным и согласующимся с системой типов: по построению NONE является потомком всех классов, а потому мы можем использовать Void как допустимое значение любой ссылки, не нарушая правил описания типов.

По симметрии ко второму свойству заметим, что объявление, начинающееся с feature и экспортирующее все компоненты во все классы, написанные разработчиком, считается сокращением от feature {ANY}. Для повторного экспорта во все классы компонента родителя, доступ к которому был ограничен, можно использовать предложение export {ANY} или его не столь очевидное сокращение export.

Классы ANY и NONE обеспечивают замкнутость системы типов и полноту структуры наследования: решетка (это строго определенный математический термин) имеет свой верхний и нижний элемент.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

8.4. Перемещение по иерархии файлов

Из книги автора

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


Верхняя и нижняя половины

Из книги автора

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


Построение иерархии интерфейсов

Из книги автора

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


17.1. Определение иерархии классов

Из книги автора

17.1. Определение иерархии классов В этой главе мы построим иерархию классов для представления запроса пользователя. Сначала реализуем каждую операцию в виде отдельного класса:NameQuery // ShakespeareNotQuery // ! ShakespeareOrQuery // Shakespeare || MarloweAndQuery // William && ShakespeareВ каждом классе


17.2. Идентификация членов иерархии

Из книги автора

17.2. Идентификация членов иерархии В разделе 2.4 мы уже упоминали о том, что в объектном проектировании обычно есть один разработчик, который конструирует и реализует класс, и много пользователей, применяющих предоставленный открытый интерфейс. Это разделение


19.2.1. Исключения, определенные как иерархии классов

Из книги автора

19.2.1. Исключения, определенные как иерархии классов В главе 11 мы использовали два типа класса для описания исключений, возбуждаемых функциями-членами нашего класса iStack:class popOnEmpty { ... };class pushOnFull { ... };В реальных программах на C++ типы классов, представляющих исключения, чаще


Пример иерархии

Из книги автора

Пример иерархии В конце обсуждения полезно рассмотреть пример POLYGON-RECTANGLE в контексте более общей иерархии типов геометрических фигур. Рис. 14.2.  Иерархия типов фигурФигуры разбиты на замкнутые и незамкнутые. Примером замкнутой фигуры кроме многоугольника является также


Параллельные иерархии

Из книги автора

Параллельные иерархии Чтобы не оставить камня на камне, рассмотрим вариант примера SKIER с двумя параллельными иерархиями. Это позволит нам смоделировать ситуацию, уже встречавшуюся на практике: TWO_ WAY_LIST > LINKED_LIST и BI_LINKABLE > LINKABLE; или иерархию с телефонной службой


О (не)эффективном управлении, конфликте интересов на разных уровнях иерархии и Невидимой Ноге Дмитрий Шабанов

Из книги автора

О (не)эффективном управлении, конфликте интересов на разных уровнях иерархии и Невидимой Ноге Дмитрий Шабанов Опубликовано 15 февраля 2013 Мы живем в сложном и плохо управляемом мире. Как повысить качество принимаемых решений? Мне кажется, что самый


8.10. ПРИМЕР РЕТРОСПЕКТИВНОЙ РАЗРАБОТКИ ИЕРАРХИИ КЛАССОВ БИБЛИОТЕКИ ВИЗУАЛЬНЫХ КОМПОНЕНТ DELPHI И C++ BUILDER

Из книги автора

8.10. ПРИМЕР РЕТРОСПЕКТИВНОЙ РАЗРАБОТКИ ИЕРАРХИИ КЛАССОВ БИБЛИОТЕКИ ВИЗУАЛЬНЫХ КОМПОНЕНТ DELPHI И C++ BUILDER Delphi и C++ Builder представляет собой визуальное средство разработки корпоративных информационных систем. В C++ Builder используется язык объектно-ориентированного


Модель строгой иерархии удостоверяющих центров

Из книги автора

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


Иерархии на основе политик

Из книги автора

Иерархии на основе политик Традиционное представление о строгой иерархии заключается в том, что каждый УЦ внутри иерархии подчинен одному и только одному вышестоящему УЦ. Логически это подразумевает, что удостоверяющие центры внутри данной иерархии придерживаются