1.學號:201421123099
2.博客連接html
1.學號:201421123100
2.博客連接(本博客)git
1.在提取計算模塊上,楊愛清同窗扮演領航員的角色,楊立鑫同窗扮演駕駛員。
楊愛清同窗提出了提取出來的類應該包含如下幾個函數:
- add() (加)
- sub() (減)
- mul() (乘)
- div() (除)
- compare() (分數大小比較)
- GCD() (計算最大公約數)
- CreatFrac() (建立隨即分數)
楊立鑫同窗根據根據同伴所說,在原程序中提取出了計算模塊,並單首創建了一個類Fraction。(下方有Fraction代碼)編程
2.在單元測試上,楊立鑫同窗扮演領航員的角色,楊愛清同窗扮演駕駛員。
楊立鑫同窗提出,經過單元測試代碼,要測試加法是否能正確工做,加減乘除功能,測試計算類對於各類參數的支持。針對提取出的模塊楊愛清同窗使用junit選擇並構建了FractionTest類.dom
一、經過單元測試代碼,測試加法是否能正確工做;ide
二、經過單元測試代碼,測試加減乘除功能。函數
三、經過單元測試代碼,測試計算類對於各類參數的支持:單元測試
- 輸入是有錯誤的,例如 「1 ++ 2」,學習
- 在數值範圍是 -1000 .. 1000 的時候,傳進去 「10000 + 32768」,測試
- 或者是 「 248 / 0」 怎麼辦?this
- 怎麼告訴函數的調用者 「你錯了」? 把返回的字符串定義爲 「-1」 來表示?
- 那麼若是真的計算結果是 「-1」 又怎麼處理呢?
四、經過增量修改的方式,改進程序, 完成對各類錯誤狀況的處理。
經過產生隨機數方法,反覆測試全部單元;
單元測試代碼:
package test; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public class FractionTest { Fraction fraction=new Fraction(); Fraction f1 = fraction.CreatFrac(); Fraction f2 = fraction.CreatFrac(); @Before public void setUp() throws Exception { } @Test public void testFraction() { } @Test public void testAdd() { fraction.add(f1, f2); } @Test public void testSub() { fraction.sub(f1, f2); } @Test public void testMul() { fraction.mul(f1, f2); } @Test public void testDiv() { fraction.div(f1, f2); } @Test public void testCompare() { fraction.compare(f1, f2); } @Test public void testCreatFrac() { } }
PSP2.1 | Personal Software Process Stages | Time (%) Senior Student(/hour) | Time (%)(/hour) |
· Planning | 計劃 | 2 | 1 |
· Estimate | 估計這個任務須要多少時間 | 15 | 13 |
· Analysis | 需求分析 (包括學習新技術) | 2 | 1.5 |
· Coding Standard | 代碼規範 | 0.5 | 0.5 |
· Design | 具體設計 | 1.5 | 1 |
· Coding | 具體編碼 | 10 | 7 |
· Test | 測試(自我測試,修改代碼,提交修改) | 2 | 1.5 |
Reporting | 報告 | 1 | 2 |
由於對GIT的不熟悉不熟練浪費了不少時間。常常提交不成功。可是在老師的幫助下,仍是成功的提交了代碼,並基本的學會了使用,收穫仍是蠻多的。
結對編程的幾回做業都是我和愛清一塊兒完成,常常一塊兒約圖書館,一塊兒探討,互相學習。而且在領航員與駕駛員的角色切換中,收穫了合做的快樂。一塊兒我都是喜歡什麼事情什麼程序都本身來作,這樣才能更加清楚地瞭解哪部分代碼是作什麼,很是怕和別人合做後不清楚對方作的什麼,不利於本身地編程。當合做而且扮演好角色才發現,合做不是兩我的孤立地獨自地各敲各地代碼,而是在一人領航指揮,一人動手操做地模式下相互促進,並且增長了團隊之間地交流,可以更加完善的實現項目。
通過這兩次編程,我以爲可以爲我將來進入社會進行團隊協做時提供了思路與基礎。
1.碼雲地址
2.小組成員探討照片
3.特別鳴謝張敏老師~有問題問她幾乎都是秒回,並且特別耐心詳細地回答個人每一個問題~有圖有真相~
4.Fraction代碼
package test; public class Fraction { private int fenzi; private int fenmu; public Fraction() { super(); } public Fraction(int fenzi, int fenmu) { super(); this.fenzi = fenzi; this.fenmu = fenmu; this.simplify(fenzi, fenmu); //在構造函數中直接化簡分數(感受此方法欠妥) } public static Fraction add(Fraction f1, Fraction f2) { int fz1 = f1.getFenzi(); int fz2 = f2.getFenzi(); int fm1 = f1.getFenmu(); int fm2 = f2.getFenmu(); Fraction f = new Fraction(fz1 * fm2 + fm1 * fz2, fm1 * fm2); return f; }//加法運算 public static Fraction sub(Fraction f1, Fraction f2) { int fz1 = f1.getFenzi(); int fz2 = f2.getFenzi(); int fm1 = f1.getFenmu(); int fm2 = f2.getFenmu(); Fraction f = new Fraction(fz1 * fm2 - fm1 * fz2, fm1 * fm2); return f; }//減法運算 public static Fraction mul(Fraction f1, Fraction f2) { int fz1 = f1.getFenzi(); int fz2 = f2.getFenzi(); int fm1 = f1.getFenmu(); int fm2 = f2.getFenmu(); Fraction f = new Fraction(fz1 * fz2, fm1 * fm2); return f; }//乘法運算 public static Fraction div(Fraction f1, Fraction f2) { int fz1 = f1.getFenzi(); int fz2 = f2.getFenzi(); int fm1 = f1.getFenmu(); int fm2 = f2.getFenmu(); Fraction f = new Fraction(fz1 * fm2, fm1 * fz2); return f; }//除法運算 public static boolean compare(Fraction f1, Fraction f2) { int fz1 = f1.getFenzi(); int fz2 = f2.getFenzi(); int fm1 = f1.getFenmu(); int fm2 = f2.getFenmu(); if (fz1 * fm2 >= fz2 * fm1) { return true; } else { return false; } }//比較兩分數的大小 public static int GCD(int m, int n) { while (true) { if ((m = m % n) == 0) { return n; } if ((n = n % m) == 0) { return m; } } }//計算最大公約數 public void simplify(int fenzi, int fenmu) { int GCD = GCD(fenzi, fenmu); this.fenzi = fenzi / GCD; this.fenmu = fenmu / GCD; }//化簡分數 @Override public String toString() { if (fenzi == 0) { return 0 + ""; } else if (fenzi % fenmu == 0) { return fenzi / fenmu + ""; } else { return fenzi + "/" + fenmu; } }//改寫toString,輸出爲分數形式 public int getFenzi() { return fenzi; } public void setFenzi(int fenzi) { this.fenzi = fenzi; } public int getFenmu() { return fenmu; } public void setFenmu(int fenmu) { this.fenmu = fenmu; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + fenmu; result = prime * result + fenzi; return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } Fraction other = (Fraction) obj; if (fenmu != other.fenmu) { return false; } if (fenzi != other.fenzi) { return false; } return true; } public static Fraction CreatFrac() { int fz, fm; fz = (int) (0 + Math.random() * (100 - 0 + 1));//分子取0--100的隨機數 fm = (int) (1 + Math.random() * (10 - 1 + 1));//分母取1--100的隨機數 Fraction frac = new Fraction(fz, fm); return frac; }//建立隨機分數 }