ASSET
feature
... Любой компонент, характерный для самолетов компании,
(отличающийся от наследуемых компонентов родителей) ...
end
Родителей класса достаточно перечислить в предложении inherit. (Как обычно, можно разделять их имена точкой с запятой, хотя это не обязательно.) Порядок перечисления классов не играет никакой роли.
В моделировании систем найдется еще немало примеров, подобных
[x]. Наручные часы-калькулятор моделируются с применением множественного наследования. Один родитель позволяет устанавливать время и отвечать на такие запросы, как текущее время и текущая дата. Другой - электронный калькулятор - поддерживает арифметические операции.
[x]. Наследником классов судно и грузовик является амфибия (
[x]. Ужин в ресторане; поездка в вагоне поезда - вагон-ресторан (
[x]. Диван-кровать (
[x]. 'Дом на колесах' (
С точки зрения программиста эти примеры представляют академический интерес - нам платят за построение систем, а не за построение модели мира. Впрочем, во многих практических приложениях с аналогичными комбинациями абстрактных понятий вы обязательно столкнетесь. Более подробный пример из графической среды разработки ISE мы изложим чуть ниже.
Числовые и сравнимые значения
Следующий пример напрямую относится к повседневной практике ОО-разработки и неразрывно связан с построением библиотеки Kernel.
Ряд классов Kernel, потенциально необходимых всем приложениям, требуют поддержки таких операций арифметики, как infix '+', infix '-', infix '*', prefix '-', а также специальных значений
deferred class NUMERIC feature
... infix '+', infix '-', infix '*', prefix '-', zero, one...
end
Многим классам необходимо отношение порядка с операциями сравнения элементов. Такая возможность полезна для классов Kernel, таких как STRING, и для многих других классов. Поэтому в состав библиотеки входит отложенный класс COMPARABLE:
deferred class COMPARABLE feature
... infix '<', infix '<=', infix '>', infix '>='...
end
Математически его экземпляры - это полностью упорядоченные множества с заданным отношением порядком.
Не все потомки
Объекты некоторых типов, однако, имеют числовую природу и одновременно допускают сравнение. (Такие классы моделируют вполне упорядоченные кольца.) Примеры таких классов -
expanded class REAL inherit
NUMERIC
COMPARABLE
feature
...
end
Рис. 15.4. Структура множественного и единичного наследования
Окна - это деревья и прямоугольники
