前言
本次博文是針對本學期面向對象程序設計作業的總結與感想。
1 對於第三階段作業總結
① 第三階段的三次作業包含雨刷程序功能擴展設計、Java關鍵字計數和表達式計算。
第七次到第九次作業,難度都比較平均,不會很簡單也不會特別難,但是這一階段開始,題目不再給類圖參考,而是讓我們自己進行類的設計,但是因為難度的降低,類之間的關系不會很復雜,在類的設計上不會有很大的問題。
第七次作業:本題的主要內容是對程序進行重構,使得程序可以對功能進行擴展,考察了類設計以及類間關系類的封裝性、繼承性以及多態性的綜合應用以及接口與抽象類的使用等知識點;
第八次作業:Java關鍵字詞匹配計數,題目要求為編寫程序統計一個輸入的Java源碼中關鍵字(區分大小寫)出現的次數。從最后的完成情況來看,應該是沒有正確的。經過同學們的多次測試與討論,發現最后一個測試點和注釋測試點之間可能有沖突,當注釋掉判斷注釋部分之后,最后一個測試點能夠通過,但添加了判斷注釋功能之后,最后一個測試點不能通過,提交更改了非常多次,都無法通過。由於無法看到測試用例,只能猜測問題出在哪一部分,經過大家多次討論,認為應該是注釋的問題;
第九次作業:此次作業的主要內容是表達式求值,本題涉及到了數據結構方面的知識,對堆棧設計的要求比較高,而我因為數據結構課程學得一般所以在程序設計方面花了很多功夫。最后在查閱很多資料和反復觀看堆棧的知識理念后才寫出完整的代碼。
這三次作業雖然都不是很難,但是在獨立完成一個完整的代碼的能力上我有了質的飛躍。
②作業過程中遇到的問題及解決方法
主要問題
第八次作業,在最后一個測試點和注釋測試點之間不能同時通過。
解決方法:未解決
第九次作業,對於堆棧的運用比較生疏,導致程序設計上有很大的困難。
解決方法:查閱資料,求助同學。
③ 每次作業花費的時間比例
三次作業所花時間比列接近2:3:3,后面兩次作業都有很多不可逆的問題阻礙了我做題的方向。
④ 對編程過程的邏輯嚴謹性的認識及教訓
由於沒有類圖需要自己進行類的設計,所以在設計類時總是因為考慮不周全而導致程序設計不下去,或者是過於嚴謹而導致耦合度太高出錯后更改難度加大。通過這個階段我意識到了類的接口、繼承、重寫等運用時多么的重要。
2 對於面向對象程序設計課程的總結
①知識歸納
在最初接觸這門課程的時候,老師講概念性的東西很多,但是由於我還沒有正式地接觸Java這門語言,導致很多概念性的東西讓我感到雲里霧里。盡管我C語言的基礎並不薄弱,所以在Java的入手方面沒有很大的障礙產生,可是過了一段時間后我發現對於面向過程和面向對象的觀念轉變變得很難,面向過程的觀念已經在我腦中固化,於是在類的設計方面我也有很多不理解的東西。但是在后面各種作業的實踐、代碼的實操中,我終於領會了面向對象和面向過程的區別。對於面向對象的三大特性、面向對象設計的基本原則以及OO編程思維的理解也有了一定自己的見解:
對面向對象三大技術特性之間關系的理解
1. 封裝——對類里面的成員變量通過使用private修飾符進行隱藏,通過使用public 修飾符來編寫它們對應的方法來進行訪問和修改。將不同的職責抽離出來封裝到不同的類中.可以實現對代碼的解耦;
2. 繼承——如果子類繼承於父類,子類繼承父類非private的屬性和功能,子類具有自己的屬性和功能,即父類沒有的屬性和功能;第三,子類還可以以自己的方式修改父類的功能;
3. 多態——多態表示不同的對象可以執行相同的方法,但是不同的對象對於方法的實現不同,操作就可以不同。
面向對象設計的基本原則理解(單一職責原則及“開-閉”原則)
1. 單一功能原則:
單一職責就是一個的類只干一件事。每個類只負責一個職責,如水文校驗中,CheckData類只負責檢查數據,水文信息類只負責保存信息。在實際運用中,類的單一職責不一定很容易實現,可以退而求其次,使用方法的單一職責原則;
2. 開閉原則:
在設計的過程中,應該逐步抽象出更高級的抽象,在新功能或者調整出現時,只需要擴展和很小的修改,盡可能的減少修改。
OO編程思維的理解
面向對象是對世界的抽象,它將存在的事務抽象為一個類,這個類具有屬性和可以完成的功能。如人類:有身高性別年齡名字等等等屬性,可以完成送外賣送快遞搬磚寫代碼等功能,但是類不能幫你完成事務,需要一個實例才能。比如某一個人可以送外賣,但人類本身不能去送外賣,需要實例一個外賣員,才能完成功能。類只是個定義,干活的是對象。
② 對於自己在這門課程的總結
在我進行程序設計的開始是不喜歡測試來尋找bug的,這對前期的學習與作業的完成其實影響不大,但是到了后期缺陷就顯露出來了。於是我意識到了測試對於編碼質量的重要性——往往在編碼完成后,由於設計和編碼過程中的不完善和問題,會在一些情況下出現無法得到正確結果的情況,有時候錯誤隱藏的較深,沒辦法直接看出來。要保證程序的健壯性和正確性,就需要測試,將可能存在的錯誤找出來。
③ 對本次課程的建議
因為疫情的影響,本門課程基本是在網絡上完成教學的,也許是第一次進行網課的實踐,所以在很多地方都不大完善。在課程內容方面,希望可以推陳出新,找出更多有利於我們領會知識點的教學方式;在作業方面,希望不要把重心放在設置過於復雜的測試點,而應該把主要精力應該花費在類的設計上。