日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第四单元博客总结——暨OO课程总结

發布時間:2023/12/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第四单元博客总结——暨OO课程总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第四單元博客總結——暨OO課程總結

第四單元架構設計

第一次UML作業

簡單陳述

第一次作業較為簡單,只需要實現查詢功能,并在查詢的同時考慮到性能問題,即我簡單的將每一次查詢的結果以及遞歸的上層結果都存儲下來,使用一個Boolean型變量記錄是否更新過該結果,即日后查詢可以直接返回查詢內容,而無需再次更新,也算是一種較為無腦的辦法,根據后來的評測數據以及結果來看,性能、CPU運行時間并不是該次作業的重點,正確性才是關鍵之所在。需要同學們對于UML每一個元素有充分的理解,同時助教也在討論區回答大家的問題,通過閱讀討論區也可以做到初步了解。

接口包中給出了各式UMLXXX類,即各種UML元素,但個人并不是很看得懂其中的一些Json部分代碼,選擇自己構建一個MyUMLXXX類,其中存儲UMLXXX,以及各類查詢方法還有屬性,由于是自己寫的類,用起來更加自如,也不用怕有什么坑存在。

在MyUmlInteraction類中,首先是對輸入信息的分類處理,較為簡單,只需要注意不同信息的處理順序不同,這樣就可以實現在新建數據之初,就實現例如屬性和方法存入對應的類中等。個人認為本次作業中較難點為獲取頂級父類,存在遞歸向上查找父類的問題,然后就是同樣復雜的實現接口列表,在這里我都選擇使用遞歸實現,而并沒有用圖的知識來結局,但事實證明早晚要用到圖的。。。

類圖

方法復雜度

類復雜度

同時我才用了一個以空間換時間的小技巧,也就是同時存了id2Class, name2Class, class2Id三個HashMap,以幫助我快速找到對應的class或id。

第二次UML作業

簡單陳述

第二次作業在上次的基礎上,增加了類圖的檢查,以及順序圖和狀態圖,個人認為難點主要在類圖的三個Rule檢查上,但萬萬沒想到在順序圖的查詢中,吃了讀題不仔細的虧,并沒有意識到message可以傳遞給endPoint,直接導致報錯。。這是后話。

新增加的三個Rule分別是元素容器中不能有重名成員,不可以有循環繼承以及任何一個接口不能重復繼承另外一個接口。重名成員較容易判斷,但需要注意的是重名對象不僅限于屬性之間,關聯對端之間,屬性和關聯對端之間也不可以有重名出現。而循環繼承較為復雜,需要用到圖的知識,我使用鄰接矩陣來記錄相互之間的繼承關系,并通過tarjan的強連通分支算法,尋找循環繼承。而第三條規則,重復繼承,我也是建了一張圖并通過BFS,尋找重復繼承。

除了StandardPreCheck類以外的,順序圖和狀態圖查詢,都與之前的類圖查詢差不多,甚至更加簡單,在此就不多加闡述。

類圖

方法復雜度

類復雜度

四個單元架構設計及OO方法理解的演進

  • 第一單元中,求導問題,雖然一開始就知道后期可能會出現更加復雜的求導問題,但個人的架構設計仍然存在缺陷,導致三次作業重構三次,并沒有做到任何的代碼復用性,但也開始嘗試面向對象的編程理念,分成多個類,先考慮對象而非編程過程。

  • 第二單元中,老師講授了一些設計模式,如讀者-寫者模式,工廠模式,生產者-消費者模式,電梯的代碼開始出現復用,但由于功能較多,仍然存在部分代碼重構的現象,對于每次提出的新要求,都需要大量代碼的改進,開始嘗試各種設計模式。

  • 第三單元中,學習了全新的JML,雖然個人感覺代碼內容與JML關系不大,但也體會到了工程上如何對于功能提出要求,底層的程序員如何根據已設記好的架構,完成代碼編寫,JML只關心方法的pre-Condition以及輸出,具體實現并不關心,學會了寫JML,為日后在工作上的發展打下基礎。

  • 第四單元,UML的出現,自己封裝UMLXXX,統一繼承UMLElement,并將功能分化到各個類來完成,而不是一個GeneralInteraction搞定所有功能。

四個單元中的測試及理解

  • 第一單元,那時的我并不懂得太多測試相關信息,互測階段只能靠個人手動造數據,且通過一次打開八個Project的方法,手動輸入數據,采用笨拙的方法進行比較,效果并不理想,也只能通過一些特殊情況來卡bug,而隱藏在代碼深處的一些隱蔽bug無法檢測出,

  • 第二單元,多線程電梯,導致檢測更加困難,這時開始學會使用python自動化造數據,由于多線程,無法與他人匹配輸出,也只能檢測一些拋出異?;蚴侵苯觕rash的bug,正確性檢測并不多,但也開始走向自動化檢測。

  • 第三單元,已經開始嘗試手寫腳本,搭建弱版評測姬,也第一次體會到了出門去吃飯,讓電腦在宿舍跑bug的快感,但突然發現時間不夠啊,(造了10w組數據,跑不完了。。。

  • 第四單元,由于傳入數據是mdj文件生成,并沒有太好的自動生成方法,測試數據也只能靠手畫,且沒有互測也就只需要驗證自己的正確性。

課程收獲

個人較為喜歡OO這門課,但真的很遺憾沒有獲得任何獎項,甚至鼓勵獎。。我也為這門課付出了許多汗水,大二下學期的生活格外充實,但烤漆也格外舒適。且萬萬沒想到的是最后一次作業翻車,出現了讀題失誤。之前的單元作業,除了第一單元因為性能分無法拿到滿分,以及第二單元電梯出現兩次bug,其他作業都是滿分,但強測測出bug真的很傷。。。也是第一次上這種工程性極強的課程,每一周都和打仗一樣,完成一次大作業,但到后期也逐漸熟練了,甚至開始期待下一次的作業,會自己進行猜測,也十分喜歡每次完成代碼后的優化過程,雖然有時候是反向優化,但個人代碼能力確實有了極大提升,已經可以兩天完成上千行的代碼工程,并完成bug調試,測試代碼的能力也實現了突破零的飛躍,之前從未接觸過自動化測試,也被互測逼迫了去學習測試,學習自動生成測試數據,感覺OO真的給我帶來了很多。

三個改進建議

  • 首先希望通知能夠更加醒目一點,就比如間隔微信群啥的,個人感覺站內通知特別容易被忽略,可能是我個人問題。。。

  • 多線程單元的測試,希望能增加次數,或是開放評測姬來跑一些數據,感覺自己在評測姬上會出現一些不可復現的bug,甚至可能是只有在評測姬上才能跑出的bug。

  • 感覺研討課的參與,討論氣氛不是很明顯,但我也不太懂怎么提高,主要是大家還是較為害羞,比如我就害怕自己的一些想法或問題過于低級,但在網上也確實沒有找到解決辦法,還是不太放的開吧。

  • 感覺JML單元,可以更加偏重JML一點,我們同學間開玩笑,只有最后寫但愿總結的時候,才開始真正的了解JML語言,真正的思考一些細致的問題,之前的時間都用在寫程序,實現功能上了。

  • 希望OO的實驗課程能夠有所進步,感覺前幾次的實驗課程都很亂,且考察上午剛講授的內容,基本是在機房現場學習ppt,現場嘗試,現學現賣,個人認為調整到周一而不是剛上完課就上機會比較好。?

轉載于:https://www.cnblogs.com/JordenQiao/p/11079538.html

總結

以上是生活随笔為你收集整理的第四单元博客总结——暨OO课程总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。