《Java程序设计》实验2实验报告

20145318 《Java程序设计》实验2

实验内容

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

S.O.L.I.D原则

SRP(Single Responsibility Principle,单一职责原则)
OCP(Open-Closed Principle,开放-封闭原则)
LSP(替换原则)
ISP(接口分离原则)
DIP(依赖倒置原则)

代码

运行

public class Grade{
public static String grade(int grade)
{
    if (grade < 60) 
        return "不及格";
    else if (grade < 70)
        return "及格";
    else if (grade < 80)
        return "中等";
    else if (grade < 90)
        return "良好";
    else if (grade < 100)
        return "优秀";
    else
        return "错误";
}
}

测试

public class Grade {
public static void main(String[] args) {
if(Grade.grade(50) != "不及格")
    System.out.println("test failed!");
else 
    System.out.println("test passed!");
}
}

修正

   public class Grade{
   public static String grade(int grade){
   if ((grade < 0))
       return "错误";
   else if (grade < 60)
       return "不及格";
   else if (grade < 70)
       return "及格";
   else if (grade < 80)
       return "中等";
   else if (grade < 90)
       return "良好";
   else if (grade < 100)
       return "优秀";
   else
       return "错误";
 }
}

边界测试

public class Grade{
public static void main(String[] args) {
    if(Grade.grade(0) != "不及格")
        System.out.println("test failed 1!");
    else if(Grade.grade(60) != "及格")
        System.out.println("test failed 2!");
    else if(Grade.grade(70) != "中等")
        System.out.println("test failed 3!");
    else if(Grade.grade(80) != "良好")
        System.out.println("test failed 4!");
    else if(Grade.grade(90) != "优秀")
        System.out.println("test failed 5!");
    else if(Grade.grade(100) != "优秀")
        System.out.println("test failed 6!");
    else
        System.out.println("test passed!");
}
}

TDD(测试驱动开发)


TDD的一般步骤如下:

  • 明确当前要完成的功能,记录成一个测试列表
  • 快速完成编写针对此功能的测试用例
  • 测试代码编译不通过(没产品代码呢)
  • 编写产品代码
  • 测试通过
  • 对代码进行重构,并保证测试通过(重构下次实验练习)
  • 循环完成所有功能的开发

TDD的编码节奏是:

  • 增加测试代码,JUnit出现红条
  • 修改产品代码
  • JUnit出现绿条,任务完成

面向对象三要素

抽象###

  • 在描述问题解时,使用面向问题和面向实现的术语。
  • 程序设计中,抽象包括两个方面,一是过程抽象,二是数据抽象。

封装、继承与多态

  • 封装就是将数据与相关行为包装在一起以实现信息就隐藏,Java中用类进行封装。
  • 继承指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用。
  • 以封装为基础,继承可以实现代码复用,需要注意的是,继承更重要的作用是实现多态。
  • Java中,多态是指不同的类对象调用同一个签名的成员方法时将执行不同代码的现象。多态是面向对象程序设计的灵活性和可扩展性的基础。

PSP

其他(感悟、思考等,可选)

  • 之前使用API的时候会想,为什么已经成熟的类中没有我所需要的,而在某些看似不相关的类中却有,现在了解了class itself原则以后学会了类中定义的原则与限制,以后在找的时候效率也会更高。
  • TDD是一种很好的方法,在代码较多的时候可以发挥很大的作用,在实际操作中可以用。

参考资料

posted on 2016-04-14 23:16  20145318赵一  阅读(258)  评论(2编辑  收藏  举报

导航