一、实验报告封面

课程:Java程序设计 班级:1652班 姓名:朱文远 学号:20165214

指导教师:娄嘉鹏 实验日期:2018年4月16日

实验时间:13:45 - 15:25 实验序号:二

实验名称:面向对象程序设计

实验目的与要求:
1、完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题以及分析。
2、实验报告中统计自己的PSP(Personal Software Process)时间;
3、掌握使用IDEA完成基础编程与程序调试的能力。

二、实验内容:

  1. 初步掌握单元测试和TDD
  2. 理解并掌握面向对象三要素:封装、继承、多态
  3. 初步掌握UML建模
  4. 熟悉S.O.L.I.D原则
  5. 了解设计模式

三、实验步骤

(一)单元测试

  • 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图简洁美观。

20165214 实验二 Java面向对象程序设计的更多相关文章

  1. 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  2. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  3. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  4. 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告

    20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...

  5. 20145113 实验二 Java面向对象程序设计

    20145113 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 1.初 ...

  6. JAVA课程实验报告 实验二 Java面向对象程序设计

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  7. 20145225唐振远 实验二 "Java面向对象程序设计"

    20145225<Java程序设计> 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...

  8. 20145208 实验二 Java面向对象程序设计

    20145208 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  9. 20162311 实验二 Java面向对象程序设计 实验报告

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

随机推荐

  1. android--------自定义控件 之 基本流程篇

    在我们平常的Android开发中经常和控件打交道,有时Android提供的控件未必能满足业务的需求,这个时候就需要我们实现自定义一些控件 自定义控件可以设计出很多你想要的功能和模块,在开发中是很重要的 ...

  2. Confluence 6 如何保持我空间的整洁

    如果你有很多用户在同一个空间中编辑和创建内容,你的空间将会很快的变得混乱不堪.你可以使用下面的一些步骤来避免这个的发生. 创建一系列的指南 让你的合作编辑用户知道创建页面的上级页面是什么,这样可以保证 ...

  3. python记录_day18 反射 判断函数与方法

    一.三个内置函数 1.issubclass(a, b)  判断a类是否是b类的子类 class Foo: pass class Zi(Foo): pass class Sun(Zi): pass pr ...

  4. SQLServer清空表

    TRUNCATE TABLE TABLE_NAME 这个不记日志. delete table table_name 这个记日志 drop table table_name 删除表 TRUNCATE 语 ...

  5. jqgrid取所有行的值,jqgrid取行对应列(name)的值,jqgrid取多行值对应列转json的方法

    1.jqgrid取所有行的值(#gridTable指对应table的ID) var obj = $("#gridTable").jqGrid("getRowData&qu ...

  6. [LightOJ 1287] Where to Run

    Where to Run Last night you robbed a bank but couldn't escape and when you just got outside today, t ...

  7. Windows和Linux创建软链接和硬链接

    1.Wondows创建软链接和硬链接 mklink [/d] [/h] link target /d--创建目录软链接:默认为文件软链接:创建目录链接时必须使用该选项不然创出的软链接无效 /h--创建 ...

  8. mac navicate破解版汉化

    https://pan.baidu.com/s/1dRoalG8lZ-AMGmZrj8OhpQ 提取密码:e8ad 安装完navicate之后解压zh-Hans.zip 点击Resources文件夹 ...

  9. 基于iscroll的better-scroll在vue中的使用

    什么是 better-scroll better-scroll 是一个移动端滚动的解决方案,它是基于 iscroll 的重写,它和 iscroll 的主要区别在这里.better-scroll 也很强 ...

  10. zookeeper:shell操作以及可视化工具的使用

    1.zkcli.sh基本使用 1-1 查看节点 进入zk的bin目录下执行./zkCli.sh ls命令可以查看节点,/zookeeper/quota是默认的节点 1-2新增节点 create key ...