孙星

实验二《Java面向对象》实验报告

一、程序设计中临时变量的使用

import java.util.Arrays;
public class Array {
    public static void main(String[] args) {
        //定义一个数组
        int arr[] = {1,2,3,4,5,6,7,8};
        //打印原始数组的值
       for(int i:arr){
            System.out.print(i + " ");
        }
        System.out.println();
        // 删除上面数组中的5
        for(int i:arr){
            if(arr[i-1]==5)
                while (i < arr.length) {
                    arr[i - 1] = arr[i];
                   i++;
                }
        }
        arr[arr.length - 1]=0;
        //数组缩容
        // arr = Arrays.copyOf(arr, arr.length-1);
        //打印出 1 2 3 4 6 7 8 0


        for(int i:arr){

            System.out.print(i + " ");

        }

        System.out.println();
        // 添加代码再在4后面5
        for(int i:arr) {
            if (arr[i - 1] == 4) {
                int j = arr.length - 1;
                while (j > i ) {
                    arr[j] = arr[j - 1];
                    j--;
                }
                arr[i] = 5;
            }
        }
        //打印出 1 2 3 4 5 6 7 8
        for(int i:arr){
            System.out.print(i + " ");
        }
        System.out.println();
    }

}

二、参考单元测试提交最后三个测试用例都通过的截图,截图上要有画图加水印,输入自己的学号。

1.三种代码
伪代码:以简洁的自然语言表明设计步骤
产品代码:用以实现特定功能的程序或机器语言
测试代码:用以对产品代码进行测试的代码
21)伪代码

百分制转五分制:
如果成绩小于60,转成“不及格”
如果成绩在60与70之间,转成“及格”
如果成绩在70与80之间,转成“中等”
如果成绩在80与90之间,转成“良好”
如果成绩在90与100之间,转成“优秀”
其他,转成“错误”

2)产品代码

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 "错误";
   }
}

3)测试代码

public class MyUtilTest {
    public static void main(String[] args) {
        //测试边界情况
        if(MyUtil.percentage2fivegrade(0) != "不及格")
            System.out.println("test failed 1!");
        else if(MyUtil.percentage2fivegrade(60) != "及格")
            System.out.println("test failed 2!");
        else if(MyUtil.percentage2fivegrade(70) != "中等")
            System.out.println("test failed 3!");
        else if(MyUtil.percentage2fivegrade(80) != "良好")
            System.out.println("test failed 4!");
        else if(MyUtil.percentage2fivegrade(90) != "优秀")
            System.out.println("test failed 5!");
        else if(MyUtil.percentage2fivegrade(100) != "优秀")
            System.out.println("test failed 6!");
        else 
            System.out.println("test passed!"); 
    }
}

三、参考积极主动敲代码使用JUnit学习Java

以 TDD的方式研究学习StringBuffer,提交你的单元测试用例和测试通过的截图,截图要加上学号水印。
1.TDD的基本思路就是通过测试来推动整个开发的进行。而测试驱动开发技术并不只是单纯的测试工作。
需求向来就是软件开发过程中感觉最不好明确描述、易变的东西。这里说的需求不只是指用户的需求,还包括对代码的使用需求。很多开发人员最害怕的就是后期还要修改某个类或者函数的接口进行修改或者扩展,为什么会发生这样的事情就是因为这部分代码的使用需求没有很好的描述。测试驱动开发就是通过编写测试用例,先考虑代码的使用需求(包括功能、过程、接口等),而且这个描述是无二义的,可执行验证的。
通过编写这部分代码的测试用例,对其功能的分解、使用过程、接口都进行了设计。而且这种从使用角度对代码的设计通常更符合后期开发的需求。可测试的要求,对代码的内聚性的提高和复用都非常有益。因此测试驱动开发也是一种代码设计的过程。

/** 测试代码 测试驱动开发
import junit.framework.TestCase;
import org.junit.Before;
import org.junit.Test;
public class StringBufferDemo01Test extends TestCase {
    StringBuffer a = new StringBuffer("StringBuffer01");//测试14个字符串
    StringBuffer b = new StringBuffer("StringBuffer01StringBuffer01");//测试28个字符串
    StringBuffer c = new StringBuffer("StringBuffer01StringBuffer01StringBuffer01");//测试42个字符串
    @Test
    public void tsetcharAt() throws Exception{
        assertEquals('S',a.charAt(0));
        assertEquals('B',a.charAt(6));
        assertEquals('1',b.charAt(11));
    }
    @Test
    public void testcapacity() throws Exception{
        assertEquals(30,a.capacity());
        assertEquals(44,b.capacity());
        assertEquals(58,c.capacity());
    }
    @Test
    public void testlength() throws Exception{
        assertEquals(14,a.length());
        assertEquals(28,b.length());
        assertEquals(42,c.length());
    }
    @Test
    public void testindexOf() throws Exception{
        assertEquals(0,a.indexOf("Str"));
        assertEquals(12,b.indexOf("01"));
        assertEquals(8,c.indexOf("ff"));
    }
}

五、任务:以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)

六、使用StarUML对实验二中的代码进行建模,发类图的截图,加上学号水印。

posted on 2017-04-23 22:50  20169221孙星  阅读(875)  评论(1编辑  收藏  举报

导航