標籤:
北京電子科技學院(BESTI)
實 驗 報 告
課程:Java程式設計 班級:1353 姓名:李海空 學號:20135329
成績: 指導教師:婁嘉鵬 實驗日期:2015.5.7
實驗密級: 預習程度: 實驗時間:
儀器組次: 必修/選修: 實驗序號:
實驗名稱: Java物件導向程式設計
實驗目的與要求:實驗內容
1. 初步掌握單元測試和TDD
2. 理解並掌握物件導向三要素:封裝、繼承、多態
3. 初步掌握UML建模
4. 熟悉S.O.L.I.D原則
5. 瞭解設計模式
實驗要求
1.沒有Linux基礎的同學建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程
2.完成實驗、撰寫實驗報告,實驗報告以部落格方式發表在部落格園,注意實驗報告重點是運行結果,遇到的問題(工具尋找,安裝,使用,程式的編輯,調試,運行等)、解決辦法(空洞的方法如“查網路”、“問同學”、“看書”等一律得0分)以及分析(從中可以得到什麼啟示,有什麼收穫,教訓等)。報告可以參考範飛龍老師的指導
3. 嚴禁抄襲,有該行為者實驗成績歸零,並附加其他懲罰措施。
4. 請大家先在實驗樓中的~/Code目錄中用自己的學號建立一個目錄,代碼和UML圖要放到這個目錄中,中沒有學號的會要求重做,然後跟著下面的步驟練習
實驗儀器:
實驗步驟
(一)單元測試
實驗結果
增加測試內容後,修改MyUtil中代碼,使條變成綠色
(二)物件導向三要素
實驗結果
(四)練習
實驗步驟
1使用TDD的方式設計關實現複數類Complex.
2.實驗報告中統計自己的PSP(Personal Software Process)時間
3. 實現要有虛擬碼,產品代碼,測試代碼。
4.總結單元測試的好處
實驗代碼
瞭解:
1)複數類ComplexNumber的屬性
realPart: 實部,代表複數的實數部分
imaginPart: 虛部,代表複數的虛數部分
2)複數類ComplexNumber的方法
ComplexNumber() 建構函式,將實部,虛部都置為0
ComplexNumber(double r, double i) 建構函式,建立複數對象的同時完成複數的實部,虛部的初始化
getRealPart() 擷取實部
getImaginaryPart() 擷取虛部
getRealPart(double d) 設定實部
getImaginaryPart(double d) 設定虛部
add(ComplexNumber c) 複數相加
add(double c) 複數相加
minus(ComplexNumber c) 複數相減
minus(double c) 複數相減
ComplexMulti(ComplexNumber c) 複數相乘
ComplexMulti(double c) 複數相乘
toString() 把當前複數對象的實部,虛部組合成a+bi的字串形式
虛擬碼:
//複數類
類有虛部實部
複數的加法運算;
複數的減法運算;
複數的乘法運算;
複數的除法運算;
產品代碼:
public class ComplexDemo {
// main方法
public static void main(String[] a) {
Complex b = new Complex(2, 5);
Complex c = new Complex(3, -4);
System.out.println(b + "+" + c + "=" + b.add(c));
System.out.println(b + "-" + c + "=" + b.minus(c));
System.out.println(b + "*" + c + "=" + b.multiply(c));
System.out.println(b + "/" + c + "=" + b.divide(c));
}
}
// Complex類
class Complex {
private double m;// 實部
private double n;// 虛部
public Complex(double m, double n) {
this.m = m;
this.n = n;
}
// add
public Complex add(Complex c) {
return new Complex(m + c.m, n + c.n);
}
// minus
public Complex minus(Complex c) {
return new Complex(m - c.m, n - c.n);
}
// multiply
public Complex multiply(Complex c) {
return new Complex(m * c.m - n * c.n, m * c.n + n * c.m);
}
// divide
public Complex divide(Complex c) {
double d = Math.sqrt(c.m * c.m) + Math.sqrt(c.n * c.n);
return new Complex((m * c.m + n * c.n) / d, Math.round((m * c.n - n * c.m) / d));
}
public String toString() {
String rtr_str = "";
if (n > 0)
rtr_str = "(" + m + "+" + n + "i" + ")";
if (n == 0)
rtr_str = "(" + m + ")";
if (n < 0)
rtr_str = "(" + m + n + "i" + ")";
return rtr_str;
}
}
測試代碼:
public static ComplexTest{
public static void main(String[] args){
class Complex {
private double m;// 實部
private double n;// 虛部
public Complex(double m, double n) {
this.m = m;
this.n = n;
}
public String toString() {
String rtr_str = "";
if (n > 0)
rtr_str = "(" + m + "+" + n + "i" + ")";
if (n == 0)
rtr_str = "(" + m + ")";
if (n < 0)
rtr_str = "(" + m + n + "i" + ")";
return rtr_str;
}
}
}
}
| 步驟 |
耗時 |
百分比 |
需求分析 |
30min |
21% |
設計 |
20min |
14% |
代碼實現 |
1h |
42% |
測試 |
30min |
21% |
分析總結 |
|
|
單元測試用於檢測代碼是否有bug,在能考慮到的、可能會出現問題的地方,用單元檢測發現問題很快速。
實驗收穫
這次實驗花了很多時間,但我也收穫了很多。首先,通過這次實驗,我對虛擬機器的使用更加熟悉。
學習了單元測試,提升了自己的能力,知道了要對自己的代碼負責,給別人的代碼盡量別有bug,同時也教會我以後在編寫程式的時候要考慮到各種可能性,以提高代碼的安全性。通過這次實驗,我還知道了設計模式,我覺得通過每一次的java實驗,不僅提高了我的學習能力,增長了知識,更學到了學習的方法,會在今後更好的學習。
Java程式設計 實驗二 Java物件導向程式設計