面向?qū)ο笤O(shè)計原則實驗?zāi)0錩第1頁
面向?qū)ο笤O(shè)計原則實驗?zāi)0錩第2頁
面向?qū)ο笤O(shè)計原則實驗?zāi)0錩第3頁
面向?qū)ο笤O(shè)計原則實驗?zāi)0錩第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

實驗1面向?qū)ο笤O(shè)計原則實驗實驗學(xué)時:4每組人數(shù):1實驗類型:3(1;基礎(chǔ)型2:綜合型3:設(shè)計型4:研究型)實驗要求;1(1:必修2:選修3:其他)實驗類別:3(1;基礎(chǔ)2:專業(yè)基礎(chǔ)3:專業(yè)4:其他)1.1實驗?zāi)康?.通過實例深入理解和掌握所學(xué)的面向?qū)ο笤O(shè)計原則。2.熟練使用面向?qū)ο笤O(shè)計原則對系統(tǒng)進(jìn)行重構(gòu)。3.熟練繪制重構(gòu)后的結(jié)構(gòu)圖(類圖)。1.2實驗內(nèi)容1.在某繪圖軟件中提供了多種大小不同的畫筆(Pen),并且可以給畫筆指定不同顏色,某設(shè)計人員針對畫筆的結(jié)構(gòu)設(shè)計了如圖1-1所示的初始類圖,通過仔細(xì)分析,設(shè)計人員發(fā)現(xiàn)該類圖存在非常嚴(yán)重的問題,即如果需要增加一種新的大小或顏色的筆,就需要增加很多子類,例如增加一種綠色的筆,則對應(yīng)每一種大小的筆都需要增加一支綠色筆,系統(tǒng)中類的個數(shù)急劇增加。試根據(jù)依賴倒轉(zhuǎn)原則和合成復(fù)用原則對該設(shè)計方案進(jìn)行重構(gòu),使得增加新的大小或顏色的筆都較為方便,請繪制重構(gòu)之后的結(jié)構(gòu)圖(類圖)。2.在某公司財務(wù)系統(tǒng)的初始設(shè)計方案中存在如圖1-2所示的Employee類,該類包含員工編號(ID)、姓名(name)、年齡(age)、性別(gender)、薪水(salary),每月工作時數(shù)(workHoursPerMonth)、每月請假天數(shù)(leaveDaysPerMonth)等屬性,該公司的員工包括全里和兼職兩類,其中每月工作時數(shù)用于存儲兼職員工每個月工作的小時數(shù),每月請假天數(shù)用于存儲全職員工每個月請假的天數(shù)。系統(tǒng)中兩類員工計算工資的方法也不一樣,全職工按照工作日數(shù)計算工資,兼職員工按照工作時數(shù)計算工資,因此在Employee類中提供兩個方法calculateSalaryByDays()和calculateSalaryByHours(),分別用于按照天數(shù)和時計算工資,此外,還提供了方法displaySalary()用于顯示工資。試采用所學(xué)面向?qū)ο笤O(shè)計原則分析圖1-2中Employee類存在的問題并對其進(jìn)行重構(gòu)繪制重構(gòu)之后的類圖。在某圖形界面中存在如下代碼片段,組件類之間有較為復(fù)雜的相互引用關(guān)系://按鈕類publicclassButton(privateListlist;privateComboBoxcb;privateTextBoxtb;privateLabellabel;//...publicvoidchange()(List.update();cb.update();tb.update(),label,update();publicvoidupdate(){//...}//...}//列表框類publicclassList{privateComboBoxcb;privateTextBoxtb;//...publicvoidchange(){cb.update();tbupdate();}publicvoidupdate(){//...}//...}//組合框類publicclassComboBox{privateListlist;privateTextBoxtb;//...publicvoidchange(){listupdate();tbupdate();}publicvoidupdate(){//...}//...}//文本框類publicclassTextBox{privateListlist;privateComboBoxcb;//...publicvoidchange(){list.update();cb.update();}publievotdupdate()(//...}//...}//文本標(biāo)簽類publicclassLabel{//...publicvoidupdate()(//...}//...}如果在上述系統(tǒng)中增加一個新的組件類,則必須修改與之交互的其他組件類的源代碼。將導(dǎo)致多個類的源代碼需要修改?;谏鲜龃a,請結(jié)合所學(xué)知識完成以下兩道練習(xí)題:(1)繪制上述代碼對應(yīng)的類圖。(2)根據(jù)迪米特法則對所繪制的類圖進(jìn)行重構(gòu),以降低組件之間的耦合度,繪制重構(gòu)后的類圖。PenPenMiddlePenSmallPenLargerPenBlackSmallPenRedSmallPenBlackMiddlelPenRedMiddlelPenBlackLargerlPenRedLargerlPen圖1-1畫筆結(jié)構(gòu)初始類圖EmployeeEmployee-ID:String-namc:String-age:int-gender:String-salary:double-workHoursPerMonth:int-leaveDaysPerMonth:int+calculateSalaryByDays():double+calculateSalaryByHours():double+displaySalary():void圖1-2Employee類初始類圖在某圖形庫API中提供了多種矢量圖模板,用戶可以基于這些矢量圖創(chuàng)建不同的圖形,圖形庫設(shè)計人員設(shè)計的初始類圖如圖1-3所示。圖1-圖1-3圖形庫初始類圖ClientTriangle+init():void+setColor():void+fill0:void+setSize():void+displayO:voidCircle+init():void+setColor():void+fill0:void+setSize():void+displayO:voidRectangle+init():void+setColor():void+fill0:void+setSize():void+displayO:void在該圖形庫中,每個圖形類(例如Circle、Triangle等)的init()方法用于初始化所創(chuàng)建的圖形,setColor()方法用于給圖形設(shè)置邊框顏色,fill()方法用于給圖形設(shè)置填充顏色,setSize()方法用于設(shè)置圖形的大小,display()方法用于顯示圖形。用戶在客戶類(Client)中使用該圖形庫時發(fā)現(xiàn)存在如下問題:由于在創(chuàng)建窗口時每次只需要使用圖形庫中的一種圖形,因此在更換圖形時需要修改客戶類源代碼。在圖形庫中增加并使用新的圖形時,需要修改客戶類源代碼。客戶類在每次使用圖形對象之前需要先創(chuàng)建圖形對象,有些圖形的創(chuàng)建過程較為復(fù)雜,導(dǎo)致客戶類代碼冗長且難以維護(hù)?,F(xiàn)需要根據(jù)面向?qū)ο笤O(shè)計原則對該系統(tǒng)進(jìn)行重構(gòu),要求如下:隔離圖形的創(chuàng)建和使用,將圖形的創(chuàng)建過程封裝在專門的類中,客戶類在使用圖形時無須直接創(chuàng)建圖形對象,甚至不需要關(guān)心具體圖形類類名。客戶類能夠方便地更換圖形或使用新增圖形,無須針對具體圖形類編程,符合開閉原則。請繪制重構(gòu)后的結(jié)構(gòu)圖(類圖)。1.3實驗要求1.選擇合適的面向?qū)ο笤O(shè)計原則對系統(tǒng)進(jìn)行重構(gòu)。2.繪制重構(gòu)之后的類圖。1.4實驗步驟練習(xí)1:分析初始設(shè)計方案存在的問題,根據(jù)依賴倒轉(zhuǎn)原則和合成復(fù)用原則對初始設(shè)計方案進(jìn)行重構(gòu),繪制重構(gòu)之后的結(jié)構(gòu)圖(類圖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論