2016-2017-2 20155338 實驗二《Java面向對象程序設計》實驗報告

2016-2017-2 20155338 實驗二《Java面向對象程序設計》實驗報告

實驗內容:

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

2.理解並掌握面向對象三要素:封裝、繼承、多態程序員

3.初步掌握UML建模編程

4.熟悉S.O.L.I.D原則設計模式

5.瞭解設計模式ide

實驗要求:

1、參考Intellj IDEA 簡易教程:

提交最後三個測試用例都經過的截圖,截圖上要有畫圖加水印,輸入本身的學號。工具

2、參考積極主動敲代碼使用JUnit學習Java:

以 TDD的方式研究學習StringBuffer,提交你的單元測試用例和測試經過的截圖,截圖要加上學號水印。單元測試

3、Java面向對象程序設計

對設計模式示例進行擴充,體會OCP原則和DIP原則的應用,初步理解設計模式用本身的學號%6進行取餘運算,根據結果進行代碼擴充:
~~~~
0、讓系統支持Byte類,並在MyDoc類中添加測試代碼代表添加正確學習

一、讓系統支持Short類,並在MyDoc類中添加測試代碼代表添加正確測試

二、讓系統支持Boolean類,並在MyDoc類中添加測試代碼代表添加正確this

三、讓系統支持Long類,並在MyDoc類中添加測試代碼代表添加正確

四、讓系統支持Float類,並在MyDoc類中添加測試代碼代表添加正確

五、讓系統支持Double類,並在MyDoc類中添加測試代碼代表添加正確
~~~~

4、以TDD的方式開發一個複數類Complex支持加減乘除。

5、使用StarUML對實驗二中的代碼進行建模

發類圖的截圖,加上學號水印。類圖中至少兩個類。

實驗步驟

1、單元測試(三種代碼)

  • 僞代碼
百分制轉五分制:
   若是成績小於60,轉成「不及格」
   若是成績在60與70之間,轉成「及格」
   若是成績在70與80之間,轉成「中等」
   若是成績在80與90之間,轉成「良好」
   若是成績在90與100之間,轉成「優秀」
   其餘,轉成「錯誤」
  • 產品代碼
public class MyUtil{
   public static String percentage2fivegrade(int grade){
       //若是成績小於60,轉成「不及格」
       if (grade < 60)
           return "不及格";
       //若是成績在60與70之間,轉成「及格」
       else if (grade < 70)
           return "及格";
       //若是成績在70與80之間,轉成「中等」
       else if (grade < 80)
           return "中等";
       //若是成績在80與90之間,轉成「良好」
       else if (grade < 90)
           return "良好";
       //若是成績在90與100之間,轉成「優秀」
       else if (grade < 100)
           return "優秀";
       //其餘,轉成「錯誤」
       else 
           return "錯誤";
   }
}
  • 測試代碼

    爲了測試代碼的健碩性,須要咱們進行代碼測試,編寫測試代碼。

    低於60的成績測試代碼截圖:

    負分紅績的測試代碼截圖:

    對「十、20、30、50、70」等邊界成績進行測試:

    最後,以TDD方法完成三種實驗代碼的測試,並截圖:

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

TDD的通常步驟以下

• 明確當前要完成的功能,記錄成一個測試列表

• 快速完成編寫針對此功能的測試用例

• 測試代碼編譯不經過(沒產品代碼呢)

• 編寫產品代碼

• 測試經過

• 對代碼進行重構,並保證測試經過(重構下次實驗練習)

• 循環完成全部功能的開發

TDD的編碼節奏是

•增長測試代碼,JUnit出現紅條

•修改產品代碼

•JUnit出現綠條,任務完成

在作實驗二的過程當中,一開始,我並未理解實驗二的要求,將代碼作成了MyUtil,過程及截圖以下:

在老師的提醒下,我明白了本身先前的錯誤,因而改成以TDD的方式進行StringBuffer,代碼及截圖以下

3、面向對象三要素:

(1)抽象

• 抽象一詞的本意是指人在認識思惟活動中對事物表象因素的捨棄和對本質因素的抽取。抽象是人類認識復瑣事物和現象時常用的思惟工具,抽象思惟能力在程序設計中很是重要,"去粗取精、化繁爲簡、由表及裏、異中求同"的抽象能力很大程度上決定了程序員的程序設計能力。

• 抽象就是抽出事物的本質特徵而暫時不考慮他們的細節。對於複雜系統問題人們藉助分層次抽象的方法進行問題求解;在抽象的最高層,可使用問題環境的語言,以歸納的方式敘述問題的解。在抽象的較低層,則採用過程化的方式進行描述。在描述問題解時,使用面向問題和麪向實現的術語。
程序設計中,抽象包括兩個方面,一是過程抽象,二是數據抽象。

(2)封裝、繼承與多態

•面向對象(Object-Oriented)的三要素包括:封裝、繼承、多態。

•面向對象的思想涉及到軟件開發的各個方面,如面向對象分析(OOA)、面向對象設計(OOD)、面向對象編程實現(OOP)。

•OOD中建模會用圖形化的建模語言UML(Unified Modeling Language),UML是一種通用的建模語言
經過次數的學習完成了實驗的第五個內容。
步驟以下:

1.下載安裝 StarUML,並學習使用。

2.學習教程中的代碼
~~~~
public abstract class Animal {
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public abstract String shout();
}
public class Cat extends Animal{
public String shout(){
return "喵喵";
}
public String toString(){
return "The Cat's color is " + this.getColor() +", and it shouts "+ this.shout() + "!";
}
}
public class Dog extends Animal{
public String shout(){
return "汪汪";
}
public String toString(){
return "The Dog's color is " + this.getColor() +", and it shouts "+ this.shout() + "!";
}
}
~~~~

進行建模:

4、練習

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

僞代碼:
~~~~
Complex類
定義實部以及虛部;
方法Set設置實部,以及虛部:public double setRealPart(),public double setImagePart();
方法Get取得實部,以及虛部:public double getRealPart(),public double getImagePart();
方法加法Complex ComplexAdd(Complex a)
方法減法Complex ComplexSub(Complex a)
方法乘法Complex ComplexMultib(Complex a)
方法除法Complex ComplexDiv(Complex a)
方法toString()控制輸出格式
~~~~

產品代碼:

測試代碼並經過:

5、Java面向對象設計

讓系統支持Boolean類,並在MyDoc類中添加測試代碼代表添加正確

產品代碼:

測試代碼並經過的截圖:

心得體會:

此次實驗感受仍是稍有難度,代碼的實現過程耗費了我不少時間,深感本身仍是須要平時多加練習,可是在設計過程當中我也學到了怎麼樣解決問題,相信這對我往後Java的學習必定會有所幫助。

相關文章
相關標籤/搜索