20165214 实验二 Java面向对象程序设计
一、实验报告封面
课程:Java程序设计 班级:1652班 姓名:朱文远 学号:20165214
指导教师:娄嘉鹏 实验日期:2018年4月16日
实验时间:13:45 - 15:25 实验序号:二
实验名称:面向对象程序设计
实验目的与要求:
1、完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题以及分析。
2、实验报告中统计自己的PSP(Personal Software Process)时间;
3、掌握使用IDEA完成基础编程与程序调试的能力。
二、实验内容:
- 初步掌握单元测试和TDD
- 理解并掌握面向对象三要素:封装、继承、多态
- 初步掌握UML建模
- 熟悉S.O.L.I.D原则
- 了解设计模式
三、实验步骤
(一)单元测试
-
1、创建“Util”项目,在该项目下创建“Util”类,并输入代码:
-
2、创建test目录,点击类名,跳出灯泡。接着点击Creat Test在test目录下生成MyUtilTest类:
-
3、在MyUtilTest类中输入以下代码,分别对正常情况、边界情况以及错误情况进行测试:
-
4、运行结果错误,如图:
-
5、根据截图中的结果分析,原因是没有考虑分数不能低于0分而且分数可以等于100分。修改程序为:
-
6、再次运行MyUtilTest,得到“绿条”
(二)TDD
-
1、创建“TDDDemo”项目,在该项目下创建测试目录“test”,然后在“test”目录下生成一个测试用例类StringBufferTest:
-
2、为了测试StringBuffer的
charAt(int a)
,indexOf(String s)
,capacity()
,length()
,编写代码:
-
3、运行StringBufferTest,出现绿条,测试成功:
(三)测试用例的扩充
- 1、我的学号是14,14%6==2,所以我需要进行的扩充是让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确。
- 2、分析:根据抽象工厂模式,我需要在程序中新建两个类Bollean(继承Date类)、BolleanFactory(继承Factroy类)。编程并测试,如图:
(四)练习
-
1、需要分析:使用TDD的方式设计关实现复数类Complex。
-
2、创建“Complex”项目,在该项目下创建测试目录“test”,然后在“test”目录下生成一个测试用例类ComplexTest,输入测试代码,运行出现绿条:
-
3、PSP时间
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 5min | 7.1% |
设计 | 5min | 7.1% |
代码实现 | 30min | 42.9% |
测试 | 20min | 28.6% |
分析总结 | 10min | 14.3% |
- 4、码云链接
里面包括伪代码、产品代码、测试代码 - 5、单元测试的好处
单元测试我觉得是程序员在编程中除了API的又一大利器。它的方便之处在于你可以对每个类都进行单元测试,不断地检查错误、改正错误直到这个类能够满足我们的需求。这样一来就能够避免之前的写程序的时候,一编译错误就要“牵一发动全身”,花费我们很多时间去调错。
而且利用单元测试也会让我们的程序更有条理。
(五)本次实验程序UML图的制作
选取本次实验最复杂的应用——第三部分来制作UML图:
遇到的困难与解决
-
问题1:在创建单元测试的时候,除了TestCase是红色的,junit也是红色的。
-
问题1解决:先关掉软件重新打开,没有效果;然后鼠标移到junit,发现出现了个红色灯泡,想着随便点一点试试看,点了一下灯泡,然后选择了里面的一个Junit4,问题就解决了。
-
问题2:在测试StringBuffer类的时候,方法capacity所取得的容量值是怎么计算的?
-
问题2解决:StringBuffer类有三个构造方法,①StringBuffer(),此时获得的容量为默认值16,超出范围时会自动增加。②StringBuffer(int size),此时获得的容量就是参数size的大小。③StringBuffer(String s),此时获得的同理是s的长度再加上16.
由于本次实验过程老师都给了很详细的步骤,所以没有出现什么大的问题。
心得体会
经过本次实验内容较多,相应的收获也挺多的。首先,我比较熟练地掌握了Junit的用法。这是本周最大的一个收获,因为通过单元测试,能够加快我的编程速度,降低我的程序出错概率。而且在写单元测试的时候,不经意间就使得程序向着“高内聚低耦合”靠近了,具体因为什么也说不出来,我觉得可能是因为在写单元测试的时候比较注重于完善一个类的功能吧。另外,本周又得到了一个很方便的工具:WhiteStarUML,还学会了在WhiteStarUML中绘制UML图,这是一个很方便的工具,画出来的UML图简洁美观。