一、实验报告封面

课程: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 -------- 错误Attribute application@allowBackup value=(true) from AndroidManifest.xml

    开发中遇到一个问题,运行项目时,出现了一个这如下这样的问题 问题: Manifest merger failed : Attribute application@allowBackup value=( ...

  2. Anya and Cubes CodeForces - 525E (双端搜索)

    大意: 给定$n$元素序列$a$, 可以任选不超过$k$个$a_i$变换为$a_i!$, 求变换后任选若干元素和为S的方案数. 分成两块暴搜, 复杂度$O(3^{\frac{n}{2}})$ #inc ...

  3. leetcode_输入一个数组,目标树,检查目标是数组下标的哪两个之和,不准重复

    今天是leetcode第一天,但是不太顺利.做这些,想不到 原题目: 我给的答案: class Solution { public: vector<int> twoSum(vector&l ...

  4. Oracle 聚合函数

    聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 此处采用Oracle 11g中其他用户SCOTT中的EMP表,进行演示. –COUNT:统计行数量 COUNT(*)统计的是结果集的 ...

  5. php 字符编码转换

    <?php/** * Created by PhpStorm. * User: yxp * Date: 2016/11/8 * Time: 16:47 */ /** * 将非GBK字符集的编码转 ...

  6. sqlite3 删除数据

    cx = sqlite3.connect("c:/数据库地址") # 打开数据库cu = cx.cursor()# delete the rowcu.execute("d ...

  7. C语言实现哈夫曼编码(最小堆,二叉树)

    // 文件中有通过QT实现的界面#include <stdio.h> #include <stdlib.h> #include <string.h> typedef ...

  8. Python购物车

    product_list = [ ['Iphone',5888], ['Mac Air',8000], ['XiaoMi',19.9], ['coffee',30], ['Tesla',820000] ...

  9. 如何仅用递归函数和栈操作逆序一个栈——你要先用stack实现,再去改成递归——需要对递归理解很深刻才能写出来

    /** * 如何仅用递归函数和栈操作逆序一个栈 * 题目: * 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1. * 将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就 ...

  10. springboot程序构建一个docker镜像(十一)

    准备工作 环境: linux环境或mac,不要用windows jdk 8 maven 3.0 docker 对docker一无所知的看docker教程. 创建一个springboot工程 引入web ...