20202307 實驗三 《面向物件程式設計》實驗報告
20202307 2021-2022-1 《資料結構與面向物件程式設計》實驗三報告
課程:《程式設計與資料結構》
班級: 2023
姓名: 範宇涵
學號:20202307
實驗教師:王志強
實驗日期:2021年10月7日
必修/選修: 必修
1.實驗內容
參考《實驗二 Java面向物件程式設計》:http://www.cnblogs.com/rocedu/p/6736847.html
實驗內容
下載安裝並使用IDEA,完成下面實驗(https://www.cnblogs.com/rocedu/p/6371315.html)。
-
初步掌握單元測試和TDD
-
理解並掌握面向物件三要素:封裝、繼承、多型
-
初步掌握UML建模
-
完成藍墨雲上 (1)-(5)實驗。
(1)參考http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 完成單元測試的學習
(2)參考http://www.cnblogs.com/rocedu/p/4837092.html,以TDD的方式研究學習StringBuffer
(3)參考https://www.cnblogs.com/rocedu/p/4472842.html,對設計模式示例進行擴充,體會OCP原則和DIP原則的應用,初步理解設計模式
(4)以TDD的方式開發一個複數類Complex
(5)使用StarUML對實驗二中的程式碼進行建模
2. 實驗過程及結果
2.1單元測試
package Exp3_1; 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 "錯誤"; } } }
package Exp3_1;
import org.junit.Assert;
import org.junit.Test;
/**
* @author 20202307
*/
public class MyUtilTest {
@Test
public void testNormal() {
Assert.assertEquals("不及格", MyUtil.percentage2fivegrade(55));
Assert.assertEquals("及格", MyUtil.percentage2fivegrade(65));
Assert.assertEquals("中等", MyUtil.percentage2fivegrade(75));
Assert.assertEquals("良好", MyUtil.percentage2fivegrade(85));
Assert.assertEquals("優秀", MyUtil.percentage2fivegrade(95));
}
@Test
public void testExceptions() {
Assert.assertEquals("錯誤", MyUtil.percentage2fivegrade(-55));
Assert.assertEquals("錯誤", MyUtil.percentage2fivegrade(105));
}
@Test
public void testBoundary() {
Assert.assertEquals("不及格", MyUtil.percentage2fivegrade(0));
Assert.assertEquals("及格", MyUtil.percentage2fivegrade(60));
Assert.assertEquals("中等", MyUtil.percentage2fivegrade(70));
Assert.assertEquals("良好", MyUtil.percentage2fivegrade(80));
Assert.assertEquals("優秀", MyUtil.percentage2fivegrade(90));
Assert.assertEquals("優秀", MyUtil.percentage2fivegrade(100));
}
}
2.2以TDD的方式研究學習StringBuffer
2.3對設計模式示例進行擴充,體會OCP原則和DIP原則的應用
2.4以TDD的方式開發一個複數類Complex
2.5對上一實驗程式碼進行建模
3. 實驗過程中遇到的問題和解決過程
- 問題1:控制檯輸出中文亂碼
- 問題1解決方案:在IDEA安裝目錄下找到idea.exe檔案,編輯檔案,在檔案內容的末尾新增
-Dfile.encoding=UTF-8
。
找到專案目錄下的.idea的資料夾,開啟檔案encodings.xml,將其中除UTF-8外的程式碼刪除。
執行成功!!
其他(感悟、思考等)
隨著課程學習不斷深入,需要掌握的知識的深度和難度都在增加。本次實驗過程中可謂“一步一個坎”,程式碼看似完全正確,看起來與標準示例也相差無兩,但執行起來總是不斷地報錯,一個又一個提示執行錯誤的彈出框讓人倍受折磨。明明是完全根據教程的規範步驟操作,可IDEA給出的反應總是不按套路出牌。比如中文亂碼的問題,我按照各個網站的帖子試了很多種方法,才終於解決掉這個棘手的問題。每一步的操作、每一句程式碼的編寫都需要充分理解操作背後的原理,真正將知識研習透徹,闖過提示錯誤的一個個難關,才能走向最後的勝利。