OO學習最終總結

0.前言:本次主要是針對第三階段的三次做業以及整個課程學習的總結,這三次做業主要是針對對程序進行重構使得程序能夠對功能進行擴展的訓練以及對類的設計,因此在此闡述在練習過程當中的問題以及感悟。正則表達式

1.做業總結編程

  1. 三次做業的難度相差不大,但因爲這三次沒有給出參考UML類圖,所有類的設計都須要本身思考設計因此會比給了類圖的相對麻煩一點。前兩個階段的做業主要注重基礎知識的訓練以及理解,如繼承封裝、多態以及類的聚合等等。該階段的三次做業都是本身設計類而且對程序進行重構使得能夠對功能進行擴展,加深對單一職責原則和「開-閉」原則以及對面向對象過程的理解和體會。層層深刻,讓咱們從中學習以及理解。數組

  2.第一次做業的雨刷程序功能擴展設計相對比較麻煩的就是功能擴展部分,須要用到抽象、接口、繼承,整個類的設計也是利用類的單一職責將每一部分封裝成一個類而且繼承各自的抽象類,且一個類只負責該類的職責,類與類之間的聚合來實現整個過程,加深了我對單一職責和「開-閉」原則的理解。Dial類、Lever、Brush類、Agent類各自繼承自本身的抽象類,若是不用繼承就會發現其實他們之間不少代碼都是重複的,用了繼承給他們之間創建一個聯繫,這樣就能夠減小代碼的冗餘,並且也能更加體現他們之間的關係,更加符合實際,且可以對功能進行擴展,需求變了只需再new一個新的Agent類就能夠了,不會影響以前的需求,這就是「開-閉」原則。接下來的第二次是本身設計類實現統計Java程序中關鍵詞的出現次數,經過此次做業加深了我對於字符串的相關方法以及知識點的學習以及運用,還有讓我對於面向對象的設計有了更深的體會。第三次在第二次的基礎上更加麻煩一點,須要使用堆棧以及正則表達式,用正則表達式來判斷表達式的合法性,用堆棧來計算表達式的值,而且對設計作修改,將它們繼承抽象類實現擴展性和複用性,這就是對修改關閉,對擴展開放的「開-閉」原則。總之,三次做業最主要的就是學會本身設計類,以及運用「開-閉」原則使程序的功能完善且實現擴展性。post

  3.第一次做業的雨刷程序功能擴展設計中老是報空指針和數組越界的錯誤,這兩個錯誤相信並很多見,常常都能遇見,是真的煩人。因此異常處理的優點就凸顯出來了,一個異常處理就能夠解決,讓他遇到異常跳出繼續執行下面代碼,不對異常處理,能夠規避不少異常狀況,很是方便。單元測試

  第二次做業的統計Java程序中關鍵詞的出現次數一開始我始終通不過所有關鍵字測試,後來發現個人53個關鍵字中有一個不是關鍵字,也就是關鍵字找錯了一個才致使這個測試點過不了。還有兩種註釋的測試也沒過,幾回檢查發現是少考慮了/**這種狀況。最後一個正常測試到最後也過不了,目前還沒發現是哪裏的問題,各類測試都沒有問題,可是就是過不了該測試點,非常無奈。學習

  第三次做業的表達式求值開始的時候堆棧使用不太好,老是報錯,否則就是出現空棧的錯誤,一次次嘗試,一次次修改,終於可以正常運行了,因爲以前的屢次做業都運用過正則表達式判斷,因此在判斷過程花費的時間很少,也相對熟練了一點,整體上也沒有很大問題就寫完了此次做業。測試

  4.三次花費時間比例爲2:6:2。第二次花費時間主要是在最後一個測試點上反覆修正,仍然沒有發現到底問題出在哪。編碼

  5.編程首先就得仔細看清楚需求分析,這個頗有必要,看的越仔細,後期就會花更少的時間來檢查這方面的問題;其次須要屢清楚你要作的是什麼,怎麼作,須要什麼,怎麼分解成一個個小問題,把這些小問題逐個封裝成單獨的類,再經過接口以及它們之間的聯繫創建相應的關係,完成初步設計,在對其針對單一職責和「開-閉」原則對設計做進一步的調整,達到複用性高,設計嚴謹;再者就是須要提早對異常狀況作預判以及處理,亦或者規避,保障程序在任何狀況都能正常運行,由於測試的工做老是巨大並且相對片面的,並不能徹底檢測出全部的異常狀況,因此及時作一些異常處理的規避仍是頗有必要的。固然保證功能的完整正常還不夠,還須要對程序進行改善,對功能設計分工明確,使得代碼的可以實現複用性以及可擴展性,減小冗餘。spa

2.OO設計心得
設計

  1.每個單獨的部分經過封裝成類,封裝的類能夠經過繼承抽象類或者接口來實現多態性。多態必需要求有繼承,抽象類就是爲了繼承而生,而它們的基礎都是類的封裝。

  2.單一職責原則:一個類就專一地作一件事。「開-閉」原則:對修改關閉,擴展開放,就是當某個類的方法不知足需求了,不會對其方法進行修改,而是建立一個抽象類讓其繼承於該抽象類,再另外寫一個子類繼承它來實現新的需求。

  3.面向對象的思想就是在解決問題過程當中分解成一個個小問題,再把這些小問題做爲一個單獨的個體來對它們進行處理,它們有本身的功能和狀態以及與其餘個體之間的聯繫,而後它們之間相互做用來解決問題。這樣的設計方法比較符合現實,其實每一個大難題都是由一個個小問題組成的,因此只要把它們分解成小問題,再逐個解決就能夠了。這也是相似的道理。

  4.類主要仍是要堅持單一職責原則,一個類就幹一件事,分工明確纔有秩序,不會亂成一團。固然也要考慮到「開-閉」原則,加強代碼複用性以及擴展性,使得設計更加靈活多變。

3.測試的理解與實踐

  1.經過測試能夠檢查程序的功能是否能在各類情況下正常運行,保障功能正常運行,固然測試的目的並非單純的爲了找錯誤,而是經過分析錯誤產生的緣由和錯誤的發生趨勢,能夠幫助項目管理者發現當前軟件開發過程當中的缺陷,以便及時改進,這樣能夠保障代碼的質量以及程序功能的穩定。只有編碼質量有保證,功能才能穩定,才能受到廣大用戶的好評。因此測試是保障編碼質量的重要手段。

  2.使用Junit進行程序的測試是可行的,它能夠經過編寫一系列的測試來對項目全部的接口或者方法進行單元測試,啓動後,自動化測試,並判斷執行結果, 不須要人爲的干預。只須要查看最後結果,就知道整個項目的方法接口是否通暢。而且各個測試之間是相互獨立,互不干擾的。因此使用Junit進行測試仍是一個不錯的可行方法。

4.課程收穫

   這三個階段的OO編程訓練,一次次的加深我對其思想和設計的理解和體會,更加理解面向對象的含義。在練習過程當中也會碰到不少問題,逐步認識到本身的不足 。學習到OO編程須要始終遵循單一職責原則和「開-閉」原則,這樣能夠更好地檢查代碼的錯誤以及使你設計的代碼有更好的複用性和擴展性,減小代碼冗餘,保證代碼的質量。測試也是不能少的,它能夠幫你更加全面的檢查代碼功能問題,減小本身逐篇檢查代碼邏輯的時間和工做量。

 5.課程學習總結

課程對每一個重要的知識點進行有針對性的學習和訓練,讓咱們在訓練中學習理解,可以學以至用,更好的掌握它們。大致的知識基礎有了後,接下來就是學習新的知識和進一步完善每一次設計,保證代碼的擴展性和靈活性,讓咱們對於面向對象有了更深的理解和感悟。該門課程區別於其餘課程,是一個須要日積月累的代碼量堆積起來的,達到必定量纔會對OO編程有更深一層的理解和感悟,光靠理論知識的堆積是遠遠不夠的,固然也要是有質量的代碼量纔可以提升本身的編程水平。咱們在課堂上可以學到的,學進去的也不太多,仍然須要課後的學習積累以及訓練才能更好的學習該門課程。

相關文章
相關標籤/搜索