第十周 任务三 3-1 先声明点类,在派生出圆类 圆柱类

来源:互联网 发布:云服务器开放端口 编辑:程序博客网 时间:2024/05/19 15:26
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:先声明点类,在派生出圆类 圆柱类
* 作    者:  张启立                           
* 完成日期:  2012年 4 月 16 日
* 版 本 号: 10-3-1   
#include <iostream>#include<Cmath>     #include<iomanip>     using namespace std;const double PI = 3.141592653;class Point//点类声明{public:Point(){x = 0;y = 0;}Point(double x0,double y0):x(x0),y(y0){ }~Point(){ }    double getx(){return x;}      double gety(){return y;}      friend ostream &operator << (ostream & input, Point & c);  protected:      double x, y;   //点的横坐标和纵坐标   };ostream &operator << (ostream & input, Point & c){input << "点:(" << c.x << "," << c.y << ")";        return input;  }class Circle: public Point   //以点类为基类的派生类{  public:      Circle(){radius = 0;}      Circle(double x0, double y0, double r):Point(x0, y0),radius(r){ }      //构造函数       ~Circle(){}     double getr(){return radius;}  double area1();    friend ostream &operator << (ostream & out, Circle & c);  protected:      double radius;  };  double Circle::area1() //圆形面积{double c_area = PI * getr() * getr();return c_area;}ostream &operator << (ostream & out, Circle & c)  {      out << "(" << c.getx() << "," << c.gety() << ")" << "为圆心" << c.radius << "为半径的圆";        return out;  }    class Cylinder: public Circle  //以圆类为基类的派生类{  public:      Cylinder(){height = 0;}      Cylinder(double x1,double y1, double r1, double h):Circle(x1, y1, r1), height(h){ }      ~Cylinder(){}      double geth(){return height;}      double area2();      double volume();      friend ostream &operator << (ostream & out, Cylinder & c);  private:      double height;  };     double Cylinder::area2()  {        //double c_area = PI * getr() * getr();        double c_cir = 2 * PI * getr() * height;   //圆柱侧面积      return (c_cir + 2 * area1());  }    double Cylinder::volume()  {      return (PI * getr() * getr() * height);  }    ostream &operator << (ostream & out, Cylinder & c)  {      out << "(" << c.getx() << "," << c.gety() << ")" << "为圆心" << c.radius << "为半径" << c.height << "为高的圆柱体";        return out;  }    int main()  {      Cylinder cy(2, 2, 1, 3);        cout << cy << endl;        cout << setiosflags(ios::fixed) << setprecision(2);        cout << "表面积是:" << cy.area2() << endl;        cout << "体积是:" << cy.volume() << endl;        system("pause");        return 0;  }  

     
原创粉丝点击