JAVA第三次blog總結

TMZK發表於2020-06-07

JAVA第三次blog總結

0.前言  

這是我們在部落格園上第三次寫部落格,也是本學期最後一次的JAVA學習大總結。現在我們的JAVA已經接近尾聲了,對於程式設計思想和方法的改變依舊是難點,但是經過這一段時間的學習還是讓我在OOP思想的理解上有了很大的進步。特別是經過C語言的補考之後我也更加體會到了程式導向程式設計和麵向物件程式設計的不同,也就是OPPOOP的不同。在最後這篇blog中將針對最近的作業和JAVA的整體學習進行總結。

 

1.作業過程總結

剛剛接觸JAVA卻還是以c語言的方式在程式設計,現在整體回看這幾次作業,發現最開始的時候我寫的程式裡雖然是使用的JAVA程式設計的用法,但是絲毫看不到物件,方法,屬性,類的痕跡,甚至我的腦子裡都根本沒用那個概念。只是一味的輸入輸出,程式可讀性很差,也根本沒有複用性。只要稍微改了改題裡的要求,這程式裡的東西全都要徹底改動,很繁瑣。但是再看後面幾次的PTA作業,已經能夠看到完整的物件,方法,屬性,類,甚至對於物件導向程式設計的三大技術特性也有了很深的理解即為封裝性、繼承性與多型性。對於程式的可讀性也有了不錯的改善。而且對於類的學習和認識也讓我程式的複用性大大提高。

最後的三次作業也是難度最大的三次作業,這三次作業分別是雨刷程式功能擴充套件設計,統計Java程式中關鍵詞的出現次數,表示式求值,考察了List、Set和Map的介面應用,正規表示式的應用,以及算符棧,運算元棧的知識。

這幾次作業都做的不好,特別的最後兩次,也因為之前學的不紮實,又是因為正規表示式不正確,不能得出正確的輸出樣式,而丟掉幾十分。對於雨刷程式功能擴充套件設計這道題在程式重構之後就因為迴圈和正規表示式不正確而不能正確控制升檔和降檔,在經過大量時間的改正之後勉強實現了基本的功能,但是並沒有滿分,第二行無效輸入的測試點還是沒有通過。對於List、Set和Map的介面應用和算符棧,運算元棧的知識我學的不是很好,上課就聽得一頭霧水,在CSDN裡找帖子也看不懂,所以後兩道題也只完成了基本的非法輸入判斷,因為檢查不出來錯所以主要的功能沒有實現。

這幾次作業在編寫程式上花費的時間不是特別多,主要是學習新知識比較佔時間,但是因為沒有學懂總是感覺無從下手。想要通過作業逐步理解物件導向的特點就要體會各個題目要求之間的相同與不同,在此基礎上對框架進行修改,不能因為麻煩或者不理解就推倒重做,才能得到最大的收穫。

至於程式設計的嚴謹性也是不可忽略的問題我就在在統計Java程式中關鍵詞的出現次數這道題裡吃了虧,在關鍵字字串的輸入中因為我多加了幾個空白符而導致的錯誤令我很困擾,也耽誤了我很多時間。

 

2.OOP設計心得

首先是程式導向程式設計和麵向物件程式設計差異性的理解。程式導向程式設計是指利用函式的定義和呼叫去編寫程式執行操作,好處是突出的是從上到下整體執行的過程。物件導向程式設計是利用類的定義和使用,物件的屬性和方法,互相聯絡和傳送“命令”和“訊息”,好處是複用性高,便於更改。

物件導向程式設計有封裝性、繼承性與多型性三大技術特性這三個技術特性的關係密切,封裝可以使程式碼模組化,繼承可以實現父類子類之間模組的聯絡再賦予多型用於介面,使介面重用。這樣相互配合就可以提高程式碼的邏輯性和複用性。總結起來就是一句話OOP=物件++繼承+多型+訊息。

其次就是物件導向設計有兩個基本原則單一職責原則和開閉原則。單一職責原則是一個類只負責一項職責。而開閉原則是指應該對擴充套件開放,對修改關閉。換句話說,如果修改或者新增一個功能,應該是通過擴充套件原來的程式碼,而不是通過修改原來的程式碼。

最後要說的是UML圖的應用。在平時的作業裡我發現給了UML圖程式實現起來就很輕鬆,而沒有UML的程式就需要你自己去設計。“類”顧名思義起到了分類的作用,讓你的程式更有邏輯性和可讀性,成為你解決問題的框架。同時也提升了複用性。再結合封裝性、繼承性與多型性三大技術特性也就完成了OOP

 

 3.測試的理解與實踐

對於PTA裡的測試點,我覺得測試用例應該主要從邊界值,特殊值,錯誤輸入值這三方面來檢驗。同時也要注意記憶體超限和死迴圈的情況。之前的總結裡提到了白盒測試和Junit的應用。這兩個是很常用的,這次還要說一個更加必不可缺的功能,那就是debugDebug可以在每一步中檢查每一個值,表示式的變化,找到異常的數值,從而找出錯誤,這樣會讓測試更加簡便。

 

 4.課程收穫

之前上面談了很多,在這裡簡要總結一下

理解程式導向程式設計和麵向物件程式設計的區別

理解了物件導向程式設計封裝性、繼承性與多型性三大技術特性

利用UML和“類”去編寫程式以及思考問題

利用debug功能去檢驗程式裡的值和表示式

利用Junit單元測試(白盒測試)去提高我們編寫程式的效率並避免錯誤

需要繼續理解和鞏固List、Set和Map的介面應用,正規表示式的應用,以及算符棧,運算元棧的知識

 

 5.對課程的建議

經過本學期對JAVA的學習,我們對OOP也有所理解和感悟。因為疫情的原因本學期的JAVA課程都是線上上進行的,雖然是第一次經歷這種情況,但是我感覺對於學習效果還是沒有什麼區別的,畢竟這是一門計算機學科。在家寫PTA的這段時間,讓人更加專心,注意力更加集中。特別是知道這門專業課取消最後的考試,採用平時PTA和實驗的分數已經平時分作為最後的分數,我們對待PTA更加認真了,而且返校之後也不能大範圍集中,不管是筆試還是機考都不合適,這樣的學習經歷很特殊收穫也很大。