Пример программы с наследованием классов

Иерархия наследования
Point <- Circle; Виртуальные функции.

(Пример из книги: Дейтел.Программирование на С++)


#include <stdio.h>

#include <conio.h>
#include <iostream.h>

#include <conio.h>

class Point{
int x;
int y;
public:
int putx();
int puty();
virtual void show();
void move(int, int);
private:
virtual void hide();
public:
Point(int, int);
Point();
};
int Point::putx(){
return x;
}
int Point::puty(){
return y;
}
void Point::show(){
putpixel(x,y,getcolor());
}
void Point::hide(){
putpixel(x,y,getbkcolor());
}
void Point::move(int xn,int yn){
hide();
x=xn;
y=yn;
show();
}
Point::Point(int x1, int y1){
x=x1;
y=y1;
}
Point::Point(){
x=0;
y=0;
public:
}

class Circle: public Point{
public:
int radius;
int vis;
Circle(int,int,int);
~Circle();
void show();
void hide();
void move(int,int);
void vary(int);
int putradius();
};
Circle::Circle(int xc,int yc,int radc=0):        Point(xc,yc){
radius=radc;
vis=1;
}
void Circle::hide(){
unsigned int col;
if(vis==0)return;
col=getcolor();
setcolor(getbkcolor());
circle(x,y,radius);
vis=0;
setcolor(col);
}
void Circle::show(){
circle(x,y,radius);
vis=1;
}
/*
void Circle::move(int xn,int yn) {
hide();
x=xn;
y=yn;
show();
}

*/
void Circle:: vary(int d){
hide();
radius+=d;
if(radius<0)radius=0;
show();
}
int Circle::putradius(){
return radius;
}
Circle::~Circle(){
hide();
}

};

//Главная программа
void main() {
int a=DETECT,b;
initgraph(&a,&b,"C:\\BC\\BGI");

 

Point p0;
Point p1(100,100);
Point p2(105,105);
setcolor(YELLOW);
p0.show();
p1.show();
p2.show();
getchar();
p2.move(200,200);

Circle A(150,250,30);
Circle B(300,100,50);

cout<<"A.x="<<A.putx()            <<endl<<"A.y="<<A.puty()<<endl;
cout<<"radius="<<A.putradius();
getch();

setcolor(RED);
B.show();
setcolor(BLUE);
A.show();
getch();
A.move(300,300);
B.vary(20);
getch();
A.vary(120);
getch();
A.Circle::~Circle();
B.Circle::~Circle();

getch();
closegraph();
}

рассказать друзьям и получить подарок

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов