每天打卡一小时 第二十二天

发布时间 2023-05-08 23:05:35作者: 财神给你送元宝
【CPP0029】以圆类Circle及立体图形类Solid为基础设计圆锥类Cone
分数 10
作者 C++多态编程
单位 石家庄铁道大学

以点类Point及平面图形类Plane为基类公有派生圆类Circle,再以圆类Circle及立体图形类Solid为基类公有派生圆锥类Cone,main(void)函数完成对圆锥类Cone的测试。

第一部曲 自然语言

构造

利用基类函数进行赋值,特有的数据 自己赋值

拷贝构造

传入对象 特有的数据 自己赋值

析构

直接输出

公有函数

显示

注意格式 利用公有函数输出

设置函数

什么等于什么

返回函数

return

 计算函数

计算

第三部曲 代码

class Circle:public Point,public Plane
{

    private:
    double radius;
    public:
    Circle(double a=0,double b=0,double r=0)
    {
    setX(a);
    setY(b);
    radius=r;
    cout<<"Circle Constructor run"<<endl;
    }
    
    Circle (const Circle &p):Point(p)
    {
    radius=p.radius;
    cout<<"Circle CopyConstructor run"<<endl;
    }
    
    ~Circle()
    {
    cout<<"Circle Destructor run"<<endl;
    }
    
    void setR(double r);
    double getR()const;
    double area()const;
    double length()const;
    void show()const;
};
static const double PI=3.14159;
void Circle:: setR(double r)
{
    radius=r;
}
double Circle:: getR()const
{
    return radius;
}
double Circle:: area()const
{
    return PI*radius*radius;
}
double Circle:: length()const
{
    return PI*2*radius;
}
void Circle:: show()const
{
    cout<<"Circle(Point(X="<<getX()<<",Y="<<getY()<<")"<<",Radius="<<radius<<")";
}
class Cone:public Circle,public Solid
{
    private:
    double height;
    public:
    Cone(double x=0,double y=0,double r=0,double h=0):Circle(x,y,r)
    {
    height=h;
    cout<<"Cone Constructor run"<<endl;
    }
    Cone(const Cone &p):Circle(p)
    {
    height=p.height;
    cout<<"Cone CopyConstructor run"<<endl;
    }
    ~Cone()
    {
    cout<<"Cone Destructor run"<<endl;
    }
    void setH(double h);
    double getH()const;
    double s_Area()const;
    double volume()const;
    void show()const;
};
void Cone::setH(double h)
{
    height=h;
}
double Cone::getH()const
{
    return height;
}
double Cone::volume()const
{
    return PI*getR()*getR()*height/3;
}
double Cone::s_Area()const
{
    return PI*getR()*getR()+PI*sqrt(height*height+getR()*getR())*getR();
}
void Cone::show()const
{
    cout<<"Cone(Circle(Point(X="<<getX()<<",Y="<<getY()<<"),Radius="<<getR()<<"),Height="<<height<<")";
}

  第四部曲 总结

在类的编写中 逐渐得心应手 已经不像之前一样要写很长时间了