天天看點

20202304 實驗三 《資料結構與面向對象程式設計》實驗報告

 # 20202304 2021-2022-1 《資料結構與面向對象程式設計》實驗報告

課程:《程式設計與資料結構》

班級: 2023

姓名:何銳

學号:20202304

實驗教師:王志強

實驗日期:2021年9月30日

必修/選修: 必修

## 1.實驗内容

下載下傳安裝并使用IDEA,完成下面實驗(https://www.cnblogs.com/rocedu/p/6371315.html)。

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

2. 了解并掌握面向對象三要素:封裝、繼承、多态

3. 初步掌握UML模組化

4. 完成藍墨雲上 (1)-(5)實驗。

## 2.實驗過程及結果

  即雲班課上的實驗第(1)、(2)部分,着重于介紹程式設計和程式設計的基礎。程式設計前要把幹什麼、如何幹想清楚才能把程式寫對、寫好。

想用程式解決問題時,要會寫三種碼:

  • 僞代碼
  • 産品
  • 代碼
  • 測試代碼

僞代碼即易了解的人類語言,不涉及任何具體程式設計語言文法相關的語句。

從意圖層面來解決問題,

産品代碼最自然的、最好的注釋。

産品代碼即具體程式設計語言去實作功能。

測試代碼則負責查找Bug和驗證程式代碼有無問題,程式員對類實作的測試便叫做單元測試。

以下為(1)的例子:

僞代碼:

百分制轉五分制:
   如果成績小于60,轉成“不及格”
   如果成績在60與70之間,轉成“及格”
   如果成績在70與80之間,轉成“中等”
   如果成績在80與90之間,轉成“良好”
   如果成績在90與100之間,轉成“優秀”
   其他,轉成“錯誤”             

産品代碼:

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

}

測試結果:

20202304 實驗三 《資料結構與面向對象程式設計》實驗報告

單元測試就完成了,一個暫時沒有什麼大問題的程式也就寫好了。

然後,是學習TDD即Test Driven Development,測試驅動開發

現在的思路恰好相反,我們思路是先寫測試代碼,再寫産品代碼。

TDD的一般步驟如下:

  • 明确目前要完成的功能,記錄成一個測試清單
  • 快速完成編寫針對此功能的測試用例
  • 測試代碼編譯不通過(沒産品代碼呢)
  • 編寫産品代碼
  • 測試通過
  • 對代碼進行重構,并保證測試通過(重構下次實驗練習)
  • 循環完成所有功能的開發

下面是例子(通過TDD來學習StringBuffer):

測試:

程式:

20202304 實驗三 《資料結構與面向對象程式設計》實驗報告

  (1)封裝與繼承

    封裝:使用private關鍵字将類的某些資訊隐藏在類内部,不允許外部程式直接通路,通過該類提供的getter、setter方法通路。

    繼承:子類繼承父類的屬性和方法,可以修改添加。

(需注意:一個子類隻能繼承一個父類,但可以疊加繼承)

有以下兩個程式分别展現繼承和多态

碼雲路徑:https://gitee.com/besti2023javads/hr20202304.git(有需要自取)

對一個Animal類做了簡單的模組化:

20202304 實驗三 《資料結構與面向對象程式設計》實驗報告

4. 完成藍墨雲上 (1)-(5)實驗

如圖:

20202304 實驗三 《資料結構與面向對象程式設計》實驗報告

(1)任務詳情

參考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 
參考http://www.cnblogs.com/rocedu/p/6736847.html

送出最後三個測試用例都通過的截圖,截圖上要有畫圖加水印,輸入自己的學号。      
20202304 實驗三 《資料結構與面向對象程式設計》實驗報告

(2)任務詳情

參考 積極主動敲代碼,使用JUnit學習Java (http://www.cnblogs.com/rocedu/p/4837092.html)
參考http://www.cnblogs.com/rocedu/p/6736847.html
以 TDD的方式研究學習StringBuffer,送出你的單元測試用例和測試通過的截圖,截圖要加上學号水印。      
20202304 實驗三 《資料結構與面向對象程式設計》實驗報告
20202304 實驗三 《資料結構與面向對象程式設計》實驗報告

3)任務詳情

實驗三 Java面向對象程式設計(http://www.cnblogs.com/rocedu/p/4472842.html)

參考http://www.cnblogs.com/rocedu/p/6736847.html

對設計模式示例進行擴充,體會OCP原則和DIP原則的應用,初步了解設計模式
用自己的學号%6進行取餘運算,根據結果進行代碼擴充:
0:讓系統支援Byte類,并在MyDoc類中添加測試代碼表明添加正确,送出測試代碼和運作結的截圖,加上學号水印
1:讓系統支援Short類,并在MyDoc類中添加測試代碼表明添加正确,送出測試代碼和運作結的截圖,加上學号水印
2:讓系統支援Boolean類,并在MyDoc類中添加測試代碼表明添加正确,送出測試代碼和運作結的截圖,加上學号水印
3:讓系統支援Long類,并在MyDoc類中添加測試代碼表明添加正确,送出測試代碼和運作結的截圖,加上學号水印
4:讓系統支援Float類,并在MyDoc類中添加測試代碼表明添加正确,送出測試代碼和運作結的截圖,加上學号水印
5:讓系統支援Double類,并在MyDoc類中添加測試代碼表明添加正确,送出測試代碼和運作結的截圖,加上學号水印

  對設計模式示例擴充,Float型      
20202304 實驗三 《資料結構與面向對象程式設計》實驗報告
4)任務詳情      
送出:單元測試代碼和運作成功截圖及碼雲上代碼連結,截圖要加上學号水印

參考http://www.cnblogs.com/rocedu/p/6736847.html

任務:以TDD的方式開發一個複數類Complex,要求如下:

// 定義屬性并生成getter,setter
double RealPart;
double ImagePart;

      
20202304 實驗三 《資料結構與面向對象程式設計》實驗報告
20202304 實驗三 《資料結構與面向對象程式設計》實驗報告

(5)任務詳情

使用[WhiteStarUML](http://whitestaruml.sourceforge.net/)對實驗二中的代碼進行模組化,發類圖的截圖,加上學号水印。
參考http://www.cnblogs.com/rocedu/p/6736847.html      
20202304 實驗三 《資料結構與面向對象程式設計》實驗報告

## 3. 實驗過程中遇到的問題和解決過程

1.junit一開始總是找不到,也不會使用。

後來通過課堂和b站課堂學會了使用方法。

2.複數程式自己寫了好多遍,不太能展現,也老是出錯。

後通過學習學長,并在老師的檔案和課件幫助下完成複數電腦。

3.不會使用starUML

後通過學習b站和婁老師的文章學會。

繼續閱讀