十三周(四)设计抽象类CSolid,含有两个求表面积和体积的纯虚函数
来源:互联网 发布:2016网络信息安全事件 编辑:程序博客网 时间:2024/04/30 08:30
* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:设计抽象类CSolid,含有两个求表面积和体积的纯虚函数 * 作 者:齐艳红 * 完成日期: 2011年5月 15日 * 版 本 号: * 对任务及求解方法的描述部分:设计抽象类CSolid,含有两个求表面积和体积的纯虚函数 * 问题描述:设计个派生类CCube,CBall,CCylinder,分别表示正方体,球体和圆柱体。 * 程序头部的注释结束*/ #include <iostream> using namespace std; const double pai=3.1415926; //声明常量pai class CSolid //设计基类{ public: virtual double Area() const=0; //声明为纯虚函数 virtual double Volume() const=0; }; // 立方体类 class CCube : public CSolid { public: CCube(double len):length(len){} //设计构造函数 double Area() const; // 求表面积 double Volume() const; // 求体积 private: double length; }; // 求立方体表面积 double CCube::Area() const { double c; c=6*length*length; return c; } // 求立方体体积 double CCube::Volume() const { double c; c=length*length*length; return c; } // 球体类 class CBall : public CSolid { private: double radius; // 圆周率 public: CBall(double r):radius(r){} //构造函数半径 double Area() const; // 求表面积 double Volume() const; // 求体积; }; // 求球体表面积 double CBall::Area() const { double c; c=4*pai*radius*radius; return c; } // 求球体体积 double CBall::Volume() const { double c; c=pai*radius*radius*radius*4/3; return c; } // 圆柱体类 class CCylinder : public CSolid { private: double radius; double height; public: CCylinder(double r,double high):radius(r),height(high){}// 圆柱体类构造函数 double Area() const; // 求表面积 double Volume() const; // 求体积 }; // 求圆柱体表面积 double CCylinder::Area() const { double c; c=pai*radius*radius+2*pai*radius*height; return c; } // 求圆柱体体积 double CCylinder::Volume() const { double c; c=pai*radius*radius*height; return c; } int main( ) { CSolid *p; //定义基类指针p,用来输出 double s,v; CCube x(10); cout<<"立方体边长为:10"<<endl; p=&x; s=p->Area( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CBall y(2.5); cout<<"球体半径为:2.5"<<endl; p=&y; s=p->Area( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; CCylinder z(10,12); cout<<"圆柱体底面半径、高分别为:10, 12"<<endl; p=&z; s=p->Area( ); v=p->Volume( ); cout<<"表面积:"<<s<<endl; cout<<"体积:"<<v<<endl; cout<<endl; system("pause"); return 0; }
立方体边长为:10表面积:600体积:1000球体半径为:2.5表面积:254.469体积:381.704圆柱体底面半径、高分别为:10, 12表面积:1570.8体积:6283.19请按任意键继续. . .
总结:事实证明有条理的来,都可以做得到,将程序大化小,逐步求精:(1)先设计出基类CSolid,并且是抽象类,其中包含的成员函数是表面积和体积,不包含数据成员,接着是设计派生类,共三个,先将类设计出,然后三个立方体的表面积体积根据公式,利用数据成员求出,实现类即定义类,三个逐个实现后在进行main函数,其中要求:定义基类指针p(CSolid *p),在前面程序中已涉及过此方法,因此写出main函数,实现整个类的过程·····