第二階段學習總結


0.前言
主要說明本次博客針對的做業狀況java

第二階段的學習也結束了,在此作一些總結和回顧;相比第一階段的學習確實難度增長了,做業的分數也不太好,完成做業須要花的時間更多了。
1.做業過程總結
①總結三次做業之間的知識迭代關係;正則表達式

第四次做業中主要是正則表達式和繼承關係的運用,第五次做業就是關於類的繼承和多態性的運用了,第六次做業是類的繼承、多態性使用方法以及接口的應用。
②如何經過做業逐步理解面向對象的封裝性、繼承性與多態性三大技術特性;編程

對象的封裝性是指「將對象的成員隱藏起來,不讓其直接在類的外部訪問,要經過必定的方法對封裝起來的成員進行訪問控制」,在Java中一般經過創建一個實體類,用來封裝對象的屬性和行爲,經過set()和get()方法封裝起來,確實感受到更加便利。網絡

繼承性就是使子類的對象擁有父類的所有屬性和行爲,同時能夠增添本身的所特有的屬性和行爲。好比在圖形卡片排序遊戲這題中,就是將Circle類、Rectangle類和Triangle類都繼承自Shape類,在Shpae類中寫了求面積的方法,而後在子類中運用方法的重載,完成面積的求算;除面積外,Circle類中還能夠增添本身所特有的屬性:radius,方法:getRadius()和setRadius();而創造時能夠new一個Shape,而後經過Shpae來獲取到子類,更有結構層次感,使用更方便。框架

多態性就是一個java程序中同名的多個不一樣方法共存的狀況,一般使用方法的重載來實現類的多態性,多態的實現並不依賴具體類,而是依賴抽象類和接口。在多態的機制中,父類一般會被定義爲抽象類,在抽象類中給出一個方法,但不給出實現的具體過程,經過繼承父類來實現。好比第五次做業中的第一題圖形繼承與多態,在這題中,就是將Shape類定義爲抽象類,其餘的方法也定義爲抽象類,在子類中給與這些方法的具體實現。eclipse

 

③做業過程當中遇到的問題及解決方法學習

第四次做業中的第三題「圖形繼承」相對較簡單,可是仍是在這題上花了不少時間,由於一直拿不到滿分,後面發現是由於輸入爲0時輸出不正確,確實是本身考慮的疏忽了;「立方體對象測試」不過關,檢查後發現是由於本身box類中的getArea()方法中沒有寫上super調用父類,因此數據傳不過來,輸出一直爲0。還有第五次做業中的第二題「圖形繼承與多態」在eclipse中運行題目中所給的樣例輸出都是正確的,可是提交到pta上就一直是隻有八分,只有「數量非法」和「圖形數均爲0」兩個測試點過了,其餘的測試點所有提示答案錯誤,而後向室友尋求幫助,一開始也找了好久都沒有發現問題到底出在哪,花了很長很長時間在這裏,最後發現多是toString()方法的問題,因而在幾個子類中將toString()方法刪去,父類中定義的抽象方法toString()也刪去,而後再提交就是滿分了。測試


④每次做業花費的時間比例編碼

4:3:3
⑤對編程過程的嚴謹性的認識及教訓spa

第五次做業中的第二題「圖形繼承與多態」,由於是題目中所給的UML類圖中有toString()方法,就寫在Shape類中了,由於本身的輸出並無運用到toString()方法,因此在子類中的重載方法也是空的。而後去查閱相關資料發現:「子類重寫父類的方法的訪問權限要大於或者等於父類中被重寫的方法」,不然就會出錯,而個人子類中沒有加public,因此子類中的訪問權限小於父類中方法的訪問權限,pta中就會報錯。經過此次由於語法中結構的認知錯誤,而明白了java中繼承與承載方法的使用權限,雖然花費了不少時間,但最後有收穫就是好的。
2.OO設計心得
①對面向對象三大技術特性之間關係的理解

封裝將複雜的功能封裝起來,對外開放一個接口,簡單調用便可。而繼承能夠有效減小類的冗餘代碼,經過繼承來實現,讓類與類之間產生關聯,爲多態提供基礎,多態是一個接口,多個方法,都經過繼承實現的不一樣對象調用相同的方法,進而有不一樣的行爲。
②面向對象設計的基本原則理解(單一職責原則及「開-閉」原則)

單一職責原則「就一個類而言,應該僅有一個引發它變化的緣由」,單一職責就是每一個類實現一種功能,而且該功能應該由這個類徹底封裝起來,一個方法中並不會有不少很長的代碼,「開-閉」原則:對於擴展是開放的,對於修改是關閉的。這樣能夠有效的增長了代碼的複用性,老師老是和咱們強調代碼的複用性,寫的代碼複用性要強,體系結構更嚴謹,後面的一系列問題才更好解決。
③OO編程思惟的理解

編程的過程當中儘可能要遵照單一職責原則和「開-閉」原則,這樣寫出來的代碼效率才高,只有真正的理解了編程的思想,才能夠有效的編寫程序。
④類設計心得

學習到第二階段,慢慢開始理解了類的設計的重要性,這一階段的做業都是題目中給了參考UML類圖,已經幫咱們設計好了類,只要照着題目框架協就能夠了,相對仍是好一些的,不過據說下一階段題目中就不會再給UML類圖了,須要本身去設計類了,感受仍是挺有難度的,思惟不夠。
3.測試的理解與實踐
①測試對於編碼質量的重要性

有的代碼你編寫完成,仔細檢查也沒發現錯誤,邏輯好像也正確,可是若是不進行測試,在使用過程當中可能忽然就出現了bug,到時候再改就有些爲時過晚,並且讓人質疑代碼的質量,因此說測試對編碼質量是很重要的。
②查閱資料,假設使用Junit進行程序的測試是否可行

網絡上查詢了相關內容,發現使用Junit進行程序的測試是可行的。
4.課程收穫
總結這四周來在OO方面的教訓及收穫

學習到了類的封裝、繼承和多態的使用,這一階段學習的java知識能夠簡單的運用到一些實例當中。編程過程當中思惟必定要嚴謹,腦中要構造出程序完整的體系結構,這樣寫出來的程序才能夠達到要求。找bug的過程雖然很痛苦,可是當看到pta上提交出來的一列紅色的答案正確內心太舒服了,仍是有點小小的成就感的。
5.對課程的建議
①第三階段做業難度、題量的建議

但願第三階段難度不要加太大,沒有UML圖我感受就挺有難度的了,可能要花費更多的時間了。題量的話兩三題就挺好的,不要再加多了。
②課程內容講解方面的建議

老師講解的挺好的,也挺容易明白,就是有時候但願講解了長時間後,能夠休息一下,緩緩;還但願老師能夠多講講類的設計,如何想到這樣設計,怎麼去實現這個設計相關的內容。

相關文章
相關標籤/搜索