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 网站后台扫描脚本

    Python  网站后台扫描脚本 #!/usr/bin/python #coding=utf-8 import sys import urllib import time url = "ht ...

  2. C#使用AppDomain时的异常分析:Object ‘XXXX.rem’ has been disconnected or does not exist at the server.

    在使用C#的应用程序域的时候,碰到这么一个异常: System.Runtime.Remoting.RemotingException: Object ‘/76e7cd41_2cd2_4e89_9c03 ...

  3. Wow64(32位进程)注入DLL到64位进程

    转载自: https://blog.poxiao.me/p/wow64-process-inject-dll-into-x64-process/ 向其他进程注入DLL通常的做法是通过调用CreateR ...

  4. 集成学习(ensemble learning)

    集成学习,又称为“多分类器系统”(multi-classifier system).“基于委员会的学习”(committee-based learning)等.基本的想法是结合多个学习器,获得比单一学 ...

  5. redis 安装和配置

    准备条件:1>确保所安装的环境能够访问网络,2>环境中拥有gcc\g++.make.tar等工具3>以root身份登录安装过程:1>输入命令:wget http://downl ...

  6. leetCode83. 删除排序链表中的重复元素

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3-&g ...

  7. C++中字符串换行(如何拆分为多行)

    在C/C++语言中,可能我们要书写的一个字符串太长了,放在一行上影响代码的可读性.这时我们就需要多行书写了.   字符串多行书写有两种规则:  1. 在字符串换行处加一个反斜杠’\’,下一行前不能有空 ...

  8. lvs+keepalived+ipvsadm 完整搭建笔记

    原文:http://www.safecdn.cn/2018/12/lvs-keepalived-ipvsadm/ 1.环境介绍: 系统:centos 6.7 keepalived VIP1 :10.0 ...

  9. Maven 错误:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project appservice-common: Fatal error compiling: 无效的目标发行版: 1.8

    通过IDEA 提供的面板 执行package 或者 install 没有错误,但是cmd terminal 窗口就不行!出现: Maven 错误:Failed to execute goal org. ...

  10. abc

    无类型: 汇编弱类型.静态类型 : C/C++弱类型.动态类型检查: Perl/PHP强类型.静态类型检查 :Java/C#强类型.动态类型检查 :Python, Scheme静态显式类型 :Java ...