20145320《Java程式設計》第二次實驗報告
北京電子科技學院(BESTI)實驗報告
課程:Java程式設計
班級:1453
指導教師:婁嘉鵬
實驗日期:2016.04.12 15:30-18:30
實驗名稱:Java開發環境的熟悉
實驗內容:
- 初步掌握單元測試和TDD
- 理解並掌握物件導向三要素:封裝、繼承、多型
- 初步掌握UML建模
- 熟悉S.O.L.I.D原則
- 瞭解設計模式
使用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% |
單元測試的好處
減少問題出現,提高程式質量,在測試中進行專案,邊改邊寫,可以將自己設計的專案不斷優化
更快地定位問題出現在哪個模組,提高效率,減少成本,這有助於實現模組的“塊內高內聚,塊間低耦合”
可以放心修改部分程式碼