20145320《Java程序设计》第二次实验报告

20145320《Java程序设计》第二次实验报告

北京电子科技学院(BESTI)实验报告

课程:Java程序设计

班级:1453

指导教师:娄嘉鹏

实验日期:2016.04.12 15:30-18:30

实验名称:Java开发环境的熟悉

实验内容:

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

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

步骤:
1.编写计算复数类Complex,分为加减乘置数四种情况。

伪代码如下
public class Complex {
  double real=0;//实部
  double imaginary=0;//虚部
 Complex(){}
  getComplex(double real,double imaginary)
 {
     this.real=real;
     this.imaginary=imaginary;
 }
  add(Complex c1){//加法
     c.real=c1.real+this.real;
     c.imaginary=c1.imaginary+this.imaginary;
     return c;
 }
 
  multi(Complex c1){//乘法
     c.real=c1.real*this.real-c1.imaginary*this.imaginary;
     c.imaginary=c1.imaginary*this.real+this.imaginary*c1.real;
     return c;
 }
 
  Minus(Complex c1){//减法
     c.real=c1.real-this.real;
     c.imaginary=c1.imaginary-this.imaginary;
     return c;
 }
}
产品代码如下
package experiment2;
public class Complex {
 private double real=0;//实部
 private double imaginary=0;//虚部
 Complex(){}
 public void getComplex(double real,double imaginary)
 {
     System.out.println("set");
     this.real=real;
     this.imaginary=imaginary;
 }
 public Complex add(Complex c1){//加法
     Complex c=new Complex();
     System.out.println("add");
     c.real=c1.real+this.real;
     c.imaginary=c1.imaginary+this.imaginary;
     return c;
 }
 
 public Complex multi(Complex c1){//乘法
     Complex c =new Complex();
     System.out.println("multi");
     c.real=c1.real*this.real-c1.imaginary*this.imaginary;
     c.imaginary=c1.imaginary*this.real+this.imaginary*c1.real;
     return c;
 }
 
 public Complex Minus(Complex c1){//减法
     System.out.println("Minus");
     Complex c =new Complex();
     c.real=c1.real-this.real;
     c.imaginary=c1.imaginary-this.imaginary;
     return c;
 }
  
 public double GetRealPatr(){//获得实部
     return this.real;
 }
 
  public double GetimaginaryPatr(){//获得虚部
     return this.imaginary;
 }
  
public Object tostring(){//合成一个a+bi字符串
    Object a=new Object();
    if(imaginary>0)
         a=this.real+"+"+this.imaginary+"i";
     if(imaginary==0)
         a=this.real;
      if(imaginary<0)
        a=this.real+""+this.imaginary+"i";
      System.out.println(a);
    return a;
}
}

test如下

test1

测试项目:

  • 实部赋负数
  • 虚部赋负数
  • 取c1实部与虚部
  • 输出字符串c2、x、y、z
  • 置数方法、加法方法、减法方法、乘法方法

测试结果

test2

测试项目:

  • 虚部实部均为负数
  • 负复数与正复数相乘

测试结果

test3

测试项目

  • 虚部实部输入负小数
  • 负复小数与正复小数相乘

出现错误了!错误在这里,这里定义了虚、实部均为int,其实可为double型

public void getComplex(int real,int imaginary)
 {
     System.out.println("set");
     this.real=real;
     this.imaginary=imaginary;
 }

修改代码后测试结果

建立的模型如下

从模型中可以看见在Complex类中定义了如下方法:
  • 首先定义了实部real与虚部imaginary,并赋初值0
  • getComplex()方法用于置数
  • add()方法用于两个复数相加
  • multi()方法用于两个复数相乘
  • Minus()方法用于两个复数相减
  • GetRealPatr()方法得到实部
  • GetimaginaryPatr()方法得到实部
  • tostring()方法把复数结合成为a+bi形势的字符串

PSP(Personal Software Process)时间

步骤 耗时 百分比
需求分析 24min 13.3%
设计 36min 20%
代码设计 60min 33.3%
测试 40min 22.2%
分析总结 20min 11.1%

单元测试的好处

  • 减少问题出现,提高程序质量,在测试中进行项目,边改边写,可以将自己设计的项目不断优化

  • 更快地定位问题出现在哪个模块,提高效率,减少成本,这有助于实现模块的“块内高内聚,块间低耦合”

  • 可以放心修改部分代码

posted @ 2016-04-14 22:14  20145320周岐浩  阅读(260)  评论(1编辑  收藏  举报