十三周(四)设计抽象类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函数,实现整个类的过程·····
	
				
		
原创粉丝点击