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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

第四單元博客總結(jié)——暨OO課程總結(jié)

第四單元架構(gòu)設(shè)計(jì)

第一次UML作業(yè)

簡單陳述

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

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

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

類圖

方法復(fù)雜度

類復(fù)雜度

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

第二次UML作業(yè)

簡單陳述

第二次作業(yè)在上次的基礎(chǔ)上,增加了類圖的檢查,以及順序圖和狀態(tài)圖,個(gè)人認(rèn)為難點(diǎn)主要在類圖的三個(gè)Rule檢查上,但萬萬沒想到在順序圖的查詢中,吃了讀題不仔細(xì)的虧,并沒有意識到message可以傳遞給endPoint,直接導(dǎo)致報(bào)錯(cuò)。。這是后話。

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

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

類圖

方法復(fù)雜度

類復(fù)雜度

四個(gè)單元架構(gòu)設(shè)計(jì)及OO方法理解的演進(jìn)

  • 第一單元中,求導(dǎo)問題,雖然一開始就知道后期可能會出現(xiàn)更加復(fù)雜的求導(dǎo)問題,但個(gè)人的架構(gòu)設(shè)計(jì)仍然存在缺陷,導(dǎo)致三次作業(yè)重構(gòu)三次,并沒有做到任何的代碼復(fù)用性,但也開始嘗試面向?qū)ο蟮木幊汤砟?#xff0c;分成多個(gè)類,先考慮對象而非編程過程。

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

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

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

四個(gè)單元中的測試及理解

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

  • 第二單元,多線程電梯,導(dǎo)致檢測更加困難,這時(shí)開始學(xué)會使用python自動(dòng)化造數(shù)據(jù),由于多線程,無法與他人匹配輸出,也只能檢測一些拋出異常或是直接crash的bug,正確性檢測并不多,但也開始走向自動(dòng)化檢測。

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

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

課程收獲

個(gè)人較為喜歡OO這門課,但真的很遺憾沒有獲得任何獎(jiǎng)項(xiàng),甚至鼓勵(lì)獎(jiǎng)。。我也為這門課付出了許多汗水,大二下學(xué)期的生活格外充實(shí),但烤漆也格外舒適。且萬萬沒想到的是最后一次作業(yè)翻車,出現(xiàn)了讀題失誤。之前的單元作業(yè),除了第一單元因?yàn)樾阅芊譄o法拿到滿分,以及第二單元電梯出現(xiàn)兩次bug,其他作業(yè)都是滿分,但強(qiáng)測測出bug真的很傷。。。也是第一次上這種工程性極強(qiáng)的課程,每一周都和打仗一樣,完成一次大作業(yè),但到后期也逐漸熟練了,甚至開始期待下一次的作業(yè),會自己進(jìn)行猜測,也十分喜歡每次完成代碼后的優(yōu)化過程,雖然有時(shí)候是反向優(yōu)化,但個(gè)人代碼能力確實(shí)有了極大提升,已經(jīng)可以兩天完成上千行的代碼工程,并完成bug調(diào)試,測試代碼的能力也實(shí)現(xiàn)了突破零的飛躍,之前從未接觸過自動(dòng)化測試,也被互測逼迫了去學(xué)習(xí)測試,學(xué)習(xí)自動(dòng)生成測試數(shù)據(jù),感覺OO真的給我?guī)砹撕芏唷?/span>

三個(gè)改進(jìn)建議

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

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

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

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

  • 希望OO的實(shí)驗(yàn)課程能夠有所進(jìn)步,感覺前幾次的實(shí)驗(yàn)課程都很亂,且考察上午剛講授的內(nèi)容,基本是在機(jī)房現(xiàn)場學(xué)習(xí)ppt,現(xiàn)場嘗試,現(xiàn)學(xué)現(xiàn)賣,個(gè)人認(rèn)為調(diào)整到周一而不是剛上完課就上機(jī)會比較好。?

轉(zhuǎn)載于:https://www.cnblogs.com/JordenQiao/p/11079538.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。