下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)1面向?qū)ο笤O(shè)計(jì)原則實(shí)驗(yàn)實(shí)驗(yàn)學(xué)時(shí):4每組人數(shù):1實(shí)驗(yàn)類型:3(1;基礎(chǔ)型2:綜合型3:設(shè)計(jì)型4:研究型)實(shí)驗(yàn)要求;1(1:必修2:選修3:其他)實(shí)驗(yàn)類別:3(1;基礎(chǔ)2:專業(yè)基礎(chǔ)3:專業(yè)4:其他)1.1實(shí)驗(yàn)?zāi)康?.通過(guò)實(shí)例深入理解和掌握所學(xué)的面向?qū)ο笤O(shè)計(jì)原則。2.熟練使用面向?qū)ο笤O(shè)計(jì)原則對(duì)系統(tǒng)進(jìn)行重構(gòu)。3.熟練繪制重構(gòu)后的結(jié)構(gòu)圖(類圖)。1.2實(shí)驗(yàn)內(nèi)容1.在某繪圖軟件中提供了多種大小不同的畫(huà)筆(Pen),并且可以給畫(huà)筆指定不同顏色,某設(shè)計(jì)人員針對(duì)畫(huà)筆的結(jié)構(gòu)設(shè)計(jì)了如圖1-1所示的初始類圖,通過(guò)仔細(xì)分析,設(shè)計(jì)人員發(fā)現(xiàn)該類圖存在非常嚴(yán)重的問(wèn)題,即如果需要增加一種新的大小或顏色的筆,就需要增加很多子類,例如增加一種綠色的筆,則對(duì)應(yīng)每一種大小的筆都需要增加一支綠色筆,系統(tǒng)中類的個(gè)數(shù)急劇增加。試根據(jù)依賴倒轉(zhuǎn)原則和合成復(fù)用原則對(duì)該設(shè)計(jì)方案進(jìn)行重構(gòu),使得增加新的大小或顏色的筆都較為方便,請(qǐng)繪制重構(gòu)之后的結(jié)構(gòu)圖(類圖)。2.在某公司財(cái)務(wù)系統(tǒng)的初始設(shè)計(jì)方案中存在如圖1-2所示的Employee類,該類包含員工編號(hào)(ID)、姓名(name)、年齡(age)、性別(gender)、薪水(salary),每月工作時(shí)數(shù)(workHoursPerMonth)、每月請(qǐng)假天數(shù)(leaveDaysPerMonth)等屬性,該公司的員工包括全里和兼職兩類,其中每月工作時(shí)數(shù)用于存儲(chǔ)兼職員工每個(gè)月工作的小時(shí)數(shù),每月請(qǐng)假天數(shù)用于存儲(chǔ)全職員工每個(gè)月請(qǐng)假的天數(shù)。系統(tǒng)中兩類員工計(jì)算工資的方法也不一樣,全職工按照工作日數(shù)計(jì)算工資,兼職員工按照工作時(shí)數(shù)計(jì)算工資,因此在Employee類中提供兩個(gè)方法calculateSalaryByDays()和calculateSalaryByHours(),分別用于按照天數(shù)和時(shí)計(jì)算工資,此外,還提供了方法displaySalary()用于顯示工資。試采用所學(xué)面向?qū)ο笤O(shè)計(jì)原則分析圖1-2中Employee類存在的問(wèn)題并對(duì)其進(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)中增加一個(gè)新的組件類,則必須修改與之交互的其他組件類的源代碼。將導(dǎo)致多個(gè)類的源代碼需要修改?;谏鲜龃a,請(qǐng)結(jié)合所學(xué)知識(shí)完成以下兩道練習(xí)題:(1)繪制上述代碼對(duì)應(yīng)的類圖。(2)根據(jù)迪米特法則對(duì)所繪制的類圖進(jìn)行重構(gòu),以降低組件之間的耦合度,繪制重構(gòu)后的類圖。PenPenMiddlePenSmallPenLargerPenBlackSmallPenRedSmallPenBlackMiddlelPenRedMiddlelPenBlackLargerlPenRedLargerlPen圖1-1畫(huà)筆結(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類初始類圖在某圖形庫(kù)API中提供了多種矢量圖模板,用戶可以基于這些矢量圖創(chuàng)建不同的圖形,圖形庫(kù)設(shè)計(jì)人員設(shè)計(jì)的初始類圖如圖1-3所示。圖1-圖1-3圖形庫(kù)初始類圖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在該圖形庫(kù)中,每個(gè)圖形類(例如Circle、Triangle等)的init()方法用于初始化所創(chuàng)建的圖形,setColor()方法用于給圖形設(shè)置邊框顏色,fill()方法用于給圖形設(shè)置填充顏色,setSize()方法用于設(shè)置圖形的大小,display()方法用于顯示圖形。用戶在客戶類(Client)中使用該圖形庫(kù)時(shí)發(fā)現(xiàn)存在如下問(wèn)題:由于在創(chuàng)建窗口時(shí)每次只需要使用圖形庫(kù)中的一種圖形,因此在更換圖形時(shí)需要修改客戶類源代碼。在圖形庫(kù)中增加并使用新的圖形時(shí),需要修改客戶類源代碼??蛻纛愒诿看问褂脠D形對(duì)象之前需要先創(chuàng)建圖形對(duì)象,有些圖形的創(chuàng)建過(guò)程較為復(fù)雜,導(dǎo)致客戶類代碼冗長(zhǎng)且難以維護(hù)。現(xiàn)需要根據(jù)面向?qū)ο笤O(shè)計(jì)原則對(duì)該系統(tǒng)進(jìn)行重構(gòu),要求如下:隔離圖形的創(chuàng)建和使用,將圖形的創(chuàng)建過(guò)程封裝在專門(mén)的類中,客戶類在使用圖形時(shí)無(wú)須直接創(chuàng)建圖形對(duì)象,甚至不需要關(guān)心具體圖形類類名。客戶類能夠方便地更換圖形或使用新增圖形,無(wú)須針對(duì)具體圖形類編程,符合開(kāi)閉原則。請(qǐng)繪制重構(gòu)后的結(jié)構(gòu)圖(類圖)。1.3實(shí)驗(yàn)要求1.選擇合適的面向?qū)ο笤O(shè)計(jì)原則對(duì)系統(tǒng)進(jìn)行重構(gòu)。2.繪制重構(gòu)之后的類圖。1.4實(shí)驗(yàn)步驟練習(xí)1:分析初始設(shè)計(jì)方案存在的問(wèn)題,根據(jù)依賴倒轉(zhuǎn)原則和合成復(fù)用原則對(duì)初始設(shè)計(jì)方案進(jìn)行重構(gòu),繪制重構(gòu)之后的結(jié)構(gòu)圖(類圖
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 14048.12-2025低壓開(kāi)關(guān)設(shè)備和控制設(shè)備第4-3部分:接觸器和電動(dòng)機(jī)起動(dòng)器非電動(dòng)機(jī)負(fù)載用半導(dǎo)體控制器和半導(dǎo)體接觸器
- 對(duì)廣州酒家企業(yè)發(fā)展現(xiàn)狀與思考
- 2025年高職音樂(lè)表演(音樂(lè)演奏)試題及答案
- 2025年大學(xué)本科(供應(yīng)鏈管理)供應(yīng)鏈金融基礎(chǔ)階段測(cè)試題及答案
- 2025年大學(xué)本科(人力資源管理)薪酬體系設(shè)計(jì)階段測(cè)試題及答案
- 2025年高職文書(shū)寫(xiě)作(文書(shū)寫(xiě)作基礎(chǔ))試題及答案
- 高中三年級(jí)生物學(xué)(沖刺)2026年上學(xué)期期末測(cè)試卷
- 2025年大學(xué)大四(行政管理)行政管理綜合試題及解析
- 2025年大學(xué)第一學(xué)年(生物學(xué))生理學(xué)基礎(chǔ)試題及答案
- 2025年大學(xué)油氣開(kāi)采技術(shù)(油氣開(kāi)采工程)試題及答案
- 2024年電大法學(xué)??菩姓ㄅc行政訴訟法網(wǎng)考題庫(kù)
- 起重機(jī)改造合同范本
- 2025中國(guó)醫(yī)藥健康產(chǎn)業(yè)股份有限公司總部有關(guān)領(lǐng)導(dǎo)人員選聘筆試歷年參考題庫(kù)附帶答案詳解
- 2026年企業(yè)財(cái)務(wù)共享中心建設(shè)方案
- 2025年科學(xué)方法與論文寫(xiě)作考試題及答案
- 衛(wèi)生院2025年度全面工作總結(jié)
- 船舶航次風(fēng)險(xiǎn)評(píng)估管理制度(3篇)
- 顱腦解剖教學(xué)課件
- 2025北京重點(diǎn)校初一(上)期末數(shù)學(xué)匯編:有理數(shù)的加減法
- 噴漆車間年終總結(jié)
- 生命體征監(jiān)測(cè)技術(shù)臨床應(yīng)用
評(píng)論
0/150
提交評(píng)論