一、实验报告封面

课程: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. 【洛谷p1403 】【AHOI2005】约数研究

    (有种失踪人口回归的感觉) 约束研究[传送门] (不过好像没有人注意到我这个蒟蒻) 好的不管它啦 最近学数论比较多,所以可能会有好多好多的数论题???(不存在的) 行吧上算法标签: 数论   数论  ...

  2. Music in Car CodeForces - 746F (贪心,模拟)

    大意: n首歌, 第$i$首歌时间$t_i$, 播放完获得贡献$a_i$, 最多播放k分钟, 可以任选一首歌开始按顺序播放, 最多选w首歌半曲播放(花费时间上取整), 求贡献最大值. 挺简单的一个题, ...

  3. DFS CCPC2017 南宁I题

    The designers have come up with a new simple game called “Rake It In”. Two players, Alice and Bob, i ...

  4. python装饰器概念与应用

    格式一:装饰器外层不传参,内层传参 user_status = False # 用户登录了就把这个改成True def login(func): # 把要执行的henan模块从这里传进来 def in ...

  5. 详解 java socket

    一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...

  6. hashCode会出现负数吗,答案是肯定的

    先来普及一下基本数据类型的长度: unsigned   int   0-4294967295   int   -2147483648-2147483647 unsigned long 0-429496 ...

  7. Json:前台对象数组传到后台解析

    本文转自:http://blog.csdn.net/kymegg/article/details/50964581 方法:使用JsonArray进行解析 步骤: 一.引入一系列JAR包 要使程序便于解 ...

  8. ActiveMQ 消息的重新投递

    正常情况下:consumer 消费完消息后,会发送"标准确认"给 broker,这个确认对象以 MessageAck 类表征: // 省略其他代码.类中定义了各种确认的类型 pub ...

  9. Tomcat禁用SSLv3和RC4算法

    1.禁用SSLv3(SSL 3.0 POODLE攻击信息泄露漏洞(CVE-2014-3566)[原理扫描]) 编缉$CATALINA_HOEM/conf/server.xml配置文件,找到https端 ...

  10. openssl安装/更新教程(CentOS)

    1.下载openssl 下载链接:https://www.openssl.org/source/snapshot/ 里边是当前仍支持版本的快照:同版本不同日期内容可能不同的,所以下载一般下对应版本的最 ...