春季學期中,未通過的作業是第一單元第三次作業。
現在回想一下,當時感到棘手的部分,即未完成的原因主要有兩點:
對於輸入的巢狀表示式,沒有很好的辦法處理判斷wf並提取因子。
當時的設計架構中,缺少乙個重要的類——復合函式類(巢狀)。當時我的想法是將巢狀函式的內層函式當作外層函式類的乙個屬性來儲存,結果導致結構有些混亂,而且多層巢狀時極為複雜。
經過課上老師的講解和查閱資料,我在暑期學期對第一單元第三次作業進行了重構,效果不錯。
重構中對當時的兩個困難部分進行了針對性的改進:
針對輸入的巢狀表示式提取問題,我查閱資料後學習了遞迴下降分析法。這個方法原本是用於文法分析,但是我發現用於本次作業也十分適合。因為指導書給出了表示式的形式化表述,所以可以很方便的根據形式化表述(和文法格式很像)構造出整個輸入分析函式。
遞迴下降分析法的中心思想,我理解就是遇到什麼呼叫什麼函式。因此,根據形式化表述,例如乙個表示式只可能由項或者表示式構成,那麼讀取表示式時只需要找到乙個項就呼叫讀取項的函式即可,層層分解,思路比較清晰。
針對架構混亂的問題,在春季學期的第一單元總結課後我就有了初步的解決方案,在參考了公開的示例**的架構後,我就發現了我自己缺少乙個復合函式類的問題。因此在重構後,我加入了乙個新的復合函式類(recursive類),這樣整個結構一下清晰了很多,也方便之後的求導等方法的書寫。
最大的收穫肯定是自己親手完成了曾經困擾了我許久的這次作業。
在暑期課程中,我也第一次有了充足的時間進行了第一次重構,體驗良好hhh。看來以後真的要多多重構了(迫不得已的話)。
這期間我也學習到了遞迴下降的方法,並且感悟了本應在春季學期第一單元結束就感受到的層次化模組化設計(當時沒感受到看來時程式寫的不好qaq)。
在暑期課上,老師通過會議也耐心細緻地分析了我所講解的程式,並提出了寶貴的意見,比如化簡思路等各個方面。
本人認為補給站的整體流程和形式已經相當完善,給參加暑期課的同學體驗也十分良好。老師們依舊十分耐心地進行講解和答疑,沒有讓同學們有任何的壓力。
如果非要提出些什麼改進建議,本人認為補給站可以將乙個人的講解分成兩次(每次時間變短),第一次先講架構設計(頂層規劃),第二次講**、演算法等底層實現,這樣也許可以幫助還沒有深入理解層次化設計的同學,更好的完成作業,因為老師可以在第一次講解後提出架構建議,幫助同學規劃設計。
在暑期課程中,我確實在很大程度上提高了我自己對物件導向設計思想的理解,尤其是看到乙個類對於整體架構的巨大作用。同時這期間我也學習到了很多新東西,比如遞迴下降等。所以,補給站期間也讓我學到了很多,我也很感謝是補給站給了我這樣乙個機會。
對於進入補給站,我也很清楚是自己不好的行為,而這不好的行為也是我自己的心態問題導致。所以我想我從補給站這乙個事情發現了我自己這樣乙個心態問題上的缺點,也是要感謝補給站和各位老師助教。提前發現總歸是好的,這樣我及時改正也就可以在後面避免更嚴重的問題。這樣的一課,想必是超越知識本身之外的收穫吧~
最後,向在暑假期間還耐心輔導我們的老師和助教們表示感謝!
OO補給站總結
補給站作業 hw3 hw7 1 對於當時沒通過的每次作業,描述當時遇到的困難和無法完成的原因 hw3 巢狀處理,對物件關係的處理。hw7 換乘處理不當,無法完成後半段執行,且停止電梯終止程式執行處理不好。2 現在補的每次作業,有哪些針對性的改進,包括設計 演算法和難點的處理等 hw3 重新設計,通過...
2020北航OO第二單元總結
任務要求 通過多執行緒的互斥和同步控制,實現電梯功能模擬,並進行擴充套件和迭代。第一次作業 單電梯,由於請求完成時間有限制,所以需要進行捎帶或者其他優化策略。第二次作業 多部電梯,增加每部電梯人數限制,到達樓層可擴充套件到負數層。第三次作業 多部電梯,每部電梯可到達樓層 速度 人數限制不同。需要支援...
北航OO第三單元總結
本單元作業為jml規格的學習與應用,要求我們在閱讀jml規格之後實現出完全符合規格要求的方法。當然在完成作業之前我又需要從0開始學習jml規格,但好在jml的入門難度並不大,短短幾個小時後就可以讀懂作業中的jml規格了。而其實規格就像是乙個指導你具體實現方法的說明書,它會為你指定這個方法的前置後置條...