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

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

课程:《程序设计与数据结构》
班级: 1923
姓名: 邓子彦
学号:20192317
实验教师:王志强
实验日期:2020年10月9日
必修/选修: 必修

1.实验内容

下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html)。

  1. 初步掌握单元测试和TDD

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

  3. 初步掌握UML建模

  4. 完成蓝墨云上 (1)-(5)实验。

2. 实验过程及结果

码云链接:https://gitee.com/besti1923/feimao-has-no-legs.git

  • 第一个提交点
  • 产品代码
public class unittest {
    public static String percentage2fivegrade(int i) {
        if(i>=0 && i<60)
            return "不及格";
        else if (i>0 && i<70)
            return "及格";
        else if (i>0 && i<80)
            return "中等";
        else if (i>0 && i<90)
            return "良好";
        else if (i>0 && i<=100)
            return "优秀";
        else
        return "错误";
    }
}
  • 测试代码
import junit.framework.TestCase;
import org.junit.Test;
    public class unittestTest extends TestCase {
        @Test
        public void testNormal() {
            assertEquals("不及格", unittest.percentage2fivegrade(55));
            assertEquals("及格", unittest.percentage2fivegrade(65));
            assertEquals("中等", unittest.percentage2fivegrade(75));
            assertEquals("良好", unittest.percentage2fivegrade(85));
            assertEquals("优秀", unittest.percentage2fivegrade(95));
        }
        public void testWrong(){
            assertEquals("错误", unittest.percentage2fivegrade(105));
            assertEquals("错误", unittest.percentage2fivegrade(-5));
        }
        public void testEdge(){
            assertEquals("不及格", unittest.percentage2fivegrade(0));
            assertEquals("及格", unittest.percentage2fivegrade(60));
            assertEquals("中等", unittest.percentage2fivegrade(70));
            assertEquals("良好", unittest.percentage2fivegrade(80));
            assertEquals("优秀", unittest.percentage2fivegrade(90));
            assertEquals("优秀", unittest.percentage2fivegrade(100));
        }
    }
  • 实验截图

  • 第二个提交点

  • 实验代码

import org.junit.Test;
public class StringBufferExampleTest {
    StringBuffer a = new StringBuffer("Java");
    StringBuffer b = new StringBuffer("ILoveJava");
    StringBuffer c = new StringBuffer("IThinkJavaIsTheGoodestToolsInTheWorld");

    @Test
    public void testCharAt() throws Exception {
        assertEquals1('J', a.charAt(0));
        assertEquals1('a', a.charAt(1));
        assertEquals1('v', a.charAt(2));
    }

    @Test
    public void testCapacity() throws Exception {
        assertEquals2(16, a.capacity());
        assertEquals2(16, b.capacity());
        assertEquals2(37, c.capacity());
    }

    @Test
    public void testLength() throws Exception{
        assertEquals3(4, a.length());
        assertEquals3(9, b.length());
        assertEquals3(37, c.length());
    }
    @Test
    public void testIndexOf() throws Exception{
        assertEquals4(0, a.indexOf("Java"));
        assertEquals4(1, b.indexOf("Love"));
        assertEquals4(15, c.indexOf("Good"));
    }

    private void assertEquals1(int i, char charat) {
    }
    private void assertEquals2(int i, int capacity ) {
    }
    private void assertEquals3(int i, int length) {
    }
    private void assertEquals4(int i, int index) {
    }
}
  • 实验截图

  • 第三个提交点

  • 实验代码

abstract class Data {
    abstract public void DisplayValue();
}
class Double extends  Data {
    double value;
    Double() {
        value=17%6;
    }
    public void DisplayValue(){
        System.out.println (value);
    }
}
abstract class Factory {
    abstract public Data CreateDataObject();
}
class DoubletFactory extends Factory {
    public Data CreateDataObject(){
        return new Double();
    }
}
class Document {
    Data pd;
    Document(Factory pf){
        pd = pf.CreateDataObject();
    }
    public void DisplayData(){
        pd.DisplayValue();
    }
}
//测试代码
public class Test {
    static Document d;
    public static void main(String[] args) {
        d = new Document(new DoubletFactory());
        d.DisplayData();
    }
}
  • 实验截图

  • 第四个提交点

  • 实验代码

abstract class Factory {
    abstract public Data CreateDataObject();
}
class DoubletFactory extends Factory {
    public Data CreateDataObject(){
        return new Double();
    }
}
class Document {
    Data pd;
    Document(Factory pf){
        pd = pf.CreateDataObject();
    }
    public void DisplayData(){
        pd.DisplayValue();
    }
}
//测试代码
public class Test {
    static Document d;
    public static void main(String[] args) {
        d = new Document(new DoubletFactory());
        d.DisplayData();
    }
}
  • 实验截图

  • 第五个提交点

  • 实验截图

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

  • 问题1:刚开始做第一个提交点就的时候并不理解这个测试的原理,也不知道该怎么继续进行接下来的操作
  • 问题1解决方案:询问助教和反复仔细地研究实验流程地教程。经过一整天的研究,和询问身边的同学,理解了这个测试的目的和流程还有大概操作。
  • 问题2:做第三个提交点的时候并不知道实验的要求具体是什么意思,怎么样才能让系统支持Double类,而且这个提交点没有教程
  • 问题2解决方案:问问身边的同学都有些什么思路和经验,之后去博客园上搜索往届学长学姐们的博客,学习学习他们的思路,然后再跟宿舍里的同学们一起学习一起讨论,大致知道了多类这一概念
  • 问题3:刚开始想用旗舰版的IDEA直接生成类图,破解之后,生成的类图还是不完整,可能是程序的编写还不够规范
  • 问题3解决方案:下载了StarUML,自己画出了类图

其他(感悟、思考等)

  • 感悟思考:这一次的实验任务量很大,占了一整个周末的时间,但是我也感受到了学习的乐趣,也培养了我的耐心细致,一整个周末都在学习让我感受到以前都没有过的充实。Java的学习以后或许会更加辛苦更加累,但我也会坚持下去。

参考资料

原文地址:https://www.cnblogs.com/dengziyan/p/13806990.html