20172322 2017-2018-2 《程序设计与数据结构》实验二报告
20172322 2017-2018-2 《程序设计与数据结构》实验二报告
- 课程:《程序设计与数据结构》
- 班级: 1723
- 姓名: 张昊然
- 学号:20172322
- 实验教师:王志强
- 助教:张旭升/刘伟康
- 实验日期:2018年4月17日
- 必修/选修: 必修
1.实验内容
- 此处填写实验的具体内容:
- 初步掌握单元测试和TDD
- 理解并掌握面向对象三要素:封装、继承、多态
- 初步掌握UML建模
- 熟悉S.O.L.I.D原则
- 了解设计模式
- 完成蓝墨云上 (1)-(5)实验。
2.实验过程及结果
过程:
- 本次实验老师一共设置了5个提交节点分别是:
1.
- 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 完成单元测试的学习
- 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号
- 本提交点考查JUnit会不会使用,测试用例至少要包含正常情况,错误情况,边界情况的测试
- 在王老师的指导下安装了JUnit,最初搜索不到这个插件,最后阴差阳错找了出来。
2.
- 参考 积极主动敲代码,使用JUnit学习Java (http://www.cnblogs.com/rocedu/p/4837092.html)
以 TDD的方式研究学习StringBuffer - 提交你的单元测试用例和测试通过的截图,截图要加上学号水印
- 测试自己会不会写JUnit测试用例
- 学会了使用JUnit来测试,可以检测很多边界的问题
3.
- 参考实验二 Java面向对象程序设计
- 对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
用自己的学号%6进行取余运算,根据结果进行代码扩充:
- 0:让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
- 1:让系统支持Short类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
- 2:让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
- 3:让系统支持Long类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
- 4:让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
- 5:让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
- 这一步在做的过程最初没有理解到提交点的意思,向王老师讯问后才了解,并且在做的时候参考了所给博客的优秀提交进行了修改。
4.
- 提交:单元测试代码和运行成功截图及码云上代码链接,截图要加上学号水印
- 任务:以TDD的方式开发一个复数类Complex,要求如下:
// 定义属性并生成getter,setter
double RealPart;
double ImagePart;
// 定义构造函数
public Complex()
public Complex(double R,double I)
//Override Object
public boolean equals(Object obj)
public String toString()
// 定义公有方法:加减乘除
Complex ComplexAdd(Complex a)
Complex ComplexSub(Complex a)
Complex ComplexMulti(Complex a)
Complex ComplexDiv(Complex a)
- 实数与虚数加减乘除法,在编写过程中还参考了[虚数的四则运算方法](https://wenku.baidu.com/view/964bbbe1f12d2af90342e6a0.html)进行了一次学习。
5.
- 使用StarUML对实验二中的代码进行建模,发类图的截图,加上学号水印
- 类图中只少两个类
- 类,继承,接口实现,组合在UML中表达
- 最初只会写出类名,最后通过实践发现点那个类似橡皮擦的符号可以写构造方法那个设置符号写具体的方法
结果:
1.
2.
3.
4.
5.
3.实验过程中遇到的问题和解决过程
-
问题1:由于第一二三个提交点都非常简单,导致我以为第四个也很简单(
其实也不难),但是我也学着像第一二三个提交点一样直接复制了老师所给代码匡中的内容,结果发现是要求 💩 💩 💩 -
问题1解决方案:发现是要求的时候就开始按照要求来编写代码以实现要求,难度不大,只是虚数的乘除法还去学习了一波 💩 💩
-
问题2:第五个提交点需要画出UML图。虽然在很久之前我就已经下好了画UML图的软件,但是我并不会用 T T
刚打开时的时候简直满脸蒙蔽的好吧 -
问题2解决方案:像王志强老师请教,发现UML图软件的使用并不困难,在经过王老师引进门以后我也渐渐发现了如何在UML的三个框框中填入内容。那个类似橡皮擦的符号可以写构造方法那个设置符号写具体的方法
其他(感悟、思考等)
感悟
- TDD的使用可以大量减少自己所编程序中的错误,特别是边界的错误。
- 在编程前画出UML图可以让我们在编程时思路清晰,UML图的存在为我们指明了编程的方向,在以后做大型项目的过程中一定要画出UML图。