初步掌握單元測試和TDDhtml
理解並掌握面向對象三要素:封裝、繼承、多態java
初步掌握UML建模git
熟悉S.O.L.I.D原則編程
瞭解設計模式設計模式
完成藍墨雲上 (1)-(5)實驗。數據結構
(1).完成5個實驗,課上完成兩個,課下完成三個。ide
public class MyUtil{ public static String percentage2fivegrade(int grade){ //若是成績小於0,轉成「錯誤」 if ((grade < 0)) return "錯誤"; //若是成績小於60,轉成「不及格」 else 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 "優秀"; //若是成績大於100,轉成「錯誤」 else return "錯誤"; } }
接下來就是完成實驗測試,使用Junit完成上述的三個測試。實驗項目一代碼連接1,實驗項目一代碼連接2函數
(3).進行第二個實驗:學習使用StringBuffer類,從API文檔上查閱了StringBuffer類的一些方法,並完成相關測試,使用JUnit完成了單元測試,實驗項目二代碼連接,下圖是實驗結果:
單元測試
(4).第三個實驗:在這裏讀錯了題目,覺得是要將所列的類都要進行代碼補充,後來改了回來,對本身學號%6取餘結果爲2,故完成了(2)Boolean類,在MyDoc中也添加了測試代碼,這裏經學長指正作了修改,參見問題6。修改後代碼連接學習
(5).第四個實驗:以TOD的方式開發複數類,並完成這些要求:
// 定義屬性並生成getter,setter double RealPart; double ImagePart; // 定義構造函數 public Complex() public Complex(double R,double I) //Override Object public boolean equals(Object obj) public String toString() // 定義公有方法:加減乘除 Complex ComplexAdd(Complex a) Complex ComplexSub(Complex a) Complex ComplexMulti(Complex a) Complex ComplexDiv(Complex a)
作這個實驗花的時間比較長,對複數運算還算清楚,但在編寫代碼時也花了力氣設計出來代碼,實驗四代碼連接1,實驗四代碼連接2.最後實驗結果以下:
問題1:在使用Junit時切換了字符集,遇到字符集錯誤,也就是亂碼了,致使之前的許多程序也不能再運行,具體見下圖:
問題1解決方案:這裏是在課上,就隨即問了學長,學長也沒有解決,但注意到了學長在調換字符集,後面本身就是亂嘗試,當把字符集切換成US-ASCII時,終於又調了回來,後來課上老師也給出瞭解決方案,但好像是不太同樣。
問題2:一個小錯誤,在使用Junit進行測試時,有三個測試,但只有兩個測試顯示經過,另一個始終沒有反應,不顯示經過或失敗。
問題2解決方案:後來還上去找老師問了問,老師檢查完看出了編寫錯誤,把test寫成了text,致使那個測試始終沒有運行,修改以後正常。到如今還在犯拼寫錯誤,之後本身再想老師學長問問題時必定要多檢查幾遍,不要出現編寫錯誤去讓別人檢查。
問題3:就是關於實驗項目四中的Complex編寫,先是小問題,return語句始終加紅線錯誤,不明白是錯在哪裏了,見下圖:
public RationalNumber add(RationalNumber op2) { int commonDenominator = denominator * op2.getDenominator(); int numerator1 = numerator * op2.getDenominator(); int numerator2 = op2.getNumerator() * denominator; int sum = numerator1 + numerator2; return new RationalNumber(sum,commonDenominator); }
這時便發現了個人錯誤在哪,個人return語句中缺乏new運算符,加上以後,語句變爲return new Complex(RealPart,ImagePart);
,這樣紅線消失,繼續編寫。
double realpart = Realpart ;
這條語句,而是直接這樣的語句:RealPart = RealPart*obj.RealPart-ImagePart*obj.ImagePart; ImagePart = RealPart*obj.ImagePart+ImagePart*obj.RealPart; return new Complex(RealPart,ImagePart);
這樣的錯誤是什麼呢,就是我把作完操做、已經發生改變的RealPart代入到了下面的一條語句,而下面的語句須要的是我最初的那個RealPart,這裏就發生了錯誤,因而就新建一個變量,讓它等於最初的RealPart,而後把它用到下面的這條語句中,這時就能夠保證咱們想要的結果了。
問題5:遇到的還有這個問題,就是兩個結果是同樣,可是那個預測結果和實際結果顯示出來的包是不同的,也就是兩個數據類型不一樣,測試不經過。
問題5解決方案:這個在藍墨雲上進行了提問,班主任的解答是這樣,可是並無給出答案,如何修改,最後是看了下別人的最後的這個類型轉換,我也去查了查這個類型轉換,最後是修改了這個語句assertEquals(3.0+"+5.0i",String.valueOf(a.ComplexAdd(c)));
這樣就測試經過,實驗完成。查到的數據類型轉換,已附到參考連接中
問題6:藍墨雲實驗提交後,實驗三學長指出其中存在的錯誤,按照學號取餘20172302%6 = 2,我對應的應該是Boolean類,按照需求,Boolean類應對應Boolean類型的值。
問題6解決方案:這裏對學長提出的進行了改正,將數據類型改成了Boolean類型,完成修改,修改後截圖:
這周的實驗花了不少時間,幸虧書上的章節並非很難,那個完成的比較快,纔有時間去完成這些實驗,每次實驗都是比較費力勞神的感受,並且這一次一下留了5個實驗,感受任務量有點大,最主要的有的實驗本身怎麼作就是有錯誤,而別人那不須要調就能夠直接進行,這就比較心急,越作越慌,此次實驗作到後面還算好一點,但第四個實驗作了很久才弄出來.
後記:後面再翻看其餘同窗碼雲時,發現本身實驗四編寫的較爲麻煩一些,之後要注意簡化代碼,同時實驗三也是出現了錯誤,後作修改。