Книга: Основы объектно-ориентированного программирования
Окна - это деревья и прямоугольники
Окна - это деревья и прямоугольники
Рассмотрим оконную систему с произвольной глубиной вложения окон:
Рис. 15.5. Окна и подокна
В соответствующем классе WINDOW мы найдем компоненты двух основных видов:
[x]. те, что рассматривают окно как иерархическую структуру (список подокон, родительское окно, число подокон, добавить, удалить подокно);
[x]. те, что рассматривают окно как графический объект (высота, ширина, отобразить, спрятать, переместить окно).
Этот класс можно написать как единое целое, смешав все компоненты. Однако такой проект будет не самым удачным. Класс WINDOW следует рассматривать как сочетание двух абстракций:
[x]. иерархической структуры, представленной классом TREE;
[x]. прямоугольного экранного объекта, представленного классом RECTANGLE.
На практике класс будет описан так:
class WINDOW inherit
TREE [WINDOW]
RECTANGLE
feature
... Характерные компоненты окна ...
end
Обратите внимание, класс TREE является родовым (generic) классом, а потому требует указания фактического родового параметра, здесь - самого класса WINDOW. Рекурсивная природа определения отражает рекурсию, присущую моделируемой ситуации, - окно является одновременно деревом окон.
Далее, можно подметить, что отдельные окна не содержат ничего, кроме текста. Эту особенность окон можно реализовать вложением, представив класс TEXT_WINDOW как клиента класса STRING, введя атрибут
text: STRING
Предпочтем, однако, вариант, в котором текстовое окно является одновременно строкой. В этом случае используем множественное наследование с родителями WINDOW и STRING. (Если же все наши окна содержат лишь текст, их можно сделать прямыми потомками TREE, RECTANGLE и STRING, однако и здесь решение "в два хода" возможно будет более предпочтительным.)
- Пять умнейших стерв – это много
- Доверие – это гарантия от неприятностей
- Красно-черные деревья
- Перемещение по диалоговым окнам
- Часть I Собственно компьютер и периферия Ху из ху и как все это совмещается и работает
- Даем опровержение: «Это вообще не наша !!!опа»
- 1.3.1. Прокси-сервер – что это?
- Надписи и логотипы: что это?
- Время показывается в 12-часовом формате, а мне привычнее 24-часовой. Как это изменить?
- Кризис – это возможность. 10 стратегий, которые позволят вам процветать в эпоху перемен Скотт Стейнберг
- Когда я не работаю за компьютером, через некоторое время он отключается. Можно ли это исправить?
- Перемещать файлы удобнее, если запустить два экземпляра Проводника и разместить их окна бок о бок. Можно ли это делать а...