20172314 2017-2018-2 《程序设计与数据结构》实验报告二
课程:《程序设计与数据结构》
班级: 1723
姓名: 方艺雯
学号:20172314
实验教师:王志强
实验日期:2018年4月18日
必修/选修: 必修
1、实验内容
-
初步掌握单元测试和TDD
-
理解并掌握面向对象三要素:封装、继承、多态
-
初步掌握UML建模
-
熟悉S.O.L.I.D原则
-
了解设计模式
-
完成蓝墨云上 (1)-(5)实验。
2、实验要求
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
3、 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
3、实验过程及结果
- 准备:
- 下载WhiteStarUML
- IDEA中安装使用Junit的插件。
实验一、二
- 课上完成前两个实验,知道了伪代码、产品代码和测试代码;TDD。伪代码与具体的编程语言无关,用来表明自己的编程思路。产品代码用Java语言编写,测试代码用来证明自己的代码是正确的。此外,程序员对类实现的测试叫单元测试。TDD是指先写测试代码,再写产品代码,测试驱动开发,防止无用代码的产生。
- 测试成功截图:
实验三
- 对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
用自己的学号%6进行取余运算,根据结果进行代码扩充,我的学号取余为2,顾为Boolean型。OCP的内容是类函数等应该对扩充开放,对修改封闭。 - 这个实验仿照Integer增添了boolean的;并仿照IntFactory增添了BooleanFactory。
- 测试成功截图:
实验四
- 以TDD的方式开发一个复数类Complex,要求如下: 定义属性并生成getter,setter ;double RealPart; double ImagePart;要求为:
// 定义属性:复数有实部和虚部 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)除法 public String toString()返回这个复数
- 按照所给要求,将其完善,测试成功截图:
实验五
- 使用WhiteStarUML对实验二中的代码进行建模。
- UML图简介:AnimalTest类依赖Dog类和Cat类,两者有公有方法color,shout。Document抽象类为父类,MyDoc类和Data类继承父类,父类依赖Factory类实现整型和布尔型。
- 完成结果如图:
4、实验中遇到的问题和解决过程
-
问题一:课上在做实验一的时候,明明代码是对的,可是结果总是出错,显示一串“不可映射字符”。
-
问题一解决:在询问了王老师之后,他说是汉化包的问题,有汉语出现时容易出错,没有解决办法,所以我就把汉语全部更改成英文,就解决了。之后,王老师给出了解决办法,就是在IDEA右下角显示UTF-8的地方换成GBK就可以了。
-
问题二:在安装插件Junit时,根据博客教程,但显示错误
-
问题二解决:使用另一种方法,选择图中的Manage repositories 处,由于当时大部分人都出错,当时根据王老师的讲解做好了。
-
问题三:在实验二中,StringBufferDemo里的代码中有个“assertequals”,不知道是什么意思。
-
问题三解决:在查找相关资料后得知,他的意思是‘’assertEquals([String message],expected,actual)如果预期值与真实值相等,则运行success,反之Failure。提示预期值是xxx,而实际值是xxx。容易调式。 参考
5、其他
感觉这次的任务要学习的很多,按照博客一步一步来是可以完成,但是并不代表我已经全部掌握,如果全部自己做在限定时间内有点难以实现。