oo第四單元做業總結

1、本單元兩次做業的架構: 算法

         本單元兩次做業的架構基本是一致的,因此兩次做業的架構就一塊兒說了。編程

         爲了不查詢時出現同一個結果反覆計算的狀況(連續兩次查詢一個類的頂級父類,若是咱們在查詢的指令中來計算其父類,那麼就須要進行兩次重複的計算。)然而若是咱們在實現Umlniterface接口的時候,就根據已經解析好的elements信息來把可能會被查詢的全部數據都提早算出來存好,查詢的時候就把他提取出來就能夠了。多線程

         基於這種考慮,這兩次做業我採用了這樣的結構:首先,用一個類來實現官方給出的接口,這個類只有接口給出的查詢功能。至於具體要查詢的內容,須要另外建立一個類,這個專門用來存放和構建各種查詢會用到的hashmap。架構

2、我對面向對象概念理解的演進:異步

         面向對象課程的第一單元,是和咱們之前學的c語言這樣面向過程的基本無差異的內容,這一單元中,主要仍是在熟悉c語言的語法結構,但同時,在第一單元三次做業的不斷重構和優化的過程當中,我也慢慢體會到面向對象的封裝性的好處,這個好處有兩個方面,首先,一個具備良好封裝行的代碼,比較容易修改,由於不一樣類之間不少內容彼此之間是不可見的,這帶來的好處就是,你在修改一個類時,不用考慮另一個類的太多牽扯;其次,兩外一個好處就是,良好的封裝性通常也就意味着一個優秀的架構,一個優秀的架構能讓你在寫代碼時思路更清楚,同時寫出來的代碼也更具可讀性,具備更良好的可修改行。第二單元的做業,專一於多線程,這是我以前從未接觸的一種編碼思路。第三單元是jml語言的學習,經過這一單元的學習,我體會到了在編寫一個工做量比較大的代碼時,如何與人協做,固然,在這一單元的代碼性能要求也是我以前沒接觸過的,在寫這一單元的做業時,我學習了不少優化性能的算法。第四單元是uml的學習,這一單元感受上做業的內容,重點和難點都不在uml上,而是統計uml的算法,本質上和第三單元沒太大差異。性能

3、課程收穫學習

         面向對象課程給我最大的收穫有兩個方面。首先,面向對象是一種不一樣於我以往所學習的編程思想,他是針對的不是事件執行的過程,而是參與事件執行的對象。好比電梯從1樓到5樓的過程,以面向過程的思路來看待這件事兒,就是單純的電梯前往乘客所在的樓層——>電梯開門——>乘客進入電梯——>電梯關門——>電梯運行到目的樓層——>電梯開門——>乘客出電梯,這樣一個事件的完整執行過程,然而若是從面向對象的角度來思考這一過程,就要分爲兩部分來思考——乘客和電梯,乘客有名字,出發樓層和目標樓層等屬性,以及進出電梯的方法,電梯有停靠樓層的屬性,以及向上下運行,開關門的方法。而後用電梯對象和乘客對象的這些屬性和方法來組成整個事件。測試

        面向對象給個人另一個收穫,是對於多線程的理解。多線程對於我來講是一個全新的概念,線程之間同步異步,交互以及死鎖,是一種全新的寫代碼須要考慮的因素。優化

4、對課程提出的幾點建議編碼

        (1)首先是對於互測環節的一點吐槽(針對第三單元),因爲第三單元互測的數據量都很大,因此從數據從數據上很難找到本身程序中在強測以前就沒找到的問題。並且,更爲重要的一點是,不少bug是性能上的問題,這個優化要知足大佬們數據的要求真的很難,就出現了被狼人狂刀而沒法自救,心態炸裂的問題。

        (2)而後是關於強測數據點給分的問題,因爲不少時候強測數據都會不可避免地對一個問題進行反覆測試,這樣就會出現因爲一個bug而卻是全盤崩潰的局面,建議debug階段,對於強測部分的debug,若是是合併修復,可以返回多一點兒的分數。

相關文章
相關標籤/搜索