20192303 2020-2021-1 《数据结构与面向对象程序设计》实验三报告

20192303 2020-2021-1 《数据结构与面向对象程序设计》实验三报告

课程:《数据结构与面向对象程序设计》
班级:1923
姓名:杨佳宁
学号:20192303
实验教师:王志强
实验日期:2020年10月8日
必修/选修:必修

1、实验内容

下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html)。
(1)初步掌握单元测试和TDD
(2)理解并掌握面向对象三要素:封装、继承、多态
(3)初步掌握UML建模
(4)完成蓝墨云上 (1)-(5)实验。

2、实验过程及结果

(1)实验3-1
产品代码:

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

测试代码:

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(105));
        assertEquals("错误", MyUtil.percentage2fivegrade(-55));
    }

    @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));
    }
}

运行结果截图:

(2)实验3-2
产品代码:

public class StringBufferDemo {
    public static void main(String[] args){
        StringBuffer buffer = new StringBuffer();
        buffer.append('s');
        buffer.append("tringBuffer");
        System.out.println(buffer.charAt(1));
        System.out.println(buffer.indexOf("tring12345"));
        System.out.println("buffer = " + buffer.toString());
        System.out.println(buffer.length());
    }
}

测试代码:

import junit.framework.TestCase;
import org.junit.Test;

public class StringBufferDemoTest extends TestCase {
        StringBuffer a = new StringBuffer("StringBuffer");
        StringBuffer b = new StringBuffer("StringBufferStringBuffer");
        StringBuffer c = new StringBuffer("StringBufferStringBufferStringBuffer");

        @Test
        public void testcharAt() throws Exception{
            assertEquals('t',a.charAt(1));
            assertEquals('B',a.charAt(6));
            assertEquals('r',a.charAt(2));
        }

        @Test
        public void testcapacity() throws Exception{
            assertEquals(28,a.capacity());
            assertEquals(40,b.capacity());
            assertEquals(52,c.capacity());
        }

        @Test
        public void testlength() throws Exception{
            assertEquals(12,a.length());
            assertEquals(24,b.length());
            assertEquals(36,c.length());
        }

        @Test
        public void testindexOf() throws Exception{
            assertEquals(0,a.indexOf("Str"));
            assertEquals(5,a.indexOf("gBu"));
            assertEquals(1,c.indexOf("tri"));
        }
        @Test
        public void testtoString() throws Exception{
            assertEquals("StringBuffer",a.toString());
            assertEquals("StringBufferStringBuffer",b.toString());
            assertEquals("StringBufferStringBufferStringBuffer",c.toString());
        }




    }

运行截图:

(3)实验3-3

import java.util.Objects;

abstract class Data {
    abstract public void DisplayValue();
}
class Integer extends Data {
    int value;
    Integer(){
        value = 100;
    }
    public void DisplayValue(){
        System.out.println(value);
    }
}

class Long extends Data{
    long value;
    Long(){
        value=20192303;
    }
    public void DisplayValue(){
        System.out.println(value);
    }
}

abstract class Factory{
    abstract public Data CreateDataObject();
}
class IntFactory extends Factory {
    public Data CreateDataObject(){
        return new Integer();
    }
}

class LongFactory extends Factory{
    public Data CreateDataObject(){
        return new Long();
    }
}
class Document {
    Data pd;
    Document(Factory pf){
        pd=pf.CreateDataObject();
    }
    public void DisplayData(){
        pd.DisplayValue();
    }
}
public class MyDoc {
    static Document i;
    static Document k;
    public static void main(String[] args){
        i=new Document(new IntFactory());
        i.DisplayData();
        k=new Document(new LongFactory());
        k.DisplayData();
    }
}

运行截图:


(4)实验3-4
产品代码:

public class Complex {
    double RealPart;
    double ImagePart;
    public Complex(double RealPart,double ImagePart){
        this.RealPart=RealPart;
        this.ImagePart=ImagePart;
    }
    public static double getRealPart(double RealPart){
        return RealPart;
    }
    public double getImagePart(double ImagePart){
        return ImagePart;
    }
    public Complex ComplexAdd(Complex a){
        return new Complex(RealPart+a.RealPart,ImagePart+a.ImagePart);
    }
    public Complex ComplexSub(Complex a){
        return new Complex(RealPart-a.RealPart,ImagePart-a.ImagePart);
    }
    public Complex ComplexMulti(Complex a){
        return new Complex(RealPart*a.RealPart-ImagePart*a.ImagePart,ImagePart*a.RealPart+RealPart*a.ImagePart);
    }
    public Complex ComplexDiv(Complex a){
        return new Complex((RealPart*a.RealPart+ImagePart*a.ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart),(ImagePart*a.ImagePart-RealPart*a.RealPart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart));
    }
    public String toString(){
        String s=" ";
        if(ImagePart>0)
            s=RealPart+"+"+ImagePart+"i";
        if(ImagePart==0)
            s=RealPart+" ";
        if(ImagePart<0)
            s=RealPart+" "+ImagePart+"i";
        return s;

    }

}

测试代码:

import junit.framework.TestCase;
import org.junit.Test;
import static org.junit.Assert.*;

public class ComplexTest extends TestCase {
    Complex i1 = new Complex(3,2);
    Complex i2 = new Complex(1,1);
    Complex i3 = new Complex(5,6);
    @Test
    public void testComplexAdd() throws Exception{
        assertEquals("4.0+3.0i",i1.ComplexAdd(i2).toString());
        assertEquals("6.0+7.0i",i2.ComplexAdd(i3).toString());
        assertEquals("8.0+8.0i",i1.ComplexAdd(i3).toString());
    }
    @Test
    public void testComplexSub() throws Exception{
        assertEquals("2.0+1.0i",i1.ComplexSub(i2).toString());
        assertEquals("-2.0 -4.0i",i1.ComplexSub(i3).toString());
        assertEquals("-4.0 -5.0i",i2.ComplexSub(i3).toString());
    }

    @Test
    public void testComplexMulti() throws Exception{
        assertEquals("1.0+5.0i",i1.ComplexMulti(i2).toString());
        assertEquals("-1.0+11.0i",i2.ComplexMulti(i3).toString());
    }

    @Test
    public void testComplexDiv() throws  Exception{
        assertEquals("5.5+0.5i",i3.ComplexDiv(i2).toString());
        assertEquals("2.5 -0.5i",i1.ComplexDiv(i2).toString());
    }


}




(5)实验3-5

3、实验中遇到的问题和解决过程

问题1:找不到jar包
问题1解决方案:通过查询博客安装了“junit-4.12.jar”得到解决

3、其他(感悟、思考等)

这次的实验有些难,用了较长的时间去完成。在今后的学习过程中,应提高自学能力同时做好预习工作。

4、参考资料

https://book.douban.com/subject/26851579/
https://www.cnblogs.com/rocedu/p/5182332.html

posted @ 2020-10-14 18:08  20192303杨佳宁  阅读(101)  评论(0编辑  收藏  举报