十三周(四)设计抽象类CSolid,含有两个求表面积和体积的纯虚函数

* (程序头部注释开始)                
* 程序的版权和版本声明部分                
                
* 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函数,实现整个类的过程·····


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值