Designing Graphics Class System Based on Point Class

First define the point class, which should include x, y coordinate data members, member functions such as coordinate acquisition and setting functions, display functions, and area calculation functions; use the point class as the base class to derive the circle class, add data members representing the radius, and obtain the radius And setting functions, perimeter calculation functions, overloaded display functions and area calculation functions, etc.;

#include <iostream>
using namespace std;
class Point{
    protected:
      double x;
      double y;
    public:
      Point(double xv=0,double yv=0);//有参构造
      Point(const Point &p);         //拷贝构造
      ~Point();                      //析构函数
      void show() const;             //显示Point信息
      double area()const;            //面积=0
      void setX(double xv);          //设置X坐标
      void setY(double yv);          //设置Y坐标
      double getX() const;           //获取X坐标
      double getY() const;           //获取Y坐标
};
//有参构造
Point::Point(double xv,double yv){
    x=xv;
    y=yv;
    cout<<"Point Constructor run"<<endl;
}
//拷贝构造
Point::Point(const Point &p){
    x=p.x;
    y=p.y;
    cout<<"Point CopyConstructor run"<<endl;
}
//析构函数
Point::~Point(){
    cout<<"Point Destructor run"<<endl;
}
//显示Point
void Point::show() const{
    cout<<"("<<x<<","<<y<<")";
}
//设置X坐标
void Point::setX(double xv){
    x=xv;
}
//设置Y坐标
void Point::setY(double yv){
    y=yv;
}
//面积函数
double Point::area() const{
    return 0;
}
//获取X坐标
double Point::getX() const{
    return x;
}
//获取Y坐标
double Point::getY() const{
    return y;
}

class Circle:protected Point
{
private:
    double radius;
public:
    static double PI;
    Circle(double a=0,double b=0,double c=0);
    Circle(Circle &a);
    ~Circle();
    void setRadius(double a);
    double getRadius()const;
    double circumference()const;
    double area()const;
    void show()const;
};
double Circle:: PI=3.14159;
Circle::Circle(double a,double b,double c):Point(a,b),radius(c)
{cout<<"Circle Constructor run"<<endl;}
Circle::Circle(Circle &a):Point(a)
{
    x=a.x;
    y=a.y;
    radius=a.radius;
    cout<<"Circle CopyConstructor run"<<endl;
}
Circle::~Circle()
{
    cout<<"Circle Destructor run"<<endl;
}
void Circle::setRadius(double a)
{
    radius=a;
}
double Circle::getRadius()const
{
    return radius;
}
double Circle::circumference()const
{
    return 2*PI*radius;
}
double Circle::area()const
{
    return  PI*radius*radius;
}
void Circle::show()const
{
    cout<<"("<<x<<","<<y<<")"<<",Radius="<<radius;
}


int main(void){
    double  r;
    cout<<"输入圆的半径:"<<endl;
    cin>>r;
    Circle c1(1,2,4),c2,c3(c1);
    c1.show();
    cout<<endl<<"Area="<<c1.area()<<endl<<"Circumference="<<c1.circumference()<<endl;
    c2.show();
    cout<<endl<<"Area="<<c2.area()<<endl<<"Circumference="<<c2.circumference()<<endl;
    c3.setRadius(r);
    c3.show();
    cout<<endl<<"Area="<<c3.area()<<endl<<"Circumference="<<c3.circumference()<<endl;
    return 0;
}

Guess you like

Origin blog.csdn.net/y0205yang/article/details/130208522