課程:《程序設計與數據結構》
班級: 1723
姓名: 譚鑫
學號:20172305
實驗教師:王志強
實驗日期:2018年4月18日
必修/選修: 必修html
1.初步掌握單元測試和TDDjava
2.理解並掌握面向對象三要素:封裝、繼承、多態編程
3.初步掌握UML建模設計模式
4.熟悉S.O.L.I.D原則數據結構
5.瞭解設計模式單元測試
面向對象程序設計-1:經過實驗一的學習與嘗試,講述的是僞代碼 -> 產品代碼 -> 測試代碼
的編寫過程,對於簡單的程序,咱們能夠在腦中想一想就行了,可是針對複雜的代碼,PP7.四、PP8.一、PP8.六、PP9.3(這個就是在找共同特徵和每個所特有的性質,須要寫寫)等的編寫過程都須要事先在寫寫僞代碼之類的,以前也寫過僞代碼,可是本身寫的都含有java的語句或是修飾符之類的,而且也畫過圖來進行設計。經過學習,發現僞代碼的編寫,能夠算做是本身程序的設計圖紙了。使用JUnit對一個程序進行正常狀況、錯誤狀況、邊界狀況
三種的測試。系統的闡述了一個程序編寫的標準過程,雖然有些繁瑣,可是非常有用。學習
- 若是JUnit報告了測試沒有成功,它會區分失敗(failures)和錯誤(errors)。失敗是你的代碼中的assert方法失敗引發的;而錯誤則是代碼異常引發的,例如ArrayIndexOutOfBoundsException。
面向對象程序設計-2(「測試驅動開發」(TDD)):基於TDD,咱們不會出現過分設計的狀況,需求經過測試用例表達出來了,咱們的產品代碼只要讓測試經過就能夠了。很大程度的節省了相似供大於需的問題,同時也便利了編寫產品代碼。測試
- TDD的目標是"Clean Code That Works"
- TDD的slogan是"Keep the bar green, to Keep the code clean"
面向對象程序設計-3:spa
- SRP(Single Responsibility Principle,單一職責原則)
- OCP(Open-Closed Principle,開放-封閉原則)
- LSP(Liskov Substitusion Principle,Liskov替換原則)
- ISP(Interface Segregation Principle,接口分離原則)
- DIP(Dependency Inversion Principle,依賴倒置原則)
OCP原則是一種相對的開放與封閉,抽象和繼承以及面向接口編程的方式能夠解決。其他四個的理解不是很清楚,查過資料也不是特別懂。因此,但願能在之後編寫的項目裏繼續經過實踐的方式繼續學習。設計
面向對象程序設計-4:以TDD方式進行編寫一個複數的運算,這道題在編寫測試代碼的時候很神奇的出現一堆紅線,本身照着給的參考做業模仿,結果就是照葫蘆畫瓢,忽略了這個測試代碼是基於本身編寫的代碼產物,可是這個代碼是如何編寫的,和參考做業的源代碼是否一致就很差說了。因此,個人模仿只是淺層次的模仿,並無深刻的編寫。因此,我參照着個人本身的代碼進行編寫測試代碼,根據紅線的警示進行修改。
面向對象程序設計-5:StarUML的使用,在第四章已經簡單的講述了,是本身沒有仔細看就問問題,結果向老師問了一個特別特別簡單的問題--就是第二個框裏和第三個框裏如何放內容的問題(其實是本身英語詞彙不夠致使的,下次會注意的)其實,UML的做用是以圖文結合的方式進行的與僞代碼起到相似的做用。UML類圖中的第一個框是類名,第二個框是屬性(數據),第三個框是操做(方法),在下面的實驗過程遇到的問題中就有體現出本身當時對知識的不夠透徹。
問題1:UML類圖中的屬性和方法
問題1的解決方案:針對這個問題,本質上是本身沒有理解英文單詞形成的,致使本身在實驗上交的第一幅圖片有問題,沒有分清定義的是屬性仍是實現的方法。好在本身在寫關於PP9.3的時候作了一個UML類圖(估計是有了這張照片才使本身成績沒有爲零)。
問題2:複數的運算
問題2的解決方案:好在老師在佈置做業的同時給了優秀提交做業樣板,本身照着模仿,可是就是一直有紅線問題。問過老師,結果是本身的測試類照着模仿,可是本身編寫的類沒有照着圖片進行模仿,因此致使本身照葫蘆畫瓢還沒畫對。
實驗二的五個實驗,學習的內容不少,尤爲是那幾個原則的問題,還是雲裏霧裏的,TDD和單元測試能初步掌握,UML類圖的編寫是這幾個實驗相對簡單的一個,會在之後的學習中不斷的掌握和深刻的理解。