zoukankan      html  css  js  c++  java
  • 201820192 20175216实验二《面向对象程序设计》实验报告

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

    实验内容

    1. 初步掌握单元测试和TDD
    2. 理解并掌握面向对象三要素:封装、继承、多态
    3. 初步掌握UML建模
    4. 熟悉S.O.L.I.D原则
    5. 了解设计模式

    实验步骤

    任务一
    (一)单元测试
    1、在 IDEA中我们把产品代码放在src目录中,把测试代码放在test目录中,右键单击项目,在弹出的菜单中选择New->Directory新建一个目录;
    2、test目录中放的也是Java代码,在弹出的菜单中选择Mark Directory as->Test Sources Root就可以了:
    (1) 三种代码
    伪代码

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

    产品代码

    public class MyUtil{
       public static String percentage2fivegrade(int grade){
           //如果成绩小于60,转成“不及格”
           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 "优秀";
           //其他,转成“错误”
           else 
               return "错误";
       }
    }
    

    测试代码
    1、正常情况测试:

        public class MyUtilTest {
            public static void main(String[] args) {
                 //测试正常情况
                 if(MyUtil.percentage2fivegrade(55) != "不及格")
                     System.out.println("test failed!");
                 else if(MyUtil.percentage2fivegrade(65) != "及格")
                     System.out.println("test failed!");
                 else if(MyUtil.percentage2fivegrade(75) != "中等")
                     System.out.println("test failed!");
                 else if(MyUtil.percentage2fivegrade(85) != "良好")
                     System.out.println("test failed!");
                 else if(MyUtil.percentage2fivegrade(95) != "优秀")
                     System.out.println("test failed!");
                 else 
                     System.out.println("test passed!");
             }
         }
    

    运行结果:
    java二--1_看图王.png

    2、50分测试:

        public class MyUtilTest {
        public static void main(String[] args) {
                // 百分制成绩是50时应该返回五级制的“不及格”
                if(MyUtil.percentage2fivegrade(50) != "不及格")
                    System.out.println("test failed!");
                else 
                    System.out.println("test passed!");
            }
        }
    

    运行结果:
    java二--2_看图王.png

    3、异常情况测试:

        public class MyUtilTest {
            public static void main(String[] args) {
                //测试出错情况
                if(MyUtil.percentage2fivegrade(-10) != "错误")
                    System.out.println("test failed 1!");
                else if(MyUtil.percentage2fivegrade(115) != "错误")
                    System.out.println("test failed 2!");
                else 
                    System.out.println("test passed!");
            }
        }   
    

    运行结果:
    java二--3_看图王.png

    4、增加判断负分的情况:

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

    运行结果:
    java二--4_看图王.png

    5、测试边界情况:

        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!"); 
            }
        }
    

    运行结果:
    java二--5_看图王.png

    6、增加100为优秀的情况:

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

    运行结果:
    java二--6_看图王.png

    学会 IDEA中配置单元测试工具JUnit
    下载并配置Junit
    1)IDEA中使用JUnit要安装插件,选择File->Setting打开设置对话框。
    2)在设置对话框中选择Plugins, 单击Install JetBrains plugin...按钮打开插件安装界面。
    3)在插件安装对话框的搜索中输入junit,单击JunitGenerator V2.0,单击右边绿色的Install1按钮安装。
    4)安装完之后重启idea。
    测试代码

    import junit.framework.TestCase;
    import org.junit.Test;
    
    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 testException(){
            assertEquals("错误",MyUtil.percentage2fivegrade(-55));
            assertEquals("错误",MyUtil.percentage2fivegrade(115));
        }
        @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));
        }
    
    }
    

    利用工具JUnit进行单元测试
    java实验1-2 2_看图王.png

    任务二
    以 TDD的方式研究学习StringBuffer

    java实验二--1 1_看图王.png

    任务三

    • 参考实验二 Java面向对象程序设计对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
    • 用自己的学号%6进行取余运算,根据结果进行代码扩充:
      0:让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      1:让系统支持Short类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      2:让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      3:让系统支持Long类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      4:让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      5:让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      学号16%6=4
      码云链接:https://gitee.com/besti20175216/20175216_snow_plains/blob/master/lianxi/shiyan/Mydoc.java
      运行结果
      java 实验二3--1_看图王.png
      任务三
      一、产品代码
      码云链接:https://gitee.com/besti20175216/20175216_snow_plains/blob/master/lianxi/shiyan/Complex.java

    二、测试代码
    码云链接:https://gitee.com/besti20175216/20175216_snow_plains/blob/master/lianxi/shiyan/ComplexTest.java

    java实验二4--4_看图王.png

    任务四
    使用WhiteStarUML对实验二中的代码进行建模,发类图的截图,加上学号水印。
    参考http://www.cnblogs.com/rocedu/p/6736847.html
    截图

    类图中只少两个类
    uml--_看图王.png

    问题:
    java二-1.PNG
    刚开始我以为是因为是设置好IDEA,后来发现是代码不对

    总结
    通过Java第二次实验,我学会了更多的知识,娄老师博客中提到的用程序解决问题时,要会写三种码:伪代码、产品代码、测试代码,这是一套比较完整的编码体系,通过这个完整的体系,就能满足客户的需求,写出更完整的代码。
    我学会了如何用junit去测试代码,用更有效地方法将产品代码改善,这是非常实用的一种方法,这会在以后的产品代码完善非常有帮助。

    步骤 耗时 百分比
    需求分析 10min 6.7%
    设计 25min 16.7%
    代码实现 30min 20%
    测试 60min 40%
    分析总结 25min 16.7%
  • 相关阅读:
    JS iframe给父类传值
    JS table分页
    JS 日历
    C# 创建文件夹
    post数据html数据获取危险处理办法
    SQL日期数据格式的处理
    sqlserver中计算结果保留小数
    页面元素的定位:getBoundingClientRect()和document.documentElement.scrollTop
    正则表达式 匹配中文,英文字母和数字及_的写法!同时控制长度
    GridPanel分页条插件
  • 原文地址:https://www.cnblogs.com/besti20175216/p/10733320.html
Copyright © 2011-2022 走看看