Энциклопедия C++ Builder



ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ И C++ - часть 12


Draw с ограничением его функциональности (Листинг 3.6)

class SimpleButton: public : TButtonControl { public:

SimpleButton(int x, int y) ;

void Draw() ;

-SimpleButton() { }

};

SimpleButton::SimpleButton(int x, int y) :

TButtonControl(x, y) { }

void SimpleButton::Draw()

{ ; outline->Draw();

}

Листинг 3.6. Ограничение характеристик базового класса.

Единственная задача конструктора объекта для SimpleButton - вызвать базовый класс с двумя параметрами. Именно переопределение метода SimpleButton: : Draw () предотвращает вывод обводящей рамки кнопки (как происходит в родительском классе). Естественно, чтобы изменить код метода, надо изучить его по исходному тексту базовой компоненты TButtonControl.

Теперь создадим кнопку с пояснительным названием (Рис. 3.3). Для этого нужно построить производный класс TextButton из базового TButtonControl, и перегрузить метод

Draw с рас-Рис. 3.3. Кнопка с текстом, ширением его функциональности.

Листинг 3.7 показывает, что объект названия title класса Text создается конструктором TextButton, а метод

SimpleButton:-.Draw () отображает его. :

class Text { public:

Text(int x, int y, char* string) { } void Draw() { } };

class TextButton: public : TButtonControl {

Text* title;

public:

TextButton(int x, int y, char* title);

void Draw();

-TextButton() { } );

TextButton::TextButton(int x, int y, char* caption)

TButtonControl(x, y) {

title = new Text(x, y, caption);

}

void TextButton::Draw () {

TextButton::Draw() ;

title->Draw() ;

}

Листинг 3.7. Расширение характеристик базового класса.

В заключение раздела с изложением методики разработки базовых и производных классов приводится фрагмент C++ программы (Листинг 3.8), в которой объявлена иерархия классов двух простых геометрических объектов: окружности и цилиндра.

Программа составлена так, чтобы внутренние значения переменных г-радиус окружности и h-высота цилиндра определяли параметры создаваемых объектов. Базовый класс

Circle моделирует окружность, а производный класс Cylinder моделирует цилиндр.




Содержание  Назад  Вперед