哈尔滨工业大学计算机科学与技术学院
课程实验:
空间三维点类型
课程名称:算法设计与分析
课程类型:必修
目录
空间三维点类型 ....................................................................................................................... 1
一 实验题目 ..................................................................................................................................... 3
实验1:定义并实现一个平面点类 ........................................................................................ 3
实验2:从平面点类Point采用继承的方式,派生三维空间点类Point3D ........................... 3
实验3:定义并实现折线类Curve3D ..................................................................................... 3
二 实现构思 ..................................................................................................................................... 4
1.平面点类 ................................................................................................................................ 4
2.三维点类 ................................................................................................................................ 5
3.三维折线类 ............................................................................................................................ 6
三 测试程序 ................................................................................................................................... 14
四 实验结果 ................................................................................................................................... 16
1.缺省构造对象 ...................................................................................................................... 16
2.设定初始值构造对象 .......................................................................................................... 16
3.重载加法 .............................................................................................................................. 16
4.重载减法 .............................................................................................................................. 17
5.文本文件读写 ...................................................................................................................... 17
6.二进制文件读写 .................................................................................................................. 17
五 实验感想 ................................................................................................................................... 18
1.找到原型 .............................................................................................................................. 18
2.EOF的含义 .......................................................................................................................... 18
一 实验题目
实验1:定义并实现一个平面点类
1. Point,包含protected类型的数据成员m_x、m_y用于保存x轴、y轴两
个坐标值,并具有如下数据成员:
2. get_x()、get_y()用于获取x、y轴的坐标值
3. set_x()、set_y()用于获取x、y轴的坐标值
4. DisplayPoint()函数,用于输出点的全部信息(坐标等)
5. 主程序从键盘输入点的坐标值,程序结束前输出点的信息。
实验2:从平面点类Point采用继承的方式,派生三维空间点类Point3D
1. 增加数据成员m_z(z轴坐标值)
2. 增加成员函数set_z()、get_z()用于设定或获取z轴坐标数值
3. 采用虚函数的方式重载DisplayPoint输出三维空间点的全部信息。
4. 主程序从键盘输入点的三维坐标值,程序结束前输出点的信息。
实验3:定义并实现折线类Curve3D
1. 该类的对象拥有至少1个空间点(Point3D类型的数据,用指针与动态空间申请实现),以及记录点数量的数据成员
2. 编写带默认参数值的构造函数,折线默认的空间点为原点(0,0,0)
3. 编写析构函数;
4. 成员函数DisplayCurve用于输出折线的各个点的信息;
5. 成员函数CurveLen用于计算并输出折线长度;
6. 重载加号运算符+,可以将一个Point3D点增加到折线点序列中(表示将折线延长到改点处);
7. 重载减号运算符-,可以将一个Point3D点从折线点序列中删除(先在点序列中搜索,如果有要删除的点,就删除,如果没有,返回即可);
8. 重载赋值运算符= 解决浅拷贝问题;
9. 成员函数write_txt(ofstream &os),实现将折线数据写入文本文件的功能,文本文件每行保存一个点的三个坐标值,有多少个点,就有多少行;
10. 成员函数read_txt(ifstream &is),实现从文本文件读入折线数据的功能,文本文件每行保存一个点的三个坐标值,有多少个点,就有多少行;
11. 成员函数write_binary(ofstream &os) ,实现将折线数据写入二进制文件的功能;
12. 成员函数read_binary(ifstream &is) 实现从二进制文件读入折线数据的功能。
二 实现构思
为了体现各个类的继承关系,同时也为了减少单独一个头文件的大小,分别使用三个头文件实现平面点类、三维点类以及三维折线类。