實驗二 Java物件導向程式設計

來源:互聯網
上載者:User

標籤:

北京電子科技學院(BESTI)

             

課程:Java程式設計                     班級:1352           

姓名:(按貢獻大小排名)閆佳歆

學號:(按貢獻大小排名)20135202

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

實驗密級:         預習程度:             實驗時間:15:30-18:00

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

實驗名稱:Java物件導向程式設計                                                           

實驗目的與要求:

實驗內容

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

2. 理解並掌握物件導向三要素:封裝、繼承、多態

3. 初步掌握UML建模

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

5. 瞭解設計模式

實驗要求

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

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

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

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

【實驗儀器】

名稱

型號

數量

PC

TOSHIBA

1

虛擬機器

實驗樓

1

 

【實驗內容】

(一)單元測試

(1) 三種代碼

(2) TDD(Test Driven Devlopment, 測試驅動開發)

(二)物件導向三要素

(1)抽象

(2)封裝、繼承與多態

(三)設計模式初步

(1)S.O.L.I.D原則

(2)模式與設計模式

(3)設計模式實樣本

(四)練習

1使用TDD的方式設計關實現複數類Complex。

2.實驗報告中統計自己的PSP(Personal Software Process)時間

3. 實現要有虛擬碼,產品代碼,測試代碼。

【實驗步驟】

1.以學號為名稱建立檔案夾

 

 

實驗一:

(1)單元測試

這是在我電腦裡的檔案

 

 

 

 

測試代碼:

 

更多的測試代碼:

 

 

 

 

測試出錯情況:

 

 

 

 

 

(2)TDD測試方法:

 

建立一個源檔案

建立測試檔案

 

測試案例

 

實現代碼:

 

 

測試回合:

錯誤:

進行改正

成功:

 

需要改這個條件:

然後就通過了:

 

實驗二:

 

 

開啟umbrello

建立一個類

 

 

 

 

 

 

 

儲存到指定檔案夾

繼承:

 

 

對應代碼:

 

 

 

 

 

 

 

 

 

 

實驗三:

 

 

 

對應代碼:

 

 

四,練習:

1.虛擬碼:

虛擬碼:

Complex類要輸出實部,輸出虛部,並按照a+bi的形式輸出複數。

Complex類中有兩個變數,實部RealPart和虛部ImaginePart;

方法:

getRealPart(int RealPart);返回實部

getImaginePart(int ImaginePart);返回虛部

toString(int RealPart,int ImaginePart);將複數輸出成a+bi的格式。

2.測試代碼:

import org.junit.Test;
import junit.framework.TestCase;
public class MyComplexTest extends TestCase {

@Test
public void testRealPart() {
assertEquals(1, MyComplex.getRealPart(1));
assertEquals(-1, MyComplex.getRealPart(-1));
assertEquals(5, MyComplex.getRealPart(5));
assertEquals(22, MyComplex.getRealPart(22));
assertEquals(-100, MyComplex.getRealPart(-100));
assertEquals(0, MyComplex.getRealPart(0));
}
@Test
public void testImaginePart(){
assertEquals(1, MyComplex.getImaginePart(1));
assertEquals(-1, MyComplex.getImaginePart(-1));
assertEquals(5, MyComplex.getImaginePart(5));
assertEquals(22, MyComplex.getImaginePart(22));
assertEquals(-100, MyComplex.getImaginePart(-100));
assertEquals(0, MyComplex.getImaginePart(0));
}
@Test
public void testtoString(){
assertEquals("1+2i", MyComplex.toString(1,2));
assertEquals("1-4i", MyComplex.toString(1,-4));
assertEquals("19", MyComplex.toString(19,0));
assertEquals("-3i", MyComplex.toString(0,-3));
assertEquals("0", MyComplex.toString(0,0));
}

}

3.產品代碼:


public class MyComplex {
static int r;
static int i;
public static int getRealPart(int RealPart){
r = RealPart;
return r;
}
public static int getImaginePart(int ImaginePart){
i = ImaginePart;
return i;
}
public static String toString (int RealPart,int ImaginePart){
if(RealPart==0 && ImaginePart==0)
return "0";
else if(RealPart == 0)
return ImaginePart+"i";
else if(ImaginePart == 0)
return RealPart+"";
else
{
if(ImaginePart>0)
return RealPart+"+"+ImaginePart+"i";
else if(ImaginePart<0)
return RealPart+""+ImaginePart+"i";
}
return "Wrong!";
}
}

 

 

 

【實驗體會】

這次實驗中對我來說比較困難的是在最後的Complex類的實現上,一開始是不知道Complex需要實現什麼方法,然後是對TDD的方法不是很熟悉,也不知道需要測試什麼。所以一開始我是比對著之前的例子一點點改測試執行個體,又針對測試去寫原始碼。

寫原始碼的過程中出現的問題主要有,輸出複數的時候,如果係數是1要省略,如果實部或者虛部是0要省略,如果虛部是負數需要把加號改成減號,這一堆if-else的累加花費了我不少時間。

在把這裡調通之後,另一個難題在靜態,因為我在方法中錯誤的使用了this關鍵字,導致方法不能靜態,導致測試執行個體中不能調用非靜態方法而出現錯誤。後來我發現根本就不需要this,直接做賦值返回就好,這就解決了第二個難題。

還有一個難題,就是在以a+bi的形式返回複數時,怎樣把傳回值表示為String類型,同時又能保證格式。最後我用了+這個串連符來做。

這次實驗中,我不光學習到了很多開發過程中的原則,也體會到了自己的知識掌握的並不牢靠,只是簡單的記憶,並不能活學活用,這就需要我在今後的學習生活中多加練習。

 

 

步驟

耗時

百分比

需求分析

10min

13.3%

設計

15min

20%

代碼實現

20min

26.7%

測試

20min

26.7%

分析總結

10min

13.3%

實驗二 Java物件導向程式設計

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.