Глава 20. Наследование и полиморфизм 547
Рис. 20.5
Элемент управления OWL — индикатор
Движение ползункового регулятора внизу окна соответственно обновляет два горизонтальных индикатора над ним. Оба индикатора являются экземплярами TGauge, класса, предоставляемого OWL (заметьте, что можно создавать также и вертикальные индикаторы). Вы, быть может, хорошо знакомы с этими индикаторами; они часто появляются в программах Windows, когда нужно отразить длительность и ход выполнения задачи — такой, как, например, инсталляция файлов. Borland рекомендует сплошную полосу для длительных процессов и прерывистую полосу для более коротких задач, но здесь мы уже отклоняемся от темы. Дело в том, что горизонтальные и вертикальные индикаторы — это замечательно, но что произойдет, если нам понадобится встроить в приложение индикатор совсем другого вида?
Предположим, что нам нужен индикатор, похожий на индикатор количества бензина или спидометр вашей машины, который обычно представляет собой полукруг с подвижной стрелкой в нем. Чем этот вид индикатора будет отличаться в действительности от индикаторов на рис. 20.5? В качестве информации для размышления взгляните на рис. 20.6.
Рис. 20.6
Примерный вид элемента управления
TChordGauge
У нашего индикатора по-прежнему имеются начальная и конечная точки (или диапазон), и он все так же в любой момент времени может принимать только одно значение, которое отображается стрелкой на индикаторе. На самом деле, единственная разница — во внешнем виде нового индикатора. Нужный нам индикатор в геометрическом смысле является областью со стрелкой, ограниченной пересечением эллипса и отрезка прямой, вместо прямоугольного индикатора с полосой. Их функции, однако, идентичны.
Если, программируя на C++, вы обнаружите, что существует класс, из которого внесением нескольких изменений и дополнений можно сделать именно то, что вам нужно, то это самая подходящая возможность применить механизм наследования — не упустите ее!