#include
using namespace std;
class CPoint
{
protected:
int m_x;
int m_y;
public:
CPoint(const int &x = 0,const int &y = 0);
~CPoint();
int Get_X()const;
int Get_Y()const;
void Set_X(const int&);
void Set_Y(const int&);
};
CPoint::CPoint(const int &x /* = 0 */,
const int &y /* = 0 */
):m_x(x),m_y(y)
{
}
CPoint::~CPoint()
{
}
int CPoint::Get_X()const
{
return m_x;
}
int CPoint::Get_Y()const
{
return m_y;
}
void CPoint::Set_X(const int &x)
{
m_x = x;
}
void CPoint::Set_Y(const int &y)
{
m_y = y;
}
class CFigure
{
public:
CFigure(const int &x = 0,const int &y = 0);
CFigure(const CPoint &point);
~CFigure();
CPoint Location()const;
void Move(const int&, const int&);
virtual void Draw() = 0;
protected:
CPoint m_point;
};
CFigure::CFigure(const int &x /* = 0 */,
const int &y /* = 0 */
):m_point(x,y)
{
}
CPoint CFigure::Location()const
{
return m_point;
}
void CFigure::Move(const int &x, const int &y)
{
m_point.Set_X(x);
m_point.Set_Y(y);
Draw();
}
CFigure::~CFigure()
{
}
class CCircle:public CFigure
{
public:
CCircle(const int &x = 0,const int &y = 0,const float &r = 0);
~CCircle();
void Draw();
protected:
float m_radius;
};
CCircle::CCircle(const int &x /* = 0 */,
const int &y /* = 0 */,
const float &r /* = 0 */
):CFigure(x,y),m_radius(r)
{
}
void CCircle::Draw()
{
cout << "circle" << endl;
cout << '(' << m_point.Get_X() << ',' << m_point.Get_Y() << ')' << '\t';
cout << "radius: " << m_radius << endl;
}
CCircle::~CCircle()
{
}