0.前言正則表達式
本次博客是記錄的第二階段的做業(5-8周)。編程
此階段主要爲繼承(圖形的繼承,抽象)。有了更多的實踐題,更加貼近現實,更多相對較爲困難的語法。框架
寫這篇博客時,已經完成了6次pta上的做業。相對來講,後面3次的困難比前面3次的困難要更大,耗費時間更久須要百度自學的東西也更多。函數
1.做業過程總結工具
(1)總結三次做業之間的知識迭代關係(3)做業過程當中遇到的問題及解決方法(5)對編程過程的嚴謹性的認識及教訓:單元測試
第4次做業的第一題我學會了trim或者repalce方法去空格。split方法來進行分割。也較多的使用正則表達式。測試
但沒有徹底的使用uml圖裏面的類和函數,致使主函數較麻煩,思路不清晰,錯一塊改一塊。出錯的時候不容易檢查。較爲明顯的不適應去面向對象。spa
第五次做業的第二題較爲有難度,是對String來進行求導。我認爲較難的地方是字符串的分割(在哪裏分割?怎麼分割?)字符串求導以後的組合也較爲困難。設計
在對輸入進行檢驗的時候,運用函數不當致使main函數有124行。最後提交的時候,正則表達式也屢次出現錯誤。(每次寫完正則表達式可使用https://regex101.com/進行檢測),提升找錯速度。對象
第六次pta更加的注重於抽象和繼承的使用。更多的使用List和list的包含的一些方法。(好比能夠用list.remove(0);移除list裏面的第零個單元),第一題和第二題排序的時候沒有用到collection.sort(),使輸出較爲麻煩。
(2)如何經過做業逐步理解面向對象的封裝性、繼承性與多態性三大技術特性:
封裝:封裝是面向對象編程的核心思想,將對象的屬性和行爲封裝起來,而將對象的屬性和行爲封裝起來的載體是類,類一般對用戶隱藏其實現的細節,這就是封裝的思想,在Java中一般經過創建一個實體類,用來封裝對象的屬性和行爲,經過setXxx()和getXxx()方法封裝起來
繼承性:簡單來講就是使子類的對象擁有父類的所有屬性和行爲,同時能夠增添本身的所特有的屬性和行爲。這樣能夠節省寫共同具備的屬性和方法代碼的時間,有利於代碼的複用,這就是繼承的基本思想。
多態性:簡單來講就是一個程序中同名的多個不一樣方法共存的狀況,一般使用方法的重載和重寫(也叫覆蓋)來實現類的多態性,多態性容許以統一的風格編寫程序,以處理種類繁多的已存在的類以及相關類,多態的實現並不依賴具體類,而是依賴抽象類和接口,在多態的機制中,父類一般會被定義爲抽象類,在抽象類中給出一個方法的標準,而不給出實現的具體過程,經過繼承父類來實現,而比抽象類更方便的是將抽象類定義爲接口。
(3)每次做業花費的時間比例:
第四次:第一題花費了2天左右。二,三題共花費一天。
第五次:第一題花費的時間爲半天。第二題花費時間爲2天。
第六次:第一題花費時間爲1天,第二題爲2個小時。
2.OO設計心得
(1)對面向對象三大技術特性之間關係的理解:封裝得話就是私有得屬性,可是外部又能夠用getter和setter來進行訪問,容易的修改類的內部實現。繼承是使用已經存在的類(父類),新類(子類)能夠增長更多的屬性或者方法,可以使用父類的功能,子類也擁有父類的private屬性和方法。多態就是指程序中定義的引用變量所指向的具體類型和經過該引用變量發出的方法調用在編程時並不肯定,而是在程序運行期間才肯定,即一個引用變量倒底會指向哪一個類的實例對象,該引用變量發出的方法調用究竟是哪一個類中實現的方法,必須在由程序運行期間才能決定。
(2)面向對象設計的基本原則理解(單一職責原則及「開-閉」原則):我認爲單一職責原則就是一個類作一件事(只有一種功能),只有一個東西能夠引發它的變化,若是職責過多的話,引發變化的緣由就越多,相互會產生影響。開放封閉原則的核心思想就是對抽象編程,而不對具體編程,由於抽象相對穩定。讓類依賴於固定的抽象,因此修改就是封閉的;而經過面向對象的繼承和多態機制,又能夠實現對抽象類的繼承,經過覆寫其方法來改變固有行爲,實現新的拓展方法,因此就是開放的。
(3)OO編程思惟的理解:把面向對象的這個東西當成一個實體,這個實體還有一些他的屬性和執行功能的方法,同時它能夠被子類繼承,同時繼續其餘更高級的父類。 這裏就包含了面向對象三大技術特性,封裝繼承多態性。
(4)類設計心得:輸入,處理,輸出。而「處理」又可由於不一樣的方法,職責去繼續設計其餘的類。
3.測試的理解與實踐
(1)測試對於編3.碼質量的重要性:我認爲是很是重要的,由於沒有測試個人認識就只是片面的,也許可能會對,可是我認爲大多數都是不全面的。並且寫代碼須要細心,一個小毛病就可能引起大問題,測試就是對於錯誤的處理有着一系列完善的措施。
(2)查閱資料,假設使用Junit進行程序的測試是否可行:可行,JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma創建,逐漸成爲源於Kent Beck的sUnit的xUnit家族中最爲成功的一個。 JUnit有它本身的JUnit擴展生態圈。多數Java的開發環境都已經集成了JUnit做爲單元測試的工具。也就是說junit就是別人寫好的單元測試框架,使用此框架能夠大大縮短代碼的測試時間和準確度。
4.課程收穫
寫了這麼多代碼後,我以爲應該先反覆讀題,反覆去看uml圖,理解每一個部分所在的職責。而後從大框架開始,再去處理小細節。
5.對課程的建議
(1)第三階段做業難度、題量的建議:我建議題量和第二次的差很少就好,難度不該加!!!!!!!!!!!
(2)課程內容講解方面的建議:每次都是寫完代碼纔講須要的語法和知識點,都已經百度完了,致使聽課不專心,容易走神。建議沒發pta以前就能夠進行講解。