zoukankan      html  css  js  c++  java
  • 20135333苏正生实验二实验报告

    实验报告

    课程:

    Java程序设计

    班级:

    1353

    姓名:

    苏正生

    学号:

    2015333

    成绩:

     

    指导教师:

    娄家鹏

    实验日期:

    2015.5.6

    实验密级:

     

    预习程度:

     

    实验时间:

    3:20~5:00

    仪器组次:

     

    必修/选修:

    必修

    实验序号:

    实验二

    实验名称:

    Java面向对象程序设计

    实验目的:

    1.掌握单元测试和TDD

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

    3. 初步掌握UML建模

    4. 熟悉S.O.L.I.D原则

    5. 了解设计模式

     

    实验仪器:

     

    名称

    型号

    数量

    笔记本电脑

     

     

    Msi GS70

     

     

     

    1

                         

     

    实验内容:

    一、     单元测试和TDD

     

     

    源代码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 "错误";

       }

    }

    源代码2:

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

        }

    }

    二、     面向对象三要素

    (1)抽象(2)封装、继承与多态

    实验记录:

     

    实验代码1:

    public class AnimalTest {

             public static void main(String[]args){

                       Dog d=new Dog();

                       d.setColor("Yellow");

                       getInfo(d);

                      

                       Cat c=new Cat();

                       c.setColor("Black");

                       getInfo(c);

             }

             public static void getInfo(Dog d){

                       System.out.println(d.toString());

             }

             public static void getInfo(Cat c){

                       System.out.println(c.toString());

             }

    }

    实验代码2:

    package dog;

    public class DogTest {

             public static void main(String[] args){

                       Dog g=new Dog();

                       g.setColor("Yellow");

                       getInfo();

             }

    public static void getInfo(Dog d){

             System.out.println(d.toString());

    }

    }

    实验代码3:

    public abstract class Animal {

        private String color;

        public String getColor() {

            return color;

        }

        public void setColor(String color) {

            this.color = color;

        }

        public abstract String shout();

    }

    public class Dog extends Animal{

        public String shout(){

            return "汪汪";

        }

           public String toString(){

            return "The Dog's color is " + this.getColor() +", and it shouts "+ this.shout() + "!";

        }

    }

    public class Cat extends Animal{

        public String shout(){

            return "喵喵";

        }

        public String toString(){

            return "The Cat's color is " + this.getColor() +", and it shouts "+ this.shout() + "!";

        }

    }

    三、设计模式初步

    设计模式(design pattern)提供一个用于细化软件系统的子系统或组件,或它们之间的关系图,它描述通信组件的公共再现结构,通信组件可以解决特定语境中的一个设计问题。

    实验过程:

     

    实验代码:

    // Server Classes 
    abstract class Data { 
        abstract public void DisplayValue(); 
    }
    class Integer extends  Data {    
        int value; 
        Integer() {
             value=100; 
        }  
        public void DisplayValue(){
            System.out.println (value);
        } 
     } 
    // Pattern Classes 
    abstract class Factory { 
       abstract public Data CreateDataObject(); 
    }
    class IntFactory extends Factory { 
       public Data CreateDataObject(){
            return new Integer(); 
       } 
    } 
    //Client classes 
    class Document {    
        Data pd; 
        Document(Factory pf){ 
           pd = pf.CreateDataObject(); 
        } 
        public void DisplayData(){
           pd.DisplayValue(); 
       } 
     } 
     //Test class
     public class MyDoc {
        static Document d;
        public static void main(String[] args) {
                d = new Document(new IntFactory()); 
                d.DisplayData(); 
        }    
    }
    四.使用TDD的方式设计并实现复数类Complex

    总结

    PSP(Personal Software Process)时间

    步骤 耗时 百分比
    需求分析 15分钟 5.5%
    设计   15分钟 5.5%
    代码实现 90分钟 33.3%
    测试 120分钟 44.4%
    分析总结 30分钟 12%

    单元测试的好处:

    “软件的很多错误都来源于程序员对模块功能的误解、疏忽或不了解模块的变化。如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证?单元测试就是一个很有效的解决方案。”

    没错,通过单元测试,不仅可以完善自己的编程逻辑和细节,而且对于代码的完善性和可靠性有了更好的提高。特别是编程过程中,代码模块和测试模块共同成长起来的过程,让整个编程更有逻辑性和严密性。

    总结:本次实验,从单元测试,工程——包——类,封装、继承、接口等多方面对java编程能力进行了提高,不仅对于相关软件有了全新的认识,而且对于自己的编程习惯有了更好的优化。虽然从实验楼转战windows平台,再通过虚拟机最终完成,耗时有点过长,但是在编程能力的提高的同时,也锻炼了自己的耐性和韧劲。实验过程中,和老师、同学交流,也对于java有了新的认识。

    20135333苏正生

    2015年5月7日  

  • 相关阅读:
    WebView中实现文件下载功能
    PrograssBar的setIndeterminateDrawable不起作用
    62个Android Studio小技巧合集
    Touch 事件的分发和消费机制
    AndroidStudio
    pagefile.sys and heberfil.sys
    android ANR产生原因和解决办法
    JAVA中分为基本数据类型及引用数据类型
    handler
    洛谷 P2709 小B的询问
  • 原文地址:https://www.cnblogs.com/suzhengsheng/p/4485460.html
Copyright © 2011-2022 走看看