天天看點

Java程式設計 實驗二 Java面向對象程式設計

北京電子科技學院(BESTI)

實     驗    報     告

課程:Java程式設計 班級:1352  姓名:楊光  學号:20135233

成績:             指導教師:婁嘉鵬      實驗日期:2015.5.8

實驗密級:         預習程度:         實驗時間:

儀器組次:33         必修/選修:選修          實驗序号:2

實驗名稱:       Java面向對象程式設計                                                    

實驗目的與要求:實驗内容

1. 初步掌握單元測試和TDD

2. 了解并掌握面向對象三要素:封裝、繼承、多态

3. 初步掌握UML模組化

4. 熟悉S.O.L.I.D原則

5. 了解設計模式

實驗要求

1.沒有Linux基礎的同學建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程

2.完成實驗、撰寫實驗報告,實驗報告以部落格方式發表在部落格園,注意實驗報告重點是運作結果,遇到的問題(工具查找,安裝,使用,程式的編輯,調試,運作等)、解決辦法(空洞的方法如“查網絡”、“問同學”、“看書”等一律得0分)以及分析(從中可以得到什麼啟示,有什麼收獲,教訓等)。報告可以參考範飛龍老師的指導

3. 嚴禁抄襲,有該行為者實驗成績歸零,并附加其他懲罰措施。

4. 請大家先在實驗樓中的~/Code目錄中用自己的學号建立一個目錄,代碼和UML圖要放到這個目錄中,截圖中沒有學号的會要求重做,然後跟着下面的步驟練習

Java程式設計 實驗二 Java面向對象程式設計
實驗儀器:

名稱 型号 數量
PC hp惠普  1

實驗步驟

(一)單元測試

實驗結果

Java程式設計 實驗二 Java面向對象程式設計

修改MyUtil中代碼,使條變成綠色

Java程式設計 實驗二 Java面向對象程式設計

(二)面向對象三要素

Java程式設計 實驗二 Java面向對象程式設計

練習

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){

  }

步驟 耗時 百分比
需求分析  30min 21%
設計  20min 14%
代碼實作  1h 42%
測試
分析總結

單元測試檢測代碼是否有bug,可能會出現問題的地方,單元檢測發現問題很快速。

實驗收獲

  對虛拟機的使用更加熟悉,也熟悉了單元檢測的使用,以後的代碼應該盡量避免bug出現,就是實驗耗時有點長