Следующий пример напрямую относится к повседневной практике ОО-разработки и неразрывно связан с построением библиотеки 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. Структура множественного и единичного наследования
Окна - это деревья и прямоугольники
Рассмотрим оконную систему с произвольной глубиной вложения окон:
Рис. 15.5. Окна и подокна
В соответствующем классе
[x]. те, что рассматривают окно как иерархическую структуру (список подокон, родительское окно, число подокон, добавить, удалить подокно);
[x]. те, что рассматривают окно как графический объект (высота, ширина, отобразить, спрятать, переместить окно).
Этот класс можно написать как единое целое, смешав все компоненты. Однако такой проект будет не самым удачным. Класс
[x]. иерархической структуры, представленной классом
[x]. прямоугольного экранного объекта, представленного классом
На практике класс будет описан так:
class WINDOW inherit
TREE [WINDOW]
RECTANGLE
feature
... Характерные компоненты окна ...
end
Обратите внимание, класс
Далее, можно подметить, что отдельные окна не содержат ничего, кроме текста. Эту особенность окон можно реализовать вложением, представив класс
text: STRING
Предпочтем, однако, вариант, в котором текстовое окно является одновременно строкой. В этом случае используем множественное наследование с родителями
Деревья - это списки и их элементы
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии