1. 程式人生 > >第十四周專案三----抽象類

第十四周專案三----抽象類

/*
* 程式的版權和版本宣告部分
* Copyright (c)2013, 煙臺大學計算機學院學生
* All rightsreserved.
* 檔名稱: Animal.cpp
* 作 者:趙曉晨
* 完成日期:2013 年06月07日
* 版本號: v1.0
* 對任務及求解方法的描述部分:略
* 輸入描述:略
* 問題描述:略
*/
#include <iostream>
using namespace std;
const double pai=3.1415926;

class CSolid// 抽象立體圖形基類
{
public:
	virtual double SurfaceArea() const=0;
	virtual double Volume() const=0;
};
//1.
class CCube : public CSolid//宣告公用派生類ccube
{
public:
	CCube(double len=0);
	double SurfaceArea() const;   // 求表面積
	double Volume() const;        // 求體積
private:
	double length;
};
CCube::CCube(double len)//定義建構函式
{
    length=len;
}
double CCube::SurfaceArea() const//求表面積
{
	double c;
	c=6*length*length;
	return c;
}
double CCube::Volume() const//求體積
{
	double c;
	c=length*length*length;
	return c;
}
//2.
class CBall : public CSolid//宣告公用派生類cball
{
private:
	double radius;
public:
	CBall(double r=0);
	double SurfaceArea() const;  // 求表面積
	double Volume() const;       // 求體積;
};
CBall::CBall(double r)//定義建構函式
{
	radius=r;
}
double CBall::SurfaceArea() 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;
}
//3.
class CCylinder : public CSolid//宣告公用派生類ccylinder
{
private:
    double radius;
	double height;
public:
	CCylinder(double r=0,double high=0);
	double SurfaceArea() const;       // 求表面積
	double Volume() const;            // 求體積
};
CCylinder::CCylinder(double r,double high)//定義建構函式
{
	radius=r;
	height=high;
}
double CCylinder::SurfaceArea() const//求表面積
{
	double c;
	c=2*pai*radius*radius+2*pai*radius*height;
	return c;
}
double CCylinder::Volume() const//求體積
{
	double c;
	c=pai*radius*radius*height;
	return c;
}
//main函式進行測試
int main( )
{
	CSolid *p;
	double s,v;
	CCube x(10);
	cout<<"立方體邊長為 10"<<endl;
	p=&x;
	s=p->SurfaceArea( );
	v=p->Volume( );
	cout<<"表面積:"<<s<<endl;
	cout<<"體積:"<<v<<endl;
	cout<<endl;
	CBall y(1.2);
	cout<<"球體半徑為 1.2 "<<endl;
	p=&y;
	s=p->SurfaceArea( );
	v=p->Volume( );
	cout<<"表面積:"<<s<<endl;
	cout<<"體積:"<<v<<endl;
	cout<<endl;
	CCylinder z(11,12);
	cout<<"圓柱體底面半徑、高分別為 11,12"<<endl;
	p=&z;
	s=p->SurfaceArea( );
	v=p->Volume( );
	cout<<"表面積:"<<s<<endl;
	cout<<"體積:"<<v<<endl;
	cout<<endl;
	return 0;
}


結果;

體會:

純虛擬函式的定義。

公用派生類的定義。

正方體,球體,圓柱體的表面積體積求解。