点-圆-圆柱类族的设计 3


  1. *Copyright(c)2016,烟台大学计算机与控制工程学院 
  2.  *All rights reserved 
  3.  *文件名称:123.cpp 
  4.  *作    者:隋宗涛
  5.  *完成日期:2016年5月10日 
  6.  *版 本 号:v1.0 
  7.  * 
  8.  *问题描述:以点为基类,派生出一个圆类,增加数据成员r,和求面积的成员函数area,实现其他需要的成员函数,设计main函数完成测试。 
  9.  *输入描述:无。 
  10.  *程序输出:圆的圆心坐标,半径和面积。 
  11. */  
  12. #include <iostream>  
  13. using namespace std;  
  14. class Point  
  15. {  
  16. public:  
  17.     Point(double x=0,double y=0);                    //构造函数Point  
  18.     void setPoint(double,double);                  ////设置x和y的坐标值  
  19.     double getX( )  
  20.     {  
  21.         return x;  
  22.     }              //x坐标  
  23.     double getY( )  
  24.     {  
  25.         return y;  
  26.     }              //y坐标  
  27.     void show();  
  28. protected:                                       //受保护的成员  
  29.     double x,y;  
  30. };  
  31. void Point::setPoint(double m,double n)  //设置x和y的坐标值  
  32. {  
  33.     x=m;  
  34.     y=n;  
  35. }  
  36. Point::Point(double m,double n)  //Point的构造函数  
  37. {  
  38.     x=m;  
  39.     y=n;  
  40. }  
  41. void Point::show()  
  42. {  
  43.     cout<<"("<<x<<","<<y<<")"<<endl;  
  44. }  
  45. class Circle:public Point   //Circle是Point类的公用派生类  
  46. {  
  47. public:  
  48.     Circle(double x=0,double y=0,double r=0);  //构造函数Circle  
  49.     void setR(double);                  //设置半径的值  
  50.     double getR( );               //读取半径的值  
  51.     double area ( );                   //计算圆的面积  
  52.     void show();  
  53. protected:  
  54.     double radius;  
  55. };  
  56. Circle::Circle(double m,double n,double r):Point(m,n),radius(r) { } //定义构造函数  
  57.   
  58. void Circle::setR(double r)  //设置半径的值  
  59. {  
  60.     radius=r;  
  61. }  
  62. double Circle::getR( )  //读取半径的值  
  63. {  
  64.     return radius;  
  65. }  
  66. double Circle::area( )  //计算圆的面积  
  67. {  
  68.     return radius*radius*3.14159;  
  69. }  
  70. void Circle::show()  //输出点和圆的面积  
  71. {  
  72.     cout<<"Point=("<<x<<", "<<y<<"), r="<<radius<<", area="<<area( )<<endl;  
  73. }  
  74. class Cylinder:public Circle  
  75. {  
  76. public:  
  77.     Cylinder (double x=0,double y=0,double r=0,double h=0);//构造函数Cylinder  
  78.     void setHeight(double);                      //设置圆柱的高  
  79.     double getHeight( ) const;                    //读取圆柱的高  
  80.     double area( ) const;                         //计算圆柱的表面积  
  81.     double volume( ) const;                       //计算圆柱的体积  
  82.     void show();  
  83. protected:  
  84.     double height;                               //圆柱高  
  85. };  
  86. Cylinder::Cylinder(double m,double n,double r,double h) :Circle(m,n,r),height(h){}  //定义构造函数  
  87.   
  88. void Cylinder::setHeight(double h)  //设置圆柱的高  
  89. {  
  90.     height=h;  
  91. }  
  92. double Cylinder::getHeight( ) const  //读取圆柱的高  
  93. {  
  94.     return height;  
  95. }  
  96. double Cylinder::area() const  //计算圆柱的表面积  
  97. {  
  98.     return 2*(radius*radius*3.14159)+2*3.14159*radius*height;  
  99. }  
  100. double Cylinder::volume() const  //计算圆柱的体积  
  101. {  
  102.     return radius*radius*3.14159*height;  
  103. }  
  104.   
  105. void Cylinder::show()  
  106. {  
  107.     cout<<"Point=("<<x<<","<<y<<"), r="<<radius<<", h="<<height  
  108.         <<", area="<<area( )<<", volume="<<volume( )<<endl;  
  109. }  
  110. int main( )  
  111. {  
  112.     Cylinder cy1(1,2,3,4);  
  113.     cout<<"坐标,半径,高,圆柱表面积,圆柱体积"<<endl;  
  114.     cy1.show();  
  115.     cy1.setHeight(5);  
  116.     cy1.setR(6);  
  117.     cy1.setPoint(2,1);  
  118.     cout<<"改变后的坐标,半径,高,圆柱表面积,圆柱体积"<<endl;  
  119.     cy1.show();  
  120.     return 0;  
  121. }  


 
 

运行结果:

点-圆-圆柱类族的设计 3_第1张图片


你可能感兴趣的:(点-圆-圆柱类族的设计 3)