每天打卡一小时 第二十二天
【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<<")";
}
第四部曲 总结
在类的编写中 逐渐得心应手 已经不像之前一样要写很长时间了

浙公网安备 33010602011771号