您的位置:首页 > 编程语言 > Java开发

20145222黄亚奇《Java程序设计》实验二实验报告

2016-04-16 22:02 507 查看

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

实验步骤与内容

一、实验内容

初步掌握单元测试和TDD

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

初步掌握UML建模

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

了解设计模式

二、实验步骤

1.单元测试

(1) 三种代码

伪代码、产品代码、测试代码

(2) TDD(Test Driven Devlopment, 测试驱动开发)

a.先写测试代码,然后再写产品代码的开发方法叫“测试驱动开发”(TDD)。TDD的一般步骤如下:

-明确当前要完成的功能,记录成一个测试列表

-快速完成编写针对此功能的测试用例

-测试代码编译不通过

-编写产品代码

-测试通过

-对代码进行重构,并保证测试通过

-循环完成所有功能的开发

b.基于TDD,我们不会出现过度设计的情况,需求通过测试用例表达出来了,我们的产品代码只要让测试通过就可以了。 Java中有单元测试工具JUnit来辅助进行TDD,红叉说明代码存在语法错误,原因很简单,MyUtil类还不存在,类中的percentage2fivegrade方法也不存在,我们在TDDDemo的src目录中新建一个MyUtil的类,并实现percentage2fivegrade方法

c.测试结果出现了一个绿条(green bar),说明测试通过了。



2.面向对象三要素

封装、继承、多态

OO三要素的第一个要素是封装,封装就是将数据与相关行为包装在一起以实现信息就隐藏。Java中用类进行封装,比如一个Dog类:





3.设计模式初步

S.O.L.I.D原则:

SRP(Single Responsibility Principle,单一职责原则)

OCP(Open-Closed Principle,开放-封闭原则)

LSP(Liskov Substitusion Principle,Liskov替换原则)

ISP(Interface Segregation Principle,接口分离原则)

DIP(Dependency Inversion Principle,依赖倒置原则)

4.练习

使用TDD的方式设计关实现复数类Complex

打印一个复数,打印四则运算的语句

public class ComplexNumber {

public static void main(String[] args) {
Complex x = new Complex(1.0 , -2.0);
Complex y = new Complex(3.0 , 4.0);
Complex.printSentence(x, y);
}

}
class Complex
{
private double a,b;
Complex(double a,double b)
{
this.a = a;
this.b = b;
}
static Complex Add(Complex x,Complex y)
{
return new Complex(x.a+y.a, x.b+y.b);
}
static Complex Minus(Complex x,Complex y)
{
return new Complex(x.a-y.a, x.b-y.b);
}
static Complex Multiple(Complex x,Complex y)
{
return new Complex(x.a * y.a - x.b * y.b, x.a * y.b + x.b * y.a);
}
static Complex Divide(Complex x,Complex y)
{
Complex conjugate = new Complex(y.a, -y.b);
double mo = (y.a)*(y.a) + (y.b)*(y.b);

Complex t = Multiple(x,conjugate);
return new Complex(t.a/mo , t.b/mo);
}
static String print(Complex x)
{
if (x.b > 0)
return x.a + "+" + x.b + "i";
else
return x.a + "-" + (-x.b) + "i";
}
static void printSentence(Complex x, Complex y)
{
System.out.println("("+ print(x) + ")+("+ print(y) + ") =" +print(Add(x, y)));
System.out.println("("+ print(x) + ")-("+ print(y) + ") =" +print(Minus(x, y)));
System.out.println("("+ print(x) + ")*("+ print(y) + ") =" +print(Multiple(x, y)));
System.out.println("("+ print(x) + ")/("+ print(y) + ") =" +print(Divide(x, y)));
}

}


实验结果截图:



我的PSP时间

PSP时间

步骤耗时百分比
需求分析20mi13.8%
设计30min20.7%
代码实现60min41.4%
测试15min10.3%
分析总结20min13.8%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: