Figure类组合了Point类,Circle类继承了Figure类,请根据该类图编写C++程序

2025-04-08 19:43:53
推荐回答(1个)
回答1:

#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()
{
}