20175314 实验一 Java开发环境的熟悉

一、实验内容

  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类中输入以下代码,分别对正常情况、边界情况以及错误情况进行测试运行,得到“绿条”
    20175314 实验二 Java面向对象程序设计 随笔 第1张

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
  • 创建“TDDDemo”项目,在该项目下创建测试目录“test”,然后在“test”目录下生成一个测试用例类StringBufferTest:

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

  • 运行StringBufferTest,出现绿条,测试成功:
    20175314 实验二 Java面向对象程序设计 随笔 第2张

(三)测试用例的扩充

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

三、遇到的问题

关于最后的练习,我开始没有注意到要求“m,n从命令行输入”,所以最早使用的是Scanner语句进行参数输入,后来对代码进行了修改,利用Integer.parseInt(args[ ])语句在终端java的时候一起输入参数。
修改前:

        import java.util.*;
        ...
        System.out.println("请输入总数n");//输入总的个数
        Scanner a = new Scanner(System.in);
        int n = a.nextInt();
        System.out.println("请输入个数m");//输入要选的个数
        Scanner b = new Scanner(System.in);
        int m = b.nextInt();

修改后:

        int n,m;
        n = Integer.parseInt(args[0]);
        m = Integer.parseInt(args[1]);

由上可得:命令行输入可以简化代码...(目前发现的唯一优势)

四、感想与收获

本次实验我的题目考察递归算法,一开始不会命令行输入,后来请教同学学习了命令行输入,所以我决定在Ubentu上的测试使用新代码进行命令行输入,在IDEA上的测试使用原代码是非命令行输入。
平时Java的学习过程都是照着书上敲代码,这次实验的练习题,才能算得上是真正意义上自己设计一个Java程序。这次练习应用了很多方面的知识内容,目前所学的内容都基本用上了,巩固了以前的知识,也学会了将各个模块的知识结合在一起,虽然花的时间很多,跨度很长(断断续续地做了一周才完成),但是收获也很大。要想学好Java,一定要多练习代码。这里的练习指的不是照搬照抄,而是找一些简单的程序项目来自己进行设计练习。
使用IDEA让我找回了过去学习C语言使用Dev-C++时编译运行的快捷和调试的便捷的感觉,虽然已经习惯使用了Ubentu编写Java程序,但我还是会在以后更多的尝试使用IDEA以做好未来Android开发实验的准备。
做完本实验马上就要开始着手结对学习的任务,希望能很快从中发现结对学习的优越性。

五、码云链接

六、Personal Software Process时间

步骤 耗时 百分比
需求分析 10 5%
设计 30 17%
代码实现 80 44%
测试 30 17%
分析总结 30 17%

七、参考资料

StarUML使用说明-指导手册

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄