實驗內容
- 1.初步掌握單元測試和TDD
- 2.理解並掌握面向對象三要素:封裝、繼承、多態
- 3.初步掌握UML建模
- 4.熟悉S.O.L.I.D原則
- 5.瞭解設計模式
實驗知識點
- 1.參考Intellj IDEA 簡易教程
提交最後三個測試用例都經過的截圖,截圖上要有畫圖加水印,輸入本身的學號。
- 2.參考 積極主動敲代碼使用JUnit學習Java,
以 TDD的方式研究學習StringBuffer,提交你的單元測試用例和測試經過的截圖,截圖要加上學號水印。
- 3.實驗二Java面向對象程序設計
對設計模式示例進行擴充,體會OCP原則和DIP原則的應用,初步理解設計模式用本身的學號%6進行取餘運算,根據結果進行代碼擴充:
- 0: 讓系統支持Byte類,並在MyDoc類中添加測試代碼代表添加正確
- 1: 讓系統支持Short類,並在MyDoc類中添加測試代碼代表添加正確
- 2: 讓系統支持Boolean類,並在MyDoc類中添加測試代碼代表添加正確
- 3: 讓系統支持Long類,並在MyDoc類中添加測試代碼代表添加正確
- 4: 讓系統支持Float類,並在MyDoc類中添加測試代碼代表添加正確
- 5: 讓系統支持Double類,並在MyDoc類中添加測試代碼代表添加正確
4.以TDD的方式開發一個複數類Complex支持加減乘除。html
5.使用StarUML對實驗二中的代碼進行建模,發類圖的截圖,加上學號水印。類圖中至少兩個類。java
實驗步驟
(一)單元測試
(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 "錯誤";
}
}
- 測試代碼:爲了檢測代碼的健碩性,避免出現bug須要對代碼進行測試,這個時候就須要使用測試代碼。
- 測試截圖以下
(2)TDD(Test Driven Devlopment, 測試驅動開發)
TDD的通常步驟以下:git
- 明確當前要完成的功能,記錄成一個測試列表
- 快速完成編寫針對此功能的測試用例
- 測試代碼編譯不經過(沒產品代碼呢)
- 編寫產品代碼
- 測試經過
- 對代碼進行重構,並保證測試經過(重構下次實驗練習)
- 循環完成全部功能的開發
(3)在IDEA中使用Junit
- 根據老師教程中的步驟,在IDEA中使用Junit進行單元測試。
(4)使用TDD
- TDD的編碼節奏是:
- 增長測試代碼,JUnit出現紅條
- 修改產品代碼
- JUnit出現綠條,任務完成
- 實驗題目的產品代碼測試代碼以及結果截圖
(二)面向對象三要素
- (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() + "!";
}
}
- 3.利用StarUML完成建模,獲得以下圖所示
(三)設計模式初步
(1)S.O.L.I.D原則
- 面向對象三要素是「封裝、繼承、多態」,任何面向對象編程語言都會在語法上支持這三要素。
- 如何藉助抽象思惟用好三要素特別是多態仍是很是困難的,S.O.L.I.D類設計原則是一個很好的指導,它包括SRP(單一職責原則)、
- OCP(開放-封閉原則)、
- LSP(替換原則)、
- ISP(接口分離原則)、
- DIP(依賴倒置原則)。
- 設計模式:建立型,結構型,行爲型
經過這部分的學習完成了本次實驗的第三個內容,學號模6後個人實驗題目是3。我經過已有的代碼新建了一個long類來繼承Data,新建一個個LongFactory類來繼承Factory。
測試結果以下
(四)使用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()控制輸出格式
實驗體會
這是第二次Java實驗課,此次實驗老師要求咱們用TDD和Junit學習Java。一開始我按照老師的教程一步步學習,漸漸地發現代碼常常會出現錯誤,一點點查書,一點點改正錯誤,雖然還不是很熟練,但對於遇到的問題都能本身想到辦法解決,對於代碼中出現的錯誤,也可以根據以前學過的知識進行改正。這兩次的實驗總在學新的東西,在接下來的時間裏,我還會繼續跟着老師的步伐,繼續敲代碼。程序員