Параллельные иерархии
Параллельные иерархии
Чтобы не оставить камня на камне, рассмотрим вариант примера SKIER с двумя параллельными иерархиями. Это позволит нам смоделировать ситуацию, уже встречавшуюся на практике: TWO_ WAY_LIST > LINKED_LIST и BI_LINKABLE > LINKABLE; или иерархию с телефонной службой PHONE_SERVICE.
Пусть есть иерархия с классом ROOM, потомком которого является GIRL_ROOM (класс BOY опущен):
Рис. 17.7. Лыжники и комнаты
Наши классы лыжников в этой параллельной иерархии вместо roommate и share будут иметь аналогичные компоненты accommodation (размещение) и accommodate (разместить):
indexing
description: "Новый вариант с параллельными иерархиями"
class SKIER1 feature
accommodation: ROOM
accommodate (r: ROOM) is ... require ... do
accommodation:= r
end
end
Здесь также необходимы ковариантные переопределения: в классе GIRL1 как accommodation, так и аргумент подпрограммы accommodate должны быть заменены типом GIRL_ROOM, в классе BOY1 - типом BOY_ROOM и т.д. (Не забудьте: мы по-прежнему работаем без закрепления типов.) Как и в предыдущем варианте примера, контравариантность здесь бесполезна.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
8.4. Перемещение по иерархии файлов
8.4. Перемещение по иерархии файлов Несколько системных вызовов и стандартных библиотечных функций дают возможность изменять текущий каталог и определять полный путь к текущему каталогу. Более сложные функции позволяют осуществлять произвольные действия с каждым
Параллельные подсостояния
Параллельные подсостояния Параллельные подсостояния (concurrent substates) позволяют специфицировать два и более подавтомата, которые могут выполняться параллельно внутри составного события. Каждый из подавтоматов занимает некоторую область (регион) внутри составного
4.8. Параллельные серверы
4.8. Параллельные серверы Сервер, представленный в листинге 4.2, является последовательным (итеративным) сервером. Для такого простого сервера, как сервер времени и даты, это допустимо. Но когда обработка запроса клиента занимает больше времени, мы не можем связывать один
22.7. Параллельные серверы UDP
22.7. Параллельные серверы UDP Большинство серверов UDP являются последовательными (iterative): сервер ждет запрос клиента, считывает запрос, обрабатывает его, отправляет обратно ответ и затем ждет следующий клиентский запрос. Но когда обработка запроса клиента занимает
Построение иерархии интерфейсов
Построение иерархии интерфейсов Продолжим наше обсуждение вопросов создания пользовательских интерфейсов и рассмотрим тему иерархии интерфейсов. Вы знаете, что класс может выступать в роли базового класса для других классов (которые, в свою очередь, тоже могут быть
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. Иерархия типов фигурФигуры разбиты на замкнутые и незамкнутые. Примером замкнутой фигуры кроме многоугольника является также
Нижняя часть иерархии
Нижняя часть иерархии На рис. 16.4 представлен также класс NONE, антипод класса ANY, потомок всех классов, не имеющих собственных наследников и превращающий глобальную иерархию наследования классов в решетку (математическую структуру). NONE не имеет потомков, его нельзя
Модель строгой иерархии удостоверяющих центров
Модель строгой иерархии удостоверяющих центров Строгая иерархия удостоверяющих центров обычно графически изображается в виде древовидной структуры с корнем наверху и ветвями, спускающимися вниз и заканчивающимися листьями. В этом перевернутом дереве корень
Иерархии на основе политик
Иерархии на основе политик Традиционное представление о строгой иерархии заключается в том, что каждый УЦ внутри иерархии подчинен одному и только одному вышестоящему УЦ. Логически это подразумевает, что удостоверяющие центры внутри данной иерархии придерживаются