BUAAOO 第一單元

2022-09-09 07:48:13 字數 1819 閱讀 6814

1.1 類圖

1.2 類的設計

1.3 類的度量分析

經過分析可以看到,combine和main的複雜度較高,因為我在main裡一共進行了好幾次獨立操作,比如在項裡遍歷因子求導,但實際上這個操作應該放在poly裡更為合適。combine裡我先採用了treemap進行合併同類項,最後又把treemap遍歷存入list當中,其實整個就可以直接只使用treemap。

1.4 類設定的優缺點因為我從第二次作業就開始重構了,第三次作業主要是基於第二次作業,加入了少部分格式判斷,所以放在一起分析,以第三次作業為分析主體。

2.1 類圖

2.2 類的設計

2.3 類的度量分析

通過分析可以看到,之後的作業顯然變得臃腫了起來。以sin為例,裡面裝了20行的正則匹配式子,而正則匹配的式子大可以放在乙個類裡面,封裝為match類。同時decode方法裡還包含了眾多小操作:比如提取/判斷sin係數,判斷sin的指數等,這些都可以單獨再封裝進方法裡。**不夠簡潔,重複**太多是這次臃腫的主要原因。

2.4 類設定的優缺點強測通過,互測被hack乙個點。因為最初將coe設定為bigdemical,所以在轉換的時候用了乙個int型的temp來轉換型別,最後導致資料溢位。這個錯誤對**行等的複雜度沒有影響。這個錯誤只要我稍微用過大數來測驗就不會犯錯,但由於摸魚了所以沒對自己進行測試,所以這個問題是完全可以用資料來檢查的。

強測掛了部分點,互測被hack若干次(頭被打爆)。雖然第二次重構了**,但是仍然受到第一次的束縛,沒有按照文件中的格式來書寫正則,導致漏掉表示式因子也可能具有符號這一特點。所以在修復bug中,只能在表示式類提前判斷是否具有符號。修復過程中**改動量不大,但是明顯可以感受到整個思路的錯誤走向,表示式符號只是冰山一角。

強測還是掛了乙個點,互測被hack了一次。錯誤原因是來自於格式判斷,誤將乙個正確表示式判斷成了錯誤,沒有考慮到首項出現x的情況。修復的時候只修改了check的乙個標準即可,**複雜度無變化。

第一次作業比較簡單,主要錯點就是大數處理和求導。所以只需要構造一次大資料檢驗大數處理是否合格,之後設定比較小的資料(最好是重複)來進行檢驗求導問題。

這兩次作業我都沒有主動hack別人(因為懶得搭建評測機,也不想看別人的**),但是觀察別人hack我的經驗,主要是構造極端的資料,比如(-(-(-(-x))))這類資料。

三周以來每次作業基本都會花一天的時間構思,半天寫**,半天debug。儘管如此,我仍有很多地方考慮不夠全面,比如提取係數、指數這類就應該封裝進單獨的方法裡,而不是在解析方法裡不斷重複,導致**臃腫不堪。所以在寫**的時候,也應該提前規劃好要實現的功能,可以提前擬一張**,這樣會更清晰。

作業壓力很大,很多東西都得自己預習來做,當時覺得很困難,甚至為此哭了一次,但是如今想來也沒那麼難。很多東西從初見到熟識都需要乙個過程,學習也沒有捷徑可言,所以希望下次作業的我不要太畏畏縮縮,相信自己的能力,認真去實現。

BUAAOO第一單元總結

第一單元的作業是對多項式求導,三次作業分別完成了簡單冪函式表示式求導 帶簡單巢狀的表示式求導和三角函式求導 豐富巢狀的表示式求導及格式檢查。本人在第一次作業中使用的是正規表示式匹配和字串預處理相結合的方法,可以達到需要的效果,但是越過了格式約束並降低了可擴充套件性,導致第二次作業不得不重構。第二次作...

BUAA OO 第一單元總結

1 類關係圖 2 作業設計思路 3 類與方法內部分析 poly類 方法 4 優缺點分析 缺點 1 類關係圖 2 作業設計思路 分割表示式思路 優化表示式思路 a sin x 2 b cos x 2 a b sin x 2 b b a cos x 2 a a b cos x 2 a sin x 2 b...

2021 BUAA OO第一單元總結

oo第一單元總結 第一次作業 一 題目要求 簡單多項式求導,僅支援常數與冪函式的乘積作為項,保證輸入無格式錯誤。二 作業實現及分析 由於第一次作業要求實現的功能並不複雜,且我當時對於物件導向的理解並不夠深入,所以我當時只是根據自己的想法構建了4個類來解決這個問題 類圖如下 關鍵類分析如下 strin...