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

一、实验报告封面

课程:Java程序设计 班级:1753班 姓名:薛勐 学号:20175314

指导教师:娄嘉鹏 实验日期:2019年4月12日

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

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

实验目的与要求:

1、完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题以及分析。

2、实验报告中统计自己的PSP(Personal Software Process)时间;

3、掌握使用IDEA完成基础编程与程序调试的能力。

二、实验内容

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

三、实验步骤

(一)单元测试

  • 创建“Util”项目,在该项目下创建“Util”类,并输入代码:
public class MyUtil{
public static String percentage2fivegrade(int grade){
//如果成绩小于60,转成“不及格”
if (grade < 0)
return "错误";
else if (grade < 60)
return "不及格";
//如果成绩在60与70之间,转成“及格”
else if (grade < 70)
return "及格";
//如果成绩在70与80之间,转成“中等”
else if (grade < 80)
return "中等";
//如果成绩在80与90之间,转成“良好”
else if (grade < 90)
return "良好";
//如果成绩在90与100之间,转成“优秀”
else if (grade <=100)
return "优秀";
//其他,转成“错误”
else
return "错误";
}
}
  • 创建test目录,点击类名,跳出灯泡。接着点击Creat Test在test目录下生成MyUtilTest类:
import org.junit.Test;
import junit.framework.TestCase;
public class MyUtilTest extends TestCase {
@Test
public void testNormal() {
assertEquals("不及格", MyUtil.percentage2fivegrade(55));
assertEquals("及格", MyUtil.percentage2fivegrade(65));
assertEquals("中等", MyUtil.percentage2fivegrade(75));
assertEquals("良好", MyUtil.percentage2fivegrade(85));
assertEquals("优秀", MyUtil.percentage2fivegrade(95));
}
@Test
public void testBoundary() {
assertEquals("错误", MyUtil.percentage2fivegrade(-1));
assertEquals("错误", MyUtil.percentage2fivegrade(101));
}
@Test
public void testException() {
assertEquals("不及格", MyUtil.percentage2fivegrade(0));
assertEquals("及格", MyUtil.percentage2fivegrade(60));
assertEquals("中等", MyUtil.percentage2fivegrade(70));
assertEquals("良好", MyUtil.percentage2fivegrade(80));
assertEquals("优秀", MyUtil.percentage2fivegrade(90));
assertEquals("优秀", MyUtil.percentage2fivegrade(100));
}
}
  • 在MyUtilTest类中输入以下代码,分别对正常情况、边界情况以及错误情况进行测试运行,得到“绿条”

(二)IDEA下Java程序开发、调试

  • 创建“TDDDemo”项目,在该项目下创建测试目录“test”,然后在“test”目录下生成一个测试用例类StringBufferTest:

  • 为了测试StringBuffer的charAt(int a),indexOf(String s),capacity(),length(),编写代码:

  • 运行StringBufferTest,出现绿条,测试成功:

(三)测试用例的扩充

  • 我的学号是14,14%6==2,所以我需要进行的扩充是让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确。
  • 分析:根据抽象工厂模式,我需要在程序中新建两个类Bollean(继承Date类)、BolleanFactory(继承Factroy类),编程并测试:

(四)练习

  • 需要分析:使用TDD的方式设计关实现复数类Complex。
  • 创建“Complex”项目,在该项目下创建测试目录“test”,然后在“test”目录下生成一个测试用例类ComplexTest,输入测试代码,运行出现绿条:

四、遇到的问题

  • 一开始找不到junit工具包,后来通过在网上查找到许多不同的方法,最终选择了下面这种方法并成功:

    点击 File -> Project Structure(快捷键 Ctrl + Alt + Shift + s),点击Project Structure界面左侧的“Libraries”,点击右边 “+”号,选择第一个选项“Java”,找到IDEA的根目录中的lib选择junit.jar,点“OK”,jar包添加成功,如图所示:

  • 遵循实验二 Java面向对象程序设计百分制转五分制的步骤测试正常情况异常情况和边界情况时,根据客观事实,对低于0分的情况转成“错误”,添加100分的情况到小于100分的情况里成为“成绩在90与100之间(包含100)转成‘优秀’”条件改为
           return "优秀";
  • 在用WhiteStarUML绘制UML类图时不知道怎么添加空心箭头的线。

五、UML类图

测试用例的扩充

六、感想与收获

经过本次实验内容很多多,相应的收获也多。

首先,较为熟练地掌握了Junit的用法。这是本周最大的一个收获,因为通过单元测试,能够降低程序出错概率、提高编程效率。通过实验二,我也更能理解“高内聚低耦合”,高内聚提供了更好的可维护性和可复用性,低耦合可以满足一般性的需求。





其次是本周大致学会了如何使用WhiteStarUML绘制UML图,不同于之前用Word的插入图形功能,这是一个比较方便但不容易上手的工具,画出来的UML图看上去有很强的专业性和逻辑性,这个软件还有其他实用的功能比如绘制用例图,期待以后能够熟练掌握这个软件的所有功能,但在本次实验中我最终选择使用WPS的流程图中绘制UML类图功能,这是目前我所知道的最方便的工具而且绘制图简洁明了、美观大方,所以我可能会在后续学习中继续选择这一方式。

七、码云链接

八、Personal Software Process时间

步骤 耗时 百分比
需求分析 20 9%
设计 40 18%
代码实现 100 45%
测试 30 14%
分析总结 30 14%

九、参考资料

StarUML使用说明-指导手册

20175314 实验二 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. python爬虫学习笔记(二)——基础篇之爬虫基本原理

    1.什么是爬虫? 请求网站并提取数据的自动化程序 2.爬虫基本流程 2.1发起请求 通过HTTP库向目标站点发起请求,即发起一个Request,请求可以包含额外的headers等信息,等待服务器响应: ...

  2. 简单快速的Android打渠道包的方法

         APK其实就是ZIP的格式,所以,解压apk后,会看到里面有个META-INF目录.   思路:由于META-INF目录并不会影响到APK的签名和运行,所以我们可以在META-INF目录里添 ...

  3. spring面向接口编程

    (1)创建一个接口 package com.min.dao; public interface UserDao { public void save(String uname, String pwd) ...

  4. 数据库新增“自动添加”类字段 auto_now_add 如何不影响之前数据

    django 中的模版为例:time = models.DateTimeField('创建时间', auto_now_add=True)这样显然是不行的.那么.我们可以考虑先给前面数据一个默认值迁移一 ...

  5. css中的定位属性

  6. DeprecationWarning

    当我在导入sklearn这个库的时候,程序抛出了一个丢弃警告,它的意思是在版本更新后imp库已经不用了,用importlib来代替这个库 Warning (from warnings module): ...

  7. CUDA编程模型——组织并行线程3 (2D grid 1D block)

    当使用一个包含一维块的二维网格时,每个线程都只关注一个数据元素并且网格的第二个维数等于ny,如下图所示: 这可以看作是含有二维块的二维网格的特殊情况,其中块儿的第二个维数是1.因此,从块儿和线程索引到 ...

  8. How does the compilation and linking process work?

    The compilation of a C++ program involves three steps: Preprocessing: the preprocessor takes a C++ s ...

  9. python标签值标准化到[0-(#class-1)]

    python 处理标签常常需要将一组标签映射到一组数字,数字还要求连续. 比如 ['a', 'b', 'c', 'a', 'a', 'b', 'c'] ==(a->0, b->1, c-& ...

  10. 【机器学习_11】基础算法:KNN

    一.概述 1.方向 2.一句话概述 3.优缺点 4.应用场景举例 二.理论 三.案例理解