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