標籤:
課程:Java程式設計實驗 班級:1352 姓名: 於佳心 學號:20135206
成績: 指導教師:婁嘉鵬 實驗日期及時間:2015.05.05
座位號: 必修/選修:選修 實驗序號:02
實驗名稱:Java開發環境的熟悉
實驗裝置:
實驗儀器:
實驗內容:
1. 初步掌握單元測試和TDD
2. 理解並掌握物件導向三要素:封裝、繼承、多態
3. 初步掌握UML建模
4. 熟悉S.O.L.I.D原則
5. 瞭解設計模式
步驟 |
耗時 |
百分比 |
需求分析 |
20min |
10% |
設計 |
50min |
25% |
代碼實現 |
50min |
25% |
測試 |
30min |
10% |
分析總結 |
50min |
40% |
實驗步驟:
(一)單元測試
(1)三種代碼
虛擬碼:虛擬碼與具體程式設計語言無關,不要寫與具體程式設計語言文法相關的語句
產品代碼:將虛擬碼用特定程式設計語言翻譯
測試代碼:證明自己的代碼沒有問題
虛擬碼和產品代碼
簡單測試
比較完整的測試
對於錯誤輸入的測試,發現問題!
解決問題
對於邊緣數的測試,發現問題!
解決問題,得到完好的程式
(2)TDD
TDD的一般步驟如下:
- 明確當前要完成的功能,記錄成一個測試清單
- 快速完成編寫針對此功能的測試案例
- 測試代碼編譯不通過(沒產品代碼呢)
- 編寫產品代碼
- 測試通過
- 對代碼進行重構,並保證測試通過(重構下次實驗練習)
- 迴圈完成所有功能的開發
建立Source Folder
建立JUnit Test Case
輸入測試代碼,有錯誤(因為還沒有產品代碼呢)
測試條是紅的,失敗
寫出完整的代碼,測試條是綠的,測試通過
在不同方面進行測試,均通過
(二)物件導向三元素
(1)抽象
(2)封裝、繼承和多態(三元素)
Animal類(最終程式)
Dog類(最終程式)
Cat類(最終程式)
測試類別(最終程式)
實驗介紹了Umbrello使用方法:
建立一個名為Dog的小方框(類)
在Display中刪去Public Only
建立私人的功能
建立公有功能
最終完整版,與上面的程式對應,帶三角的直線直線父類,表示繼承
(三)設計模式初步
S.O.L.I.D類設計原則:
- SRP(Single Responsibility Principle,單一職責原則)
- OCP(Open-Closed Principle,開放-封閉原則)
- LSP(Liskov Substitusion Principle,Liskov替換原則)
- ISP(Interface Segregation Principle,介面分離原則)
- DIP(Dependency Inversion Principle,依賴倒置原則)
模式可以看作對一個問題可複用的專家級解決方案
這裡面最重要的是設計模式,在物件導向中設計模式的地位可以和面向過程編程中的資料結構的地位相當。
(四)使用TDD的方式設計並實現複數類Complex
虛擬碼:
產品代碼:
測試代碼:
測試結果:通過計算,測試通過(想不到更好的測試方法了)
單元測試的好處:
1、經過單元測試的代碼,品質能夠得到保證
2、單元測試發現的問題很容易定位。
3、修改代碼犯的錯,經過單元測試易發現
4、單元測試可以在早期就發現效能問題
本次實驗中遇到的問題:
1.經常一不小心使用中文字元,導致編譯失敗
2.貓和狗的那個程式,剛開始怎麼都編譯不成功,後來想到把Cat類和Dog類作為單獨的檔案,編譯成功
3.複數的定義,涉及到int和double的問題,剛開始定義的亂七八糟,後來經過反覆錯誤修正,統一用int,並將除法的值也int化,重要解決
4.還是不太習慣虛擬機器,好多按鍵都找不到,所以除了umbrello之外都是在windows裡完成(虛擬機器比以前好用了,可以動了,但因為網速問題,還是不流暢)
實驗收穫:
這次實驗的難度明顯比上次加大,花費時間也長了好多,好在實驗指導裡的步驟很詳細,還介紹了好多知識,前兩個實驗論代碼都是簡單的內容,但涉及了TDD,掌握了新的編程技能,umbrello軟體有點好玩,最後那個程式難度比較大,好久才出來(複數是什麼本來早就忘記了,計算方法也忘得差不多了,到網上現找資料補習)
實驗二 Java物件導向程式設計