20145320《Java程式設計》第二次實驗報告

20145320周岐浩發表於2016-04-14

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

20145320《Java程式設計》第二次實驗報告

測試專案:

  • 實部賦負數
  • 虛部賦負數
  • 取c1實部與虛部
  • 輸出字串c2、x、y、z
  • 置數方法、加法方法、減法方法、乘法方法

測試結果

20145320《Java程式設計》第二次實驗報告

test2

20145320《Java程式設計》第二次實驗報告

測試專案:

  • 虛部實部均為負數
  • 負複數與正複數相乘

測試結果

20145320《Java程式設計》第二次實驗報告

test3

20145320《Java程式設計》第二次實驗報告

測試專案

  • 虛部實部輸入負小數
  • 負復小數與正復小數相乘

出現錯誤了!錯誤在這裡,這裡定義了虛、實部均為int,其實可為double型

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

修改程式碼後測試結果

20145320《Java程式設計》第二次實驗報告

建立的模型如下

20145320《Java程式設計》第二次實驗報告

從模型中可以看見在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%

單元測試的好處

  • 減少問題出現,提高程式質量,在測試中進行專案,邊改邊寫,可以將自己設計的專案不斷優化

  • 更快地定位問題出現在哪個模組,提高效率,減少成本,這有助於實現模組的“塊內高內聚,塊間低耦合”

  • 可以放心修改部分程式碼

相關文章