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 实验体会

通过这个实验,我学会了如何使用对象的派生及继承。

0 0