博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20135333苏正生实验二实验报告
阅读量:5485 次
发布时间:2019-06-16

本文共 3780 字,大约阅读时间需要 12 分钟。

实验报告

课程:

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 总结

时间

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

单元测试的好处:

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

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

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

 

20135333苏正生

2015年5月7日  

转载于:https://www.cnblogs.com/suzhengsheng/p/4485460.html

你可能感兴趣的文章
hduoj1091A+B for Input-Output Practice (III)
查看>>
数据批量导入Oracle数据库
查看>>
C#开源项目介绍
查看>>
调用lumisoft组件发邮件 不需要身份验证 不需要密码
查看>>
DW 正则
查看>>
【ios6.0 自学瞎折腾】(三)表示图填充数据
查看>>
清理(委托类型实例)事件处理(实例)的函数及Lambda表达式
查看>>
Create UML diagrams online in seconds, no special tools needed.yUML
查看>>
Java中的反射机制(四) 利用反射访问私有
查看>>
抓屏原理
查看>>
Crash/Instance Recovery与Media Recovery的本质区别
查看>>
【组成原理】——运算器
查看>>
ASP.NET Dynamic Data Part.2(自定义动态数据网站)
查看>>
《Effective Java》读书笔记09--谨慎地覆盖clone方法
查看>>
AMF Message 及 AMF3 OBJECT 对象格式
查看>>
类对象Java设计模式之十八(中介者模式)
查看>>
Qt 写文件失败
查看>>
Gridview控件导出Excel之后图片无法显示
查看>>
FastJson
查看>>
[置顶] 小本求职了---实习岗位
查看>>