/*
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作者:邱学伟
* 完成日期:2013 年 5 月 15 日
* 版本号:v1.0
* 输入描述:无
* 问题描述:
* 程序输出:
* 问题分析:
* 算法设计:略
*/
/*(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);
(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径);
(3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。
要求编写程序,设计出各类中基本的成员函数(包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等),使之能用于处理以上类对象,最后求出圆格柱体的表面积、体积并输出。
*/
#include <iostream>
#include <cmath>
using namespace std;
class Point
{
public:
Point(double x1,double y1):x(x1),y(y1){}
void SetPoint(double x2,double y2);
double getx(){return x;}
double gety(){return y;}
friend ostream & operator<<(ostream &,const Point &);
protected:
double x,y;
};
void Point::SetPoint(double x2,double y2)
{
x=x2;
y=y2;
}
ostream & operator<<(ostream &output,const Point &P)
{
output<<"("<<P.x<<","<<P.y<<")"<<endl;
return output;
}
int main()
{
Point p(3.5,6.4);
cout<<"x="<<p.getx()<<",y="<<p.gety()<<endl;
p.SetPoint(8.5,6.8);
cout<<"p="<<p<<endl;
return 0;
}
/*(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);
(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径);
(3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。
要求编写程序,设计出各类中基本的成员函数(包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等),使之能用于处理以上类对象,最后求出圆格柱体的表面积、体积并输出。
*/
#include <iostream>
#include <cmath>
using namespace std;
class Point //点类
{
public:
Point(double x1,double y1):x(x1),y(y1){} //构造函数
void SetPoint(double x2,double y2);
double getx(){return x;}
double gety(){return y;}
friend ostream & operator<<(ostream &,const Point &);//友元函数重载“<<”
protected: //受保护的数据
double x,y;
};
void Point::SetPoint(double x2,double y2)
{
x=x2;
y=y2;
}
ostream & operator<<(ostream &output,const Point &P)
{
output<<"("<<P.x<<","<<P.y<<")"<<endl;
return output;
}
//以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径radius);
class Circle:public Point
{
public:
Circle(double x=0,double y=0,double r=0);//构造函数
void SetRadius(double);//设置半径
double GetRadius()const {return r;}//提取半径数值
double area()const;//求圆的半径
friend ostream & operator<<(ostream &,const Circle &);//友元函数重载“<<”
protected:
double r;
};
Circle::Circle(double a,double b,const double r1):Point(a,b),r(r1){}
void Circle::SetRadius(double r0)
{
r=r0;
}
double Circle::area()const
{
return 3.14*r*r;
}
ostream & operator<<(ostream &output,const Circle &c)
{
output<<"center: ("<<c.x<<","<<c.y<<") r="<<c.r<<" area="<<c.area()<<endl;
return output;
}
int main()
{
Circle c(3.5,6.4,5.2);
cout<<"circle: x="<<c.getx()<<", y="<<c.gety()<<", r="<<c.GetRadius()<<", area="<<c.area()<<endl;
c.SetPoint(5,5);
cout<<"circle:"<<c<<endl;
return 0;
}
/*(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);
(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径);
(3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。
要求编写程序,设计出各类中基本的成员函数(包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等),使之能用于处理以上类对象,最后求出圆格柱体的表面积、体积并输出。
*/
#include <iostream>
#include <cmath>
using namespace std;
class Point //点类
{
public:
Point(double x1,double y1):x(x1),y(y1){} //构造函数
void SetPoint(double x2,double y2);
double getx(){return x;}
double gety(){return y;}
friend ostream & operator<<(ostream &,const Point &);//友元函数重载“<<”
protected: //受保护的数据
double x,y;
};
void Point::SetPoint(double x2,double y2)
{
x=x2;
y=y2;
}
ostream & operator<<(ostream &output,const Point &P)
{
output<<"("<<P.x<<","<<P.y<<")"<<endl;
return output;
}
//以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径radius);
class Circle:public Point
{
public:
Circle(double x=0,double y=0,double r=0);//构造函数
void SetRadius(double);//设置半径
double GetRadius()const {return r;}//提取半径数值
double area()const;//求圆的半径
friend ostream & operator<<(ostream &,const Circle &);//友元函数重载“<<”
protected:
double r;
};
Circle::Circle(double a,double b,const double r1):Point(a,b),r(r1){}
void Circle::SetRadius(double r0)
{
r=r0;
}
double Circle::area()const
{
return 3.14*r*r;
}
ostream & operator<<(ostream &output,const Circle &c)
{
output<<"center: ("<<c.x<<","<<c.y<<") r="<<c.r<<" area="<<c.area()<<endl;
return output;
}
int main()
{
Circle c(3.5,6.4,5.2);
cout<<"circle: x="<<c.getx()<<", y="<<c.gety()<<", r="<<c.GetRadius()<<", area="<<c.area()<<endl;
c.SetPoint(5,5);
cout<<"circle:"<<c<<endl;
return 0;
}