• 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的学习以后或许会更加辛苦更加累,但我也会坚持下去。

    参考资料

  • 相关阅读:
    20170421 F110 常见问题
    BAPI_ACC_DOCUMENT_POST 解决原因代码输入问题-利用BADI
    ABAP f4帮助输入多个值
    002 MIRO发票校验采购订单项目科目分配类别检查增强-20150819
    001infor record 计划时间取值增强-20150622
    003 F-47创建预付定金请求检查增强-20150819.docx
    整理开源协议问题 GPL APACHE
    拆我的跨界手环
    ThinkPHP 的一个神秘版本 ThinkPHP 1.2
    关于 Vue 方法前面的美元符号
  • 原文地址:https://www.cnblogs.com/dengziyan/p/13806990.html
Copyright © 2020-2023  润新知