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



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


class SimpleButton: public : TButtonControl { public:

SimpleButton (int x, int y) ;

void Draw() ;

-SimpleButton() { } );

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

TButtonControl(x, y) { }

I void SimpleButton::Draw()

I { i outline->Draw();

 

1 )

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

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

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

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

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

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

const double pi = 4 * atan(l);

class Circle { protected:

double r ;

public:

Circle (double rVal =0) : r(rVal) {}

void setRadius(double rVal) { r = rVal; }

double getRadiusO { return r; } .double Area() { return

pi*r*r; }

void showData() ;

};

class Cylinder : public Circle { protected:

double h;

public:

Cylinder(double hVal = 0, double rVal = 0)

: getHeight(hVal), Circle(rVal) { }

void setHeight(double hVal) { h = hVal; }

double getHeight() { return h; }

double Area() { return 2*Circle::Area()+2*pi*r*h; }

void showData() ;

void Circle::showData() {

cout “ "Радиус окружности = " “ getRadius() “ endl

“ "Площадь круга = " “ Area О “ endl “ endl;

}

void Cylinder::showData()

{

cout “ "Радиус основания = " “ getRadius() “ endl

“ "Высота цилиндра = " “ getHeight() “ endl

“ "Площадь поверхности = " “ Area () “ endl;

}

void main()

{

Circle circle(2) ;

Cylinder cylinder(10, 1);




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