MyPoint类
来源:互联网 发布:排课系统算法 编辑:程序博客网 时间:2024/05/01 15:11
1 实验内容及目的
1.1实验目的
理解和掌握C++类和对象的派生和继承。
1.2实验内容
在程序设计练习中,我们创建了一个MyPoint类来建模二维空间中的一个点。MyPoint类包含两个属性x和y,表示x轴和y轴坐标,还包含x和y的获取器函数,及返回两点指尖的距离的函数。创建一个名为_3DPoint的类,来建模三维空间中的一个点。将_3DPoint设计为一个MyPoint的一个派生类,包含如下额外属性:
(1)一个名为z的数据域,表示z轴坐标。
(2)一个无参构造函数,创建一个坐标为(0,0,0)的点。
(3)一个带参数的构造函数,按指定坐标创建一个点。
(4)z的获取器函数。
(5)覆盖distance函数,返回三维空间中两点之间的距离。
编写一个测试函数,它创建两个点,并输出两点之间的距离。
2 实验步骤
创建一个名为_3DPoint的类,来建模三维空间中的一个点。将_3DPoint设计为一个MyPoint的一个派生类,包含如下额外属性:
(1)一个名为z的数据域,表示z轴坐标。
(2)一个无参构造函数,创建一个坐标为(0,0,0)的点。
(3)一个带参数的构造函数,按指定坐标创建一个点。
(4)z的获取器函数。
(5)覆盖distance函数,返回三维空间中两点之间的距离。
先输入两个点的坐标,然后输出两点之间的距离。
3 源代码
3.1 MyPoint.h
#include<iostream>
using namespace std;
class MyPoint
{
doublex;
doubley;
public:
MyPoint();
MyPoint(double_x,double _y);
voidsetX(double _x);
voidsetY(double _y);
doublegetX();
doublegetY();
doubledistance(MyPoint *a);
};
class _3DPoint:public MyPoint
{
doublez;
public:
_3DPoint();
_3DPoint(double_x,double _y,double _z);
voidsetZ(double _z);
doublegetZ();
doubledistance(_3DPoint *a);
};
3.2 MyPoint.cpp
#include<iostream>
#include"MyPoint.h"
#include"math.h"
using namespace std;
MyPoint::MyPoint()
{
x=0;
y=0;
}
MyPoint::MyPoint(double _x,double _y)
{
x=_x;
y=_y;
}
void MyPoint::setX(double _x)
{
x=_x;
}
void MyPoint::setY(double _y)
{
y=_y;
}
double MyPoint::getX()
{
returnx;
}
double MyPoint::getY()
{
returny;
}
double MyPoint::distance(MyPoint *a)
{
doublex1,y1;
x1= a->getX() -x;
y1= a->getY() -y;
returnsqrt(x1*x1+y1*y1);
}
_3DPoint::_3DPoint()
{
MyPoint();
z=0;
}
_3DPoint::_3DPoint(double _x,double_y,double _z)
{
setX(_x);
setY(_y);
z=_z;
}
void _3DPoint::setZ(double _z)
{
z=_z;
}
double _3DPoint::getZ()
{
returnz;
}
double _3DPoint::distance(_3DPoint *a)
{
doublex1,y1,z1;
x1= a->getX() -getX();
y1= a->getY() -getY();
z1=a->getZ()-getZ();
returnsqrt(x1*x1+y1*y1+z1*z1);
}
3.3 Main.cpp
#include<iostream>
#include"MyPoint.h"
using namespace std;
int main()
{
doublex,y,z;
cout<<"请输入x,y,z坐标的值,以空格键隔开:";
cin>>x>>y>>z;
_3DPoint*a=new _3DPoint(x,y,z);
cout<<"请输入另一个点的x,y,z坐标的值,以空格键隔开:";
cin>>x>>y>>z;
_3DPoint*b=new _3DPoint(x,y,z);
cout<<"两点之间的距离为:"<<a->distance(b)<<endl;
return0;
}
4 遇到的问题与分析
对象的派生及继承问题,最终通过翻阅书籍以及上网查资料解决了问题。
5 实验体会
通过这个实验,我学会了如何使用对象的派生及继承。
- MyPoint类
- Mypoint类及相关操作
- 为MYPoint类写一个分类
- 设计一个名为MyPoint的类
- Java实现点类(MyPoint)和三角形类(Triangl2D)
- java中的一个MyPoint方法
- iphone for PPT遥控器 MyPoint PowerPoint Remote
- 关于myrect.origin=mypoint中调用setOrigin的问题
- 类
- 类
- 类
- 类
- 类
- 类
- 类
- 类
- 类
- 类
- Oracle客户端的安装与远程连接配置
- 父页面 子页面传数据 单选 多选
- NSBundle以及mainBundle
- 为什么printf只能用_cdecl调用约定
- openwrt 配置 wifidog
- MyPoint类
- 活动安排_贪心算法
- 位运算(二进制位编号顺序)
- 矩阵相乘
- Linux生成动态链接库的-fPIC参数问题
- poj 2135 Farm Tour
- Double
- mysql存储过程
- webpy+uploadify实现文件异步上传