第十四周專案三----抽象類
阿新 • • 發佈:2019-02-07
/* * 程式的版權和版本宣告部分 * 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; }
結果;
體會:
純虛擬函式的定義。
公用派生類的定義。
正方體,球體,圓柱體的表面積體積求解。