您的位置:首页 > 其它

20145319 实验二

2016-04-13 23:44 260 查看

20145319 实验二 “Java面向对象程序设计”

程序设计过程

实验内容

初步掌握单元测试和TDD

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

初步掌握UML建模

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

使用TDD设计实现复数类

编写代码

思路: 创建一个complex类,将赋值、加、减、乘、除一一封装,再编写complex test检验即可

伪代码:

设计SetApart为complex取得实数部的值
设计SetBpart为complex取得虚数部的值
设计toString()输出字符串
设计函数complex add()完成加法操作并return complex q
设计函数complex minus()完成减法return complex q
设计函数complex multiply()完成乘法并return


产品代码:

public class complex {
private int a;
private int b;

public void SetApart(int a){
this.a=a;
}

public void SetBpart(int b){
this.b=b;
}

public String toString(){
if(b<0){
return a+""+b+"i";//a和b中要加入一个字符,不然输出时侯就会先输出a+b的值
}//问题儿童二代码中虽然输出结果看上去正确但是不利于检验
return a+"+"+b+"i";

}

public complex add(complex y){
complex q=new complex();
q.a=y.a+a;
q.b=y.b+b;
return q;
}

public complex minus(complex y){
complex q=new complex();
q.a=a-y.a;
q.b=b-y.b;
return q;
}

public complex multiply(complex y){
complex q=new complex();
q.a=-y.b*b+y.a*a;//虚数部之积要取反录入
q.b=y.a*b+y.b*a;
return q;
}

public complex devide(complex y){
complex q=new complex();
q.a/=a;
q.b/=b;
return q;
}
}


调试代码:

import org.junit.Test;

import junit.framework.TestCase;

class complexTest extends TestCase {

@Test
public void test() {//b为负数时,输出以及运算
complex x=new complex();
complex y=new complex();
complex z=new complex();
complex a=new complex();
x.SetApart(5);
x.SetBpart(6);
y.SetApart(2);
y.SetBpart(-3);
z=x.add(y);
a=x.multiply(y);
assertEquals("2-3i",y.toString());
assertEquals("7+3i", z.toString());
assertEquals("28-3i", a.toString());
}

@Test
public void test2(){//a为0时,输出以及运算
complex ab=new complex();
complex cd=new complex();
complex ef=new complex();
complex gd=new complex();
ab.SetApart(0);
ab.SetBpart(5);
cd.SetApart(1);
cd.SetBpart(4);
ef=ab.minus(cd);
gd=ab.multiply(cd);
assertEquals("0+5i", ab.toString());
assertEquals("1+4i", cd.toString());
assertEquals("-1+1i", ef.toString());
assertEquals("-20+5i", gd.toString());
}

@Test
public void test3(){//b为0时,输出以及运算
complex ab=new complex();
complex cd=new complex();
complex ef=new complex();
complex gt=new complex();
complex hi=new complex();
ab.SetApart(7);
ab.SetBpart(0);
cd.SetApart(5);
cd.SetBpart(9);
ef=ab.add(cd);
gt=ab.minus(cd);
hi=ab.multiply(cd);
assertEquals("7+0i", ab.toString());
assertEquals("5+9i", cd.toString());
assertEquals("12+9i", ef.toString());
assertEquals("2-9i", gt.toString());
assertEquals("35+63i", hi.toString());
}

@Test
public void test4(){//a为0,输出以及运算
complex ab=new complex();
complex cd=new complex();
complex ef=new complex();
complex gt=new complex();
complex hi=new complex();
ab.SetApart(0);
ab.SetBpart(3);
cd.SetApart(0);
cd.SetBpart(7);
ef=ab.add(cd);
gt=ab.minus(cd);
hi=ab.multiply(cd);
assertEquals("0+3i", ab.toString());
assertEquals("0+7i", cd.toString());
assertEquals("0+10i", ef.toString());
assertEquals("0-4i", gt.toString());
assertEquals("-21+0i", hi.toString());
}

@Test
public void test5(){//a、b均为负数……
complex ab=new complex();
complex cd=new complex();
complex ef=new complex();
complex gt=new complex();
complex hi=new complex();
ab.SetApart(-3);
ab.SetBpart(-7);
cd.SetApart(6);
cd.SetBpart(-4);
ef=ab.add(cd);
gt=ab.minus(cd);
hi=ab.multiply(cd);
assertEquals("-3-7i", ab.toString());
assertEquals("6-4i", cd.toString());
assertEquals("3-11i", ef.toString());
assertEquals("-9-3i", gt.toString());
assertEquals("-46-30i", hi.toString());
}
}


单元测试总结

在本次试验中,我们第一次接触到了一种测试代码的方法,单元测试,相比我们自己编写complextest代码,使用一堆if ……else if语句来说,单元测试无疑简单了许多,也不用担心自己再写test程序时if……else语句出现逻辑上的问题,只需要使用assertEquals("理想结果",调用函数);而且可以测试多组数据,只需要复制第一个Test块,然后修改赋值语句即可,而且代码本身看上去也更加简洁,比较方便检查

UML使用



PSP时间统计

耗时(min)百分比
需求分析10 min4
设计10 min4
代码设计40 min16
测试120min52
分析总结60min24
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: