面向对象第四单元(UML)总结体会课程总结
1、第四單元兩次作業(yè)的框架設(shè)計(jì)
兩次作業(yè)的框架設(shè)計(jì)是一脈相承的,第14次作業(yè)完全繼承了第13次作業(yè)類中的方法。
通過對UmlElement類的分析,直接將前一次作業(yè)中涉及到的9個類在構(gòu)造方法中便分開并單獨(dú)存放,即分為了9個HashMap
? 因?yàn)橐婚_始對查詢需求沒有做過多考慮,后續(xù)發(fā)現(xiàn)這種分離方式在一定程度上使查詢結(jié)果復(fù)雜化了,而一些結(jié)構(gòu)也可以使用ArrayList代替,而不會增加時間復(fù)雜度。
? 在另一方面,為了存儲查詢過程中涉及到的中間結(jié)果,建立了ClassDate類來存儲,其內(nèi)部主要數(shù)據(jù)結(jié)構(gòu)如下:
private int operationFlag;private int operationNum;private int paramOperationNum;private int noParamOperationNum;private int returnOperationNum;private int noReturnOperationNum;private int attributeFlag;private int attributeNum;private int attributeMapFlag;private HashMap<String, AttributeClassInformation> attributeMap;private int associationFlag;private int associationNum;private HashMap<String, String> associationMap;private ArrayList<String> associationList;private int interfaceFlag;private HashMap<String, String> interfaceMap;? 其中xxxxFlag代表此大項(xiàng)的數(shù)據(jù)結(jié)果是否被算出,而內(nèi)部的數(shù)據(jù)結(jié)構(gòu)則記錄具體的數(shù)目,自身名單以及包含父類的名單。在調(diào)用每個類/接口的查詢方法時,初次查詢,創(chuàng)建相應(yīng)的ClassDate類,而查詢相應(yīng)數(shù)據(jù)時,將其中的數(shù)據(jù)結(jié)構(gòu)中的內(nèi)容逐一完善。
而第14次作業(yè)在第13次作業(yè)的基礎(chǔ)上,僅僅是構(gòu)造方法中的HashMap結(jié)構(gòu)變多了,將所有有用的類單獨(dú)存放,而在查詢中沒有用到的類則直接舍棄,不會存入結(jié)構(gòu)體中。
2、四個單元中框架設(shè)計(jì)及OO方法理解的演進(jìn)
? 在前期的過程中,由于受到面向過程編程的長期影響,在代碼框架設(shè)計(jì)上并沒有很多的理解,將Class看作是實(shí)現(xiàn)所有函數(shù)的集合,而將所有需要實(shí)現(xiàn)的函數(shù),均加到同一個Class中,沒有關(guān)注到代碼的耦合性過大。
準(zhǔn)備階段
昨夜西風(fēng)凋碧樹,獨(dú)上高樓,望盡天涯路
? 在之后的框架設(shè)計(jì)中,我更加注重了框架設(shè)計(jì),在之后的作業(yè)中,有因?yàn)榭蚣芎侠矶罄m(xù)作業(yè)幾乎不需要改動的情況,但也出現(xiàn)了其他的問題。例如:在第一單元最后一次作業(yè)中,由于前期沒有建立好良好的數(shù)據(jù)結(jié)構(gòu),對于層次分析的方法也不甚了解,最后靠兩天的完全空想完成了“有限狀態(tài)機(jī)”+“表達(dá)式樹”的方法,并且其中包含了大量的接口繼承。我同時和一些同學(xué)講述了這種方法,但自己其實(shí)沒有實(shí)現(xiàn)出具體的細(xì)節(jié),僅僅是一個前期的框架。吳際老師在總結(jié)課上說的,所有沒有具體實(shí)現(xiàn)的框架都是沒用的,最簡單的驗(yàn)證方法就是"show me your code."。我對這句話的感觸很深,在自己沒有思考清楚的情況下,給別人去講述自己的方法,簡直是害人害己。
醞釀階段
衣帶漸寬終不悔,為伊消得人憔悴。
? 第二單元的多線程調(diào)度,是對框架設(shè)計(jì)的一次很好的練習(xí)。由于對請求序列 / 總控制器 / 電梯調(diào)度器 / 電梯各自功能非常清晰。電梯僅僅充當(dāng)一個根據(jù)主需求上下行的機(jī)器,而請求序列將所有請求加入總控制器,總控制器根據(jù)電梯的繁忙情況及現(xiàn)行狀態(tài),將其分配到各個電梯的分調(diào)度器上。其中的耦合關(guān)系較小,僅僅在傳遞階段,各類分工明確。這三次作業(yè)是我充分認(rèn)識到:一個好的設(shè)計(jì)框架在實(shí)際開發(fā)中將使你的修改事半功倍。
頓悟階段
眾里尋他千百度,驀然回首,那人卻在燈火闌珊處
? 將之后的框架設(shè)計(jì)看作是頓悟階段,其實(shí)是夸大事實(shí)的。只能說,由于在前兩單元的摸爬滾打,在最后的兩個單元作業(yè)中,我在寫代碼之前會更加注重SLIOD原則。并且在實(shí)現(xiàn)過程中不直接和大家分享我框架的先進(jìn)性,更多的還是細(xì)節(jié)方面實(shí)現(xiàn)的交流。
3、四個單元中測試?yán)斫馀c實(shí)踐的演進(jìn)
肯定
? 四個單元的測試環(huán)節(jié)是非常重要的。測試過程是真正開發(fā)中不可或缺的一環(huán),在前期沒有JUnit單元測試的前提下,采取了肉眼測試的方法。通過閱讀別人的方法與注釋,感覺受益匪淺,從另一個角度看待了這個問題。
否定
? 之后通過和其他同學(xué)的溝通交流,逐漸掌握了更自動化的方法,包括使用matlab進(jìn)行對拍,使用正則表達(dá)式構(gòu)造樣例并使用shell進(jìn)行測試,對比整個房間的結(jié)果。雖然一開始可以找到大量bug,但卻逐漸懷疑這種方法的科學(xué)性:我們僅僅機(jī)械地構(gòu)造了樣例,卻沒有閱讀別人的代碼,更沒有從中獲取知識。
否定之否定
? 厭倦了這種機(jī)械式找bug行為后,一次分享課使我受益匪淺。那位同學(xué)在通過自動化生產(chǎn)樣例發(fā)現(xiàn)bug之后,會嘗試在別人的代碼中發(fā)現(xiàn)bug存在的原因,并嘗試在5行之類將其進(jìn)行修復(fù)。在修正完畢后,繼續(xù)通過自動化樣例測試修正后的程序,如此一來找出的bug便幾乎不會出現(xiàn)同質(zhì)現(xiàn)象。原來一開始的沒有收獲僅僅是因?yàn)樽约旱亩栊则?qū)使,自動化測試沒有錯,而使用自動化測試后沒有勤加思考才是最大的問題所在。
4、課程收獲與總結(jié)
? 在經(jīng)過一學(xué)期的操作系統(tǒng)課程后,逐漸了解了真正的產(chǎn)品研發(fā)的步驟。通過第一單元的表達(dá)式求導(dǎo),了解到用戶輸入的正確性判斷與錄入;而第二單元的電梯調(diào)度與操作系統(tǒng)的課程內(nèi)容完美對接,可以從原理角度與高級語言實(shí)際實(shí)現(xiàn)角度雙管齊下,對線程概念有著更深的理解。第三單元的JML和第四單元的UML,一個用協(xié)議規(guī)范方法的實(shí)現(xiàn),通過閱讀規(guī)格定義便可了解代碼的輸入,輸出,前提條件等必要內(nèi)容;一個用圖的方式實(shí)現(xiàn)了框架的可視化,使我們清晰地了解執(zhí)行順序和狀態(tài)轉(zhuǎn)變。
? 但對自己還是有一些不滿意的地方:原本計(jì)劃讀完讀透的《Java編程思想》因?yàn)檎n業(yè)壓力越來越大只能中斷,而最后的幾次代碼也沒有那么認(rèn)真完成,摸魚情況時有發(fā)生,到強(qiáng)測完畢才發(fā)現(xiàn)為時已晚。而對于Java底層運(yùn)行時間和CPU時間等并沒有充分思考他們與時間復(fù)雜度之間的關(guān)系,如何在保證程序正確性的前提下,將程序的CPU占用時間降低,需要以后更多的學(xué)習(xí)和思考。
5、課程建議
? 我認(rèn)為今年的面向?qū)ο笳n程進(jìn)行巨大的變革后,確實(shí)使同學(xué)們的滿意度大幅度提高,但還是有部分地方有所欠缺。
? 本學(xué)期面向?qū)ο蟮恼n上測試部分,基本上沒有什么體驗(yàn)感,除后期幾次難度適中外,前期要么涉及到剛剛學(xué)到的知識點(diǎn),要么工作量過大導(dǎo)致無法完成,還有少數(shù)幾次不知所措(多線程調(diào)度觀察)。希望可以充分考慮課上測試強(qiáng)度和其意義,將課上測試的機(jī)制做得更加完善。
在指導(dǎo)書發(fā)布階段,盡量少一些模棱兩可的解釋和例子,盡量細(xì)致,避免看完指導(dǎo)書還是不明真相的現(xiàn)象發(fā)生。
在涉及到多線程,UML等重要知識時,由于涉及的知識量過大,建議課上之前便發(fā)布一些簡明扼要的知識點(diǎn)概括,或者明確告知下次測試將涉及到哪方面的知識。對于一些軟件的使用,由于網(wǎng)上的方法多而雜,建議推出符合教程需求的教程。
老師和助教對本課程的努力改善有目共睹,期待下屆的同學(xué)能在這門課中收獲更多,樂趣更多!
轉(zhuǎn)載于:https://www.cnblogs.com/ArthurN/p/11076520.html
總結(jié)
以上是生活随笔為你收集整理的面向对象第四单元(UML)总结体会课程总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你长期从事农业技术推广工作,你是如何农业
- 下一篇: UML-类图-需要写关联名称吗?