点类,圆类,圆柱类 (一)

2014-11-24 02:02:54 · 作者: · 浏览: 4

print /* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 文件名称:text.cpp
* 作 者: 胡颖
*完成日期:2013年5月20日
* 版 本 号:v1.0
*
* 输入描述:无
* 问题描述:(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径);(3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。要求编写程序,设计出各类中基本的成员函数(包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等),使之能用于处理以上类对象,最后求出圆格柱体的表面积、体积并输出。
* 程序输出:输出点,圆的信息和圆柱的信息
* 问题分析:无
* 算法设计:略
*/
#include
using namespace std;
class Point
{
public:
Point(double x=0,double y=0);//初始化点坐标为(0,0)
double getX()const
{
return x;
}
double getY()const
{
return y;
}
void setPoint(double,double);
friend ostream & operator<<(ostream &,const Point &);
protected:
double x,y;
};
Point::Point(double a,double b)
{
x=a;
y=b;
}
void Point::setPoint(double a,double b)
{
x=a;
y=b;
}
ostream & operator<<(ostream &output,const Point &p)
{
output<<"point:["< return output;
}
class Circle:public Point
{
public:
Circle(double x=0,double y=0,double r=0);
void setRadius(double);
double getRadius()const ;
double area()const;
friend ostream & operator<<(ostream &,const Circle &);
protected:
double radius;
};
Circle::Circle(double a,double b,double r):Point(a,b),radius(r){}
void Circle::setRadius(double r)
{
radius=r;
}
double Circle::getRadius()const
{
return radius;
}
double Circle::area()const
{
return 3.14159*radius*radius;
}
ostream & operator<<(ostream &output,const Circle &c)
{
output<<"center=["< return output;
}
class Cylinder:public Circle
{
public:
Cylinder(double x=0,double y=0,double r=0,double h=0);
void setHeight(double);
double getHeight()const;
double area()const;
double volume()const;
friend ostream & operator<<(ostream &,const Cylinder &);

protected:
double height;
};
Cylinder::Cylinder(double a,double b,double r,double h):Circle(a,b,r),height(h){}
void Cylinder::setHeight(double h)
{
height=h;
}
double Cylinder::getHeight()const
{
return height;
}
double Cylinder::area()const
{
return 2*Circle::area()+2*3.14159*radius*height;//求面积借用Circle的成员函数area的方式为Circle::area()
}
double Cylinder::volume()const
{
return Circle::area()*height;
}
ostream & operator<<(ostream &output,const Cylinder &cy)
{
output<<"center=["< return output;
}
int main()
{
Point p(3.5,6.4);
cout<<"x="< Circle c(1.2,2.2,3.2);
cout<<"original circle:x="< c.setPoint(5,5);
cout<<"new circle:"< Cylinder cy1(1.2,2.2,3.2,4.2);
cout<<"original Cylinder:x="< cy1.setPoint(5,5);
cy1.setRadius(2.1);
cy1.setHeight(3);
cout<<"new Cylinder:"< return 0;
}

/* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 文件名称:text.cpp
* 作 者: 胡颖
*完成日期:2013年5月20日
* 版 本 号:v1.0
*
* 输入描述:无
* 问题描述:(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径);(3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。要求编写程序,设计出各类中基本的成员函数(包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等),使之能用于处理以上类对象,最后求出圆格柱体的表面积、体积并输出。
* 程序输出:输出点,圆的信息和圆柱的信息
* 问题分析:无
* 算法设计:略
*/
#include
using namespace std;
class Point
{
public:
Point(double x=0,double y=0);//初始化点坐标为(0,0)
double getX()const
{
return x;
}
double getY()const
{
return y;
}
void setPoint(double,double);
friend ostream & operator<<(ostream &,const Point &);
protected:
double x,y;
};
Point::Point(double a,double b)
{
x=a;
y=b;
}
void Point::setPoint(double a,double b)
{
x=a;
y=b;
}