zoukankan      html  css  js  c++  java
  • 2018-2019-2 20175304实验二《Java面向对象程序设计》实验报告

    2018-2019-2 20175304实验二《Java面向对象程序设计》实验报告

    实验报告封面

    课程:Java程序设计 班级:1753班 姓名:刘朝尹 学号:20175304 成绩:

    指导教师:娄嘉鹏 实验日期:2019年4月19日
    实验时间:15:35 - 17:15

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

    实验内容:

    1 初步掌握单元测试和TDD

    2 理解并掌握面向对象三要素:封装、继承、多态

    3 初步掌握UML建模

    4 熟悉S.O.L.I.D原则

    5 了解设计模式

    实验要求:

    1 没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程;

    2 完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等);

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

    4 严禁抄袭。

    二、实验内容

    提交点一

    按照老师的教程的详细的指导,在与同学的讨论和帮助下。比较顺利地完成了要求的任务。
    1.MyUtil.java代码:

    public class MyUtil{
    public static String percentage2fivegrade(int grade){
    //如果成绩小于0,转成“错误”
    if ((grade < 0))
    return "错误";
    //如果成绩小于60,转成“不及格”
    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 "优秀";
    //如果成绩大于100,转成“错误”
    else
    return "错误";
    }
    }
    2.测试代码
    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 testExceptions() {
    assertEquals("错误",MyUtil.percentage2fivegrade(-80));
    assertEquals("错误",MyUtil.percentage2fivegrade(125));
    }
    @Test
    public void testBoundary() {
    assertEquals("不及格",MyUtil.percentage2fivegrade(0));
    assertEquals("及格",MyUtil.percentage2fivegrade(60));
    assertEquals("中等",MyUtil.percentage2fivegrade(70));
    assertEquals("良好",MyUtil.percentage2fivegrade(80));
    assertEquals("优秀",MyUtil.percentage2fivegrade(90));
    assertEquals("优秀",MyUtil.percentage2fivegrade(100));
    }
    }

    [码云链接]
    https://gitee.com/liuchaoyin/java-besti-is-20175304lcy/blob/fc0107773867a9c1f0d04b9347542777d2edd14a/src/exp2/point1/MyUtil.java

    提交点二

    使用TDD进行测试,首先要知道StringBuffer类中的测试内容都是什么意思。

    charAt(int i) 返回索引的i值,从0开始计数。

    capacity() string分配的储存容量
    indexOf(String s) 检索相关位置的字符串

    length() 字如其名,字符串的长度。
    代码如下:
    public class StringBufferDemo{
    StringBuffer buffer = new StringBuffer();
    public StringBufferDemo(StringBuffer buffer){
    this.buffer = buffer;
    }
    public Character charAt(int i){
    return buffer.charAt(i);
    }
    public int capacity(){
    return buffer.capacity();
    }
    public int length(){
    return buffer.length();
    }
    public int indexOf(String buf) {
    return buffer.indexOf(buf);
    }
    }

    实验截图如下。

    如图所示,四个测试都成功了。

    测试代码:
    import junit.framework.TestCase;

    public class StringBufferDemoTest extends TestCase {
    StringBuffer a=new StringBuffer("StringBuffer");
    StringBuffer b=new StringBuffer("StringBufferStringBuffer");
    StringBuffer c=new StringBuffer("StringBufferStringBufferStringBuffer");
    public void testCharAt() {
    assertEquals('S',a.charAt(0)
    );
    assertEquals('g',a.charAt(5)
    );
    assertEquals('r',a.charAt(11)
    );
    }

    public void testcapacity() {
        assertEquals(28, a.capacity()
        );
        assertEquals(40, b.capacity()
        );
        assertEquals(52, c.capacity()
        );
    }
    
    public void testLength() {
        assertEquals(12,a.length()
        );
        assertEquals(24,b.length()
        );
        assertEquals(36,c.length()
        );
    }
    
    public void testIndexOf() {
        assertEquals(0,a.indexOf("Str"));
        assertEquals(5,a.indexOf("gBu"));
        assertEquals(0,c.indexOf("Str"));
    }
    

    [码云链接]https://gitee.com/liuchaoyin/java-besti-is-20175304lcy/blob/fc0107773867a9c1f0d04b9347542777d2edd14a/src/exp2/point2/StringBufferDemo.java

    提交点三

    体会OCP原则和DIP原则的应用。
    根据老师提供的教程,成功的改为了Float要求。

    [码云链接]https://gitee.com/liuchaoyin/java-besti-is-20175304lcy/blob/fc0107773867a9c1f0d04b9347542777d2edd14a/src/exp2/point3/MyDoc.java

    提交点四

    使用TDD的方式设计关实现复数类Complex。

    // 定义属性并生成getter,setter
    double RealPart;
    double ImagePart;
    // 定义构造函数
    public Complex()
    public Complex(double R,double I)
    
    //Override Object
    public boolean equals(Object obj)
    public String toString()
    
    // 定义公有方法:加减乘除
    Complex ComplexAdd(Complex a)
    Complex ComplexSub(Complex a)
    Complex ComplexMulti(Complex a)
    Complex ComplexDiv(Complex a)
    

    测试代码运行成功截图如下

    [码云链接]https://gitee.com/liuchaoyin/java-besti-is-20175304lcy/blob/fc0107773867a9c1f0d04b9347542777d2edd14a/src/exp2/point4/Complex.java

    提交点五

    PSP表格

    步骤 耗时 百分比
    学习并设计 100min 50%
    代码实现 40min 20%
    截图、上传、博客 60min 30%

    学习感想

    JUnit确实是非常强大的测试工具,第一次使用觉得是自己找错误,让电脑跑正确。后来慢慢变成电脑帮我找出错误,让程序跑正确。但实验过程中还是遇到了不少问题,归根结底是对IDEA使用不熟悉导致。本次的实验任务难度明显提升,花费了我大量的时间来逐步完成。其实总共花的时间比PSP表中多得多,但是有效学习时间大致是我表格中所统计的(总共的时间其实有0.7天了)。以后效率还是需要提升,继续将IDEA这个工具用的更加得心应手。

  • 相关阅读:
    python学习第十一天 -- 函数式编程
    python学习第十天 -- 函数
    python学习第九天 -- 列表生产式
    python学习第八天 -- 迭代
    (转载)C# 编程 使用可空类型
    Func的介绍——c#封装的代理
    select SCOPE_IDENTITY()用法
    insert into 语句的三种写法
    面试感悟----一名3年工作经验的程序员应该具备的技能
    SQL中常用模糊查询的四种匹配模式&&正则表达式
  • 原文地址:https://www.cnblogs.com/lcyll/p/10732797.html
Copyright © 2011-2022 走看看