20172329 2017-2018-2 《程序設計與數據結構》實驗二報告


20172329 2017-2018-2 《程序設計與數據結構》實驗二報告

課程:《程序設計與數據結構》
班級: 1723
姓名: 王文彬
學號:20172329
實驗教師:王志強
實驗日期:2018年4月21日
必修/選修: 必修

1.實驗內容

  1. 初步掌握單元測試和TDD
  2. 理解並掌握面向對象三要素:封裝、繼承、多態
  3. 初步掌握UML建模
  4. 熟悉S.O.L.I.D原則
  5. 了解設計模式
  6. 完成實驗。

2. 實驗過程及結果

一、理解內容
首先,我根據老師所給的幾篇博客中大致了解了什么是TDD測試,什么是S.O.L.I.D原則並且基於課本更加深層次的對封裝、繼承、多態的內容進行學習;之后,根據老師所給的例子和博客的相關步驟就開始了實驗。

二、實驗第一個提交點內容及其過程

參考實驗二 完成單元測試的學習
提交最后三個JUnit測試用例(正常情況,錯誤情況,邊界情況)都通過的截圖,截圖上要有畫圖加水印,輸入自己的學號
本提交點考查JUnit會不會使用,測試用例至少要包含正常情況,錯誤情況,邊界情況的測試

第一個實驗因為是第一次接觸到TDD測試,一切都顯的那么陌生,感覺需要下載的東西很多;
1、准備階段:首先,使用IDEA在自己的根目錄下建立了一個test的測試文件夾,並且將它定義為了源目錄,

這個目錄是為了可以將自己已經編好的程序可以進一步進行測試所對應的測試文件夾。
之后,緊接着下載了一個叫做JUnit的插件,如果想要完成測試,這個插件必不可少,掌握核心科技!!
我們的准備工作也就到此結束了,接下來就要開始我們的實驗了;
2、實驗開始:
首先將自己想要測試的類編寫好,在第一行的位置左右,會出現一個形似下圖的“小燈泡”並且會出現字樣:創建測試。

點擊一下那個“創建測試”后,test目錄中就會出現一個測試程序,之后我們就可以開始我們的測試之路了,首先,我之前已經寫好的一個被測試程序在待命,為的就是現在,測試程序需要繼承被測試類,並且編寫測試對象,在這里我們就需要另外一個很關鍵的方法叫做assertEquals,其作用就是為了去對比我們所期待的值和預計的值是否相同(ps:此處的相同不僅要內容相同,而且屬性也要相同),相同才會顯示一條綠線,表示通過,如同下圖:

在測試通過以后,再加上自己的學號水印,也就算是第一個實驗結束了。

三、實驗第二個提交點內容及其過程

參考 積極主動敲代碼,使用JUnit學習Java
以 TDD的方式研究學習StringBuffer
提交你的單元測試用例和測試通過的截圖,截圖要加上學號水印
測試自己會不會寫JUnit測試用例

在有了第一個實驗的基礎上,開始我的第二個實驗也變得不是很困難;
首先,繼續去看要求里所給出的博客,根據要求開始進行對被測試代碼的編寫:

完成了之后,繼續實驗一的步驟,點擊“創建測試”,開始編寫測試類:

注:在編寫測試類的時候,要記得寫清楚測試代碼是什么,就是圖中“@test”后面的代碼,@test不能丟。

四、實驗第三個提交點內容及其過程

參考實驗二 Java面向對象程序設計
對設計模式示例進行擴充,體會OCP原則和DIP原則的應用,初步理解設計模式
用自己的學號%6進行取余運算,根據結果進行代碼擴充:
0:讓系統支持Byte類,並在MyDoc類中添加測試代碼表明添加正確,提交測試代碼和運行結的截圖,加上學號水印
1:讓系統支持Short類,並在MyDoc類中添加測試代碼表明添加正確,提交測試代碼和運行結的截圖,加上學號水印
2:讓系統支持Boolean類,並在MyDoc類中添加測試代碼表明添加正確,提交測試代碼和運行結的截圖,加上學號水印
3:讓系統支持Long類,並在MyDoc類中添加測試代碼表明添加正確,提交測試代碼和運行結的截圖,加上學號水印
4:讓系統支持Float類,並在MyDoc類中添加測試代碼表明添加正確,提交測試代碼和運行結的截圖,加上學號水印
5:讓系統支持Double類,並在MyDoc類中添加測試代碼表明添加正確,提交測試代碼和運行結的截圖,加上學號水印

這道題應該是對於S.O.L.I.D原則最早的引入,所以當我第一次看到這道題目的時候,稍微有點懵,感覺好多啊,第一個想法就是前面兩個不是很難,這個肯定就開始增加難度了,果不其然,雖然對於代碼的敲入模仿着老師的例子敲其實就可以完成任務,但這終究需要弄懂,所以不如先看懂吧,於是就開始了對老師博客的仔細研讀;老師的博客里進行了兩次大的改動,老師舉例“客戶需要支持Float類,因為基於S.O.L.I.D原則,Document類不能做出改變,所以就需要用到設計模式了,也就引入了”設計工廠“這個概念。借用老師的圖說明一下

感覺這個圖還是很明細的;
ps:老師截圖里明明是實現int類,誤導我們這些小朋友.....

這是我實現Double類的實驗圖

五、實驗第四個提交點內容及其過程

提交:單元測試代碼和運行成功截圖及碼雲上代碼鏈接,截圖要加上學號水印
任務:以TDD的方式開發一個復數類Complex,要求如下:

 // 定義屬性並生成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)

在拿到這一道實驗要求的時候,其實是發覺需要一些套路,並且編寫復數的四則運算;
首先,按照要求編寫上面的集中方法以及定義變量,進行相關的計算,然后開始測試:

六、實驗第五個提交點內容及其過程

使用StarUML對實驗二中的代碼進行建模,發類圖的截圖,加上學號水印
類圖中只少兩個類
類,繼承,接口實現,組合在UML中表達
通過軟件

進行UML圖制作;

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

-問題1:在編寫復數類並且進行測試的時候,雖然內容相同,但是總是顯示不通過?

  • 問題1解決方法:
    第一種,在藍墨雲里,學長說在后面加上.toString就可以了,因為兩個返回的類型不一樣,試過以后的確可以;
    第二種,我自己看了一篇別人的博客以后,關於對比String幾種類型的博客,發現用String.valueOf也是可以的;

其他(感悟、思考等)

感覺時間越來越少,有時候自己在敲代碼的時候,很茫然,不知道為何敲,其目的是什么,真的現在在班里呈現一種虛假的繁榮的感覺。

參考資料

藍墨雲班課
積極主動敲代碼,使用JUnit學習Java
實驗二 Java面向對象程序設計
String、String.valueOf、toString 它們三者的區別總結
實驗二《Java面向對象程序設計》的一點說明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM