OO第四单元博客作业
一、UML作業(yè)架構(gòu)設(shè)計(jì)
1、第一次作業(yè)
?其中 Main 是入口類,MyUmlinteraction實(shí)現(xiàn)了接口,UmlInteractionBase為MyUmlinteraction實(shí)現(xiàn)提供了底層功能,MyClass和MyMethod是一些UML元素的包裝。下面是具體實(shí)現(xiàn)。
?
2、第二次作業(yè)
自己對(duì)三類不同的UML圖分別進(jìn)行了建模。另外自己將接口實(shí)現(xiàn)和核心功能提供分開(kāi)處理。最后運(yùn)用組合設(shè)計(jì)模式來(lái)實(shí)現(xiàn)總的功能。
?
二、四個(gè)單元中的架構(gòu)設(shè)計(jì)及OO方法理解的演進(jìn)
1、第一單元
自己第一單元并沒(méi)有使用什么框架,主要是使用了接口作為各種函數(shù)的類型而可以統(tǒng)一處理,這樣節(jié)省了許多無(wú)聊代碼。
2、第二單元
自己的設(shè)計(jì)基于 blockqueue 框架。且三次作業(yè)都是同一個(gè)設(shè)計(jì)策略。
核心數(shù)據(jù)結(jié)構(gòu)是一個(gè)阻塞隊(duì)列,用于保存請(qǐng)求隊(duì)列,其他模塊主要是與該隊(duì)列交互。
請(qǐng)求生成器:用于獲得請(qǐng)求,并將請(qǐng)求加入請(qǐng)求隊(duì)列。
請(qǐng)求調(diào)度器:用于將請(qǐng)求派給不同的電梯。
電梯:用于處理被分配的請(qǐng)求。
在第二次作業(yè)時(shí),只是修改了電梯對(duì)于執(zhí)行請(qǐng)求的策略,增加了捎帶功能。
在第三次作業(yè)時(shí),只是復(fù)制了兩部電梯,其行為模式完全相同,但是請(qǐng)求調(diào)度器給其分配的請(qǐng)求種類有差別。另外,乘客在下電梯時(shí),若其沒(méi)到最終目的地,則由電梯修改其出發(fā)地后將請(qǐng)求加入隊(duì)列。請(qǐng)求調(diào)度器無(wú)法區(qū)分由電梯加入的請(qǐng)求和請(qǐng)求生成器加入的請(qǐng)求。
3、第三單元
自己使用了分層接口來(lái)分解功能,并分層實(shí)行,使得可以把一個(gè)復(fù)雜的功能分解為從低層到高層的功能來(lái)逐步實(shí)現(xiàn),易于實(shí)現(xiàn)和維護(hù)。
4、第四單元
自己將三種UML圖分別建模,然后在一個(gè)總UML模型類中組合這些不同的UML圖。
三、四個(gè)單元中測(cè)試?yán)斫馀c實(shí)踐的演進(jìn)
1、第一單元
自己沒(méi)有采用系統(tǒng)性的測(cè)試策略來(lái)覆蓋所有代碼執(zhí)行路徑,只是隨機(jī)想了幾個(gè)數(shù)據(jù)點(diǎn)。在代碼簡(jiǎn)單時(shí)這種策略似乎還可以,但是在代碼稍微復(fù)雜一些時(shí),我為此吃了苦頭:自己互測(cè)時(shí)被?的好狠啊,結(jié)果只要一行代碼就全部搞定了。如果自己做了覆蓋性測(cè)試,就不會(huì)這樣了。就是這個(gè)單元,讓我明白了測(cè)試的重要性,讓我明白了測(cè)試是代碼編寫的不可分割的重要一部分。
2、第二單元
這個(gè)單元我用了單元測(cè)試,可是對(duì)于多線程測(cè)試,確實(shí)發(fā)現(xiàn)其測(cè)試非常棘手。并且對(duì)于互測(cè)中發(fā)現(xiàn)的bug自己無(wú)法復(fù)現(xiàn)。這讓我明白,如何做好測(cè)試也是非常需要思考的。如何看出bug樣例的模式,并用最簡(jiǎn)單的樣例復(fù)現(xiàn)錯(cuò)誤,這是非常功夫的。
3、第三單元
第三單元我用了單元測(cè)試,并且使用了一定的測(cè)試策略,這次的效果還是可以。但是這個(gè)單元其實(shí)是JML的形式驗(yàn)證,但是自己感覺(jué)這個(gè)并不能很好發(fā)現(xiàn)bug。往往寫出正確的規(guī)格需要對(duì)問(wèn)題的很好理解,而bug的原因有很多是對(duì)問(wèn)題的理解程度不夠,因此我感覺(jué)JML規(guī)格除了讓機(jī)器幫忙檢查代碼一致性問(wèn)題外,在自己手中并不能發(fā)揮很大的作用。
4、第四單元
由于是在考期,自己沒(méi)時(shí)間進(jìn)行覆蓋性測(cè)試,第一次還好,第二次就果然涼涼!看來(lái)自己必須把測(cè)試看作是編碼的一部分,或許可以考慮先寫測(cè)試。
四、課程收獲
這學(xué)期的OO自己感覺(jué)學(xué)到了不少東西。首先自己學(xué)會(huì)了java語(yǔ)言的基本操作。并且自己學(xué)會(huì)了OO的思想,學(xué)會(huì)了多線程編程,還了解了JML和UML。回想自己奉獻(xiàn)給OO的多少個(gè)周末,多少個(gè)凌晨,現(xiàn)在回想起來(lái),感覺(jué)還是頗值。
五、具體改進(jìn)建議
1、實(shí)驗(yàn)作業(yè)的定位不夠清晰。這學(xué)期早上學(xué)習(xí)新內(nèi)容,下午做實(shí)驗(yàn),但是自己做完實(shí)驗(yàn)后是懵逼的,感覺(jué)時(shí)間很緊。個(gè)人覺(jué)得如果實(shí)驗(yàn)的目的不是考核,而是幫助理解所學(xué)內(nèi)容的話,應(yīng)該允許實(shí)驗(yàn)內(nèi)容沒(méi)有做完的可以課后繼續(xù)做,且給出答案,這樣利于進(jìn)步。
2、JML單元感覺(jué)有些不夠完善。自己是體驗(yàn)了不少內(nèi)容,可是只是限于體驗(yàn)而已。
3、研討課交流環(huán)節(jié)互相可以改為小組交流或者代碼評(píng)審。
轉(zhuǎn)載于:https://www.cnblogs.com/yorkyer/p/11079169.html
總結(jié)
以上是生活随笔為你收集整理的OO第四单元博客作业的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [route]Add up route
- 下一篇: 面试流程要点