![面向?qū)ο笙到y(tǒng)分析和設(shè)計(jì)綜合實(shí)驗(yàn)報(bào)告_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/15/e7e23d8b-f384-48ba-90dd-26eda057c08d/e7e23d8b-f384-48ba-90dd-26eda057c08d1.gif)
![面向?qū)ο笙到y(tǒng)分析和設(shè)計(jì)綜合實(shí)驗(yàn)報(bào)告_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/15/e7e23d8b-f384-48ba-90dd-26eda057c08d/e7e23d8b-f384-48ba-90dd-26eda057c08d2.gif)
![面向?qū)ο笙到y(tǒng)分析和設(shè)計(jì)綜合實(shí)驗(yàn)報(bào)告_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/15/e7e23d8b-f384-48ba-90dd-26eda057c08d/e7e23d8b-f384-48ba-90dd-26eda057c08d3.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)名稱:實(shí)驗(yàn) 3設(shè)計(jì)模型實(shí)驗(yàn) 1學(xué)期:2017-2018學(xué)年 第二學(xué)期一、實(shí)驗(yàn)?zāi)康? 熟練使用面向?qū)ο笤O(shè)計(jì)原則對(duì)系統(tǒng)進(jìn)行重構(gòu);2 熟練使用面向?qū)ο缶幊陶Z(yǔ)言(JAVA或C+ )實(shí)現(xiàn)幾種常見(jiàn)的創(chuàng)建型設(shè)計(jì)模式和行為型模式,包括簡(jiǎn)單工廠模式、工廠方法模式、抽象工廠模式和模板方法,理解每一種設(shè)計(jì)模式的模式動(dòng)機(jī),掌握模式結(jié)構(gòu),學(xué)習(xí)如何使用代碼實(shí)現(xiàn)這些模式。二、實(shí)驗(yàn)要求1. 選擇合適的面向?qū)ο笤O(shè)計(jì)原則對(duì)系統(tǒng)進(jìn)行重構(gòu),正確無(wú)誤地繪制重構(gòu)之后的類圖;2. 結(jié)合實(shí)例,正確無(wú)誤地繪制簡(jiǎn)單工廠模式、工廠方法模式、抽象工廠模式和模板方 法的模式結(jié)構(gòu)圖;3. 實(shí)現(xiàn)簡(jiǎn)單工廠模式、工廠方法模式、抽象工廠模式和模板方法,代碼
2、運(yùn)行正確無(wú)誤。三、實(shí)驗(yàn)內(nèi)容1 在某圖形庫(kù) API中提供了多種矢量圖模板,用戶可以基于這些矢量圖創(chuàng)建不同的顯 示圖形,圖形庫(kù)設(shè)計(jì)人員設(shè)計(jì)的初始類圖如下所示:CircleTrian gle+ini t ():void+setColor ():void+fill ():void+setSize ():void+display ():void+in it ():void+setColor ():void+fill ():void+setSize ():void+display ():void+in it ():void+setColor ():void+fill ():void+setSize ():
3、void+display ():voidRecta ngle在該圖形庫(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í)需要修改客戶類源代碼; 客戶類在每次使用圖形對(duì)象之前需要先創(chuàng)建圖形對(duì)象,有些圖形的創(chuàng)建
4、過(guò)程較為復(fù) 雜,導(dǎo)致客戶類代碼冗長(zhǎng)且難以維護(hù)?,F(xiàn)需要根據(jù)面向?qū)ο笤O(shè)計(jì)原則對(duì)該系統(tǒng)進(jìn)行重構(gòu),要求如下: 隔離圖形的創(chuàng)建和使用,將圖形的創(chuàng)建過(guò)程封裝在專門的類中,客戶類在使用圖形 時(shí)無(wú)須直接創(chuàng)建圖形對(duì)象,甚至不需要關(guān)心具體圖形類類名; 客戶類能夠方便地更換圖形或使用新增圖形,無(wú)須針對(duì)具體圖形類編程,符合開(kāi)閉 原則。繪制重構(gòu)之后的類圖并說(shuō)明在重構(gòu)過(guò)程中所運(yùn)用的面向?qū)ο笤O(shè)計(jì)原則。1)重構(gòu)之后的類圖 Rcr+Jiriglt init 血 Slringi*石誠(chéng)函心SlMfig* String-* fl(: 5-tring2)重構(gòu)過(guò)程中所使用的面向?qū)ο笤O(shè)計(jì)原則及簡(jiǎn)要說(shuō)明:開(kāi)閉原則:創(chuàng)建新圖形只要新加入圖形工
5、廠和對(duì)應(yīng)圖形類,不修改源代碼。 依賴倒轉(zhuǎn)原則:針對(duì)接口編程。單一職責(zé)原則:每個(gè)工廠只生產(chǎn)對(duì)應(yīng)圖形。2.某銷售管理系統(tǒng)支持多種支付方式,如現(xiàn)金支付、行用卡支付和代金券支付等,我們可能會(huì)像下面這么寫,考慮用簡(jiǎn)單工廠模式對(duì)其進(jìn)行重構(gòu)。puNk voidtype)i E(pe.e<|LiAlsJ gnoreCuecash")山見(jiàn)能支付處理代碼u&c Ltypc.cqLUilsIgrLDrcCjmc"crCdiLCAfd1")H信用F支村處理代財(cái)else iftvpc L:Ljij;LM.-iii-L-( tLW("voucher4*)"代
6、逾券支討處理代碼bIib1)類圖嚴(yán)+Aj="= -ww O Ipaymelhon0 payO: voidIII& 匚 redrtCa rd:O Cash Voucher© payQ:void召 pyQ: voidi payO: void7T1: 1 i11 1 41 l111!11!11;11亠O IpayFactory# createPaymethontpaymethon: Stnng: Ipaymethon2) 實(shí)現(xiàn)代碼:public class Client public static void main(String args) IpayFactory iF
7、actory = new lpayFactory();Ipaymeth on paymeth on = iFactory .createPaymeth on( "cash"); if (paymethon != null) paymethon .pay(); else System.out .println( "error");public class IpayFactory public Ipaymeth on createPaymeth on( Stri ngpaymeth on )if (paymethon .equalsignoreCase( &
8、quot;cash") return new Cash();else if (paymethon .equalsignoreCase( "creditcard" ) return new CreditCard();if (paymethon .equalsignoreCase( "voucher" ) return new Voucher();else return null ;public in terface Ipaymeth on public void pay();public class Cash implements Ipaymet
9、hon public void pay()System.out .println( "Cash pay");public class CreditCard implements Ipaymethon public void pay()System.out .printin( "CreditCard pay");public class Voucher implements Ipaymethon public void pay()System.out .println( "Voucher pay");3) 實(shí)現(xiàn)結(jié)果:貝 Console
10、£3wterminat已d > Cliert (4曲a Application C:jCash pay3使用簡(jiǎn)單工廠模式設(shè)計(jì)一個(gè)可以創(chuàng)建不同幾何形狀(Shape),如圓形(Circle)、矩形(Rectangle)和三角形(Triangle)等的繪圖工具類,每個(gè)幾何圖形均具有繪制Draw()和擦除Erase()兩個(gè)方法,要求在繪制不支持的幾何圖形時(shí),拋出一個(gè)Un supportedShapeException異常,繪制類圖并編程模擬實(shí)現(xiàn)。1)類圖0- erase|lc void CknlO Shapevoid> drawn: void> erase0: voidw
11、Un su pp o rted Shd peExceplb o n 02)實(shí)現(xiàn)代碼:public in terface Shape public void draw();public void erase();public class Circle implements Shape public void draw()System.out .println( "draw Circle");public void erase()System.out .println( "erase Circle");public class Rectangle imple
12、ments Shape public void draw()System. out .println( "draw Rectangle");public void erase()System. out .println( "erase Rectangle");public class Triangle implements Shape public void draw()System.out .println( "draw Triangle");public void erase()System.out .println( "
13、;erase Triangle");public class ShapeFactory public static Shape produceShape(String shape) throws UnsupportedShapeException if (shape .equals( "Circle") System.out .println( "Circle");return new Circle();else if (shape .equals("Triangle") System.out.println( "
14、Triangle");return new Triangle();else if (shape .equals( "Rectangle") System.out.println( "Rectangle");return new Rectangle();else throw new UnsupportedShapeException();public class UnsupportedShapeException extends Exceptionpublic UnsupportedShapeException ()System.out .pri
15、 ntln("繪制圖形異常,請(qǐng)確認(rèn)輸入圖形。");public class Client public static void main(String args) ShapeFactory shapeFactory = new ShapeFactory();try shapeFactory .produceShape("Circle" ).draw():shapeFactory .produceShape("Circle" ).erase(); catch (Un supportedShapeExcepti on e) e.pri n
16、tStackTrace();3) 實(shí)現(xiàn)結(jié)果:<t' Javadoc 虧>ecLaration Console £3毗普rrninntedA Client (£) Jbyb Application 01四泊息0_152占Circledraw i匚1eCircleerase Circle4. 現(xiàn)需要設(shè)計(jì)一個(gè)程序來(lái)讀取多種不同類型的圖片格式,針對(duì)每一種圖片格式都設(shè)計(jì)一個(gè)圖片讀取器(ImageReader),如GIF圖片讀取器(GifReader)用于讀取 GIF格式的圖片、JPG 圖片讀取器(JpgReader)用于讀取 JPG格式的圖片。圖片讀取器對(duì)象通過(guò)圖
17、片讀取器工廠 ImageReaderFactory 來(lái)創(chuàng)建,ImageReaderFactory是一個(gè)抽象類,用于定義創(chuàng)建圖片讀取 器的工廠方法,其子類GifReaderFactory和JpgReaderFactory用于創(chuàng)建具體的圖片讀取器對(duì) 象。試使用工廠方法模式設(shè)計(jì)該程序,繪制類圖并編程模擬實(shí)現(xiàn)。需充分考慮系統(tǒng)的靈活性和可擴(kuò)展性。1) 類圖2) 實(shí)現(xiàn)代碼:public class Client public static void main(String args) JpgReaderFactory jFactory = new JpgReaderFactory。; jFactory .
18、producelmageReader().readimage();GifReaderFactory gFactory = new GifReaderFactory(); gFactory .producelmageReader().readimage();public in terface PageReader public void readimage();public class GifReader implements ImageReader public void readimage()System.out .println( "Read gif image.");
19、public class JpgReader implements ImageReader public void readimage()System.out .println( "jpg reader");System.out .println( "Read jpg image.");public abstract class ImageReaderFactory public abstract ImageReader producelmageReader();public class GifReaderFactory extends ImageRea
20、derFactory public ImageReader producelmageReader()System.out .println( "gif reader");return new GifReader();public class JpgReaderFactory extends ImageReaderFactory public ImageReader produceImageReader()return new JpgReader();3)實(shí)現(xiàn)結(jié)果:蝕 Javadoc 應(yīng) DeclarationB Console 腐<terminated> Cli
21、ent (1) Java Application D:javajdkjpg reader Read jpg image.gif reader Read gi-f image 5. 有一個(gè)OEM制造商代理做 HP筆記本電腦(Laptop),后來(lái)該制造商得到了更多的品牌筆記本電腦的訂單 Acer, Lenovo , Dell,該OEM商發(fā)現(xiàn),如果一次同時(shí)做很多個(gè)牌子的 本本,有些不利于管理。利用工廠模式改善設(shè)計(jì),繪制類圖并編程模擬實(shí)現(xiàn)。1)類圖2)實(shí)現(xiàn)代碼:public class Client public static void main(String args)IFactory lf = n
22、ew HpFactory();Laptop tp = If .createLaptop();tp .show();lf = new AcerFactory(); tp = lf.createLaptop(); tp .show();lf = new Leno voFactory();tp = lf.createLaptop();tp .show();lf = new DellFactory(); tp = lf.createLaptop(); tp .show();public in terface IFactory public Laptop createLaptop();public cl
23、ass AcerFactory implements IFactory public Laptop createLaptop() return new AcerLaptop();public class DellFactory implements IFactory public Laptop createLaptop() return new DellLaptop();public class HpFactory implements IFactory public Laptop createLaptop()return new HpLaptop();public class LenovoF
24、actory implements IFactory public Laptop createLaptop()return new LenovoLaptop();public abstract class Laptop public void show();public class AcerLaptop extends Laptop public void show()System.out .println( "AcerLaptop");public class DellLaptop extends Laptop public void show()System.out .
25、println( "DellLaptop");public class HpLaptop extends Laptop public void show()System.out .println(”HpLaptop");public class LenovoLaptop extends Laptop public void show()System.out .println( "LenovoLaptop"); 3) 實(shí)現(xiàn)結(jié)果:J-avadoc 冏 Decoration S Console 揺<terminated> Client J
26、ava ApplicationHpLaptopAcerLaptopLenovoLaptopDellLaptop6. 某軟件公司欲開(kāi)發(fā)一套界面皮膚庫(kù),可以對(duì)桌面軟件進(jìn)行界面美化。不同的皮膚將 提供視覺(jué)效果不同的按鈕、文本框、組合框等界面元素,其結(jié)構(gòu)如下圖所示:開(kāi)發(fā)人員繪制類該皮膚庫(kù)需要具備良好的靈活性和可擴(kuò)展性,用戶可以自由選擇不同的皮膚,可以在不修改既有代碼的基礎(chǔ)上增加新的皮膚。試使用抽象工廠模式設(shè)計(jì)該皮膚庫(kù), 圖并編程模擬實(shí)現(xiàn)。1)類圖2)實(shí)現(xiàn)代碼:public class Client public static void main(String args) SpringSkinFacto
27、ry skinFactory = new SpringSkinFactory(); skinFactory .createButton().action();skinFactory .createTextbox().action();skinFactory .createCombobox().action();public in terface SkinF actory public AbstractButton createButton();public AbstractTextbox createTextbox();public AbstractCombobox createCombobo
28、x();public class SpringSkinFactory implements SkinFactory public AbstractButton createButton()System.out .pri ntl n(” 生成 gree n butt on"); return new GreenButton();public AbstractTextbox createTextbox()System.out .println(”生成 green textbox"); return new GreenTextbox();public AbstractCombob
29、ox createCombobox()System.out .println(”生成 green combobox");return new GreenCombobox();public class SummerSkinFactory implementsSkinFactory public AbstractButton createButton()System.out .println("生成 blue button"); return new BlueButton();public AbstractTextbox createTextbox() System.
30、out .println("生成 blue textbox"); return new BlueTextbox();public AbstractCombobox createCombobox() System.out .println(”生成 blue combobox"); return new BlueCombobox();public in terface AbstractButt on public void action。;public class GreenButton implements AbstractButton Overridepublic
31、 void action。System.out .pri ntln( "Gree n butt on");public class BlueButton implements AbstractButton Overridepublic void action。System.out .println( "Blue button");public in terface AbstractTextbox public void action。;public class GreenTextbox implements AbstractTextbox Overrid
32、epublic void action。System.out .println( "Green Textbox");public class BlueTextbox implements AbstractTextbox Overridepublic void action。System.out .println( "Blue Textbox");public in terface AbstractCombobox public void action。;public class GreenCombobox implements AbstractCombo
33、box public void action。System.out .println( "Green Combobox");public class BlueCombobox implements AbstractCombobox public void action。System.out .printin( "Blu Combobox");3)實(shí)現(xiàn)結(jié)果:聞i息 DeclarationS Console SS<terminated 匚lient (3 i JavaApplication) 口旳avajdk1 8.0 1 -green buttonG
34、reen buttongreen textboxGreen Textboxgreen combobox Green Combobox7. 麥當(dāng)勞(McDo nalds )和肯德基(KFC)快餐店都經(jīng)營(yíng)漢堡(Hamburg )和可樂(lè)(Cola), 用控制臺(tái)應(yīng)用程序?qū)崿F(xiàn)這兩個(gè)快餐店經(jīng)營(yíng)產(chǎn)品的抽象工廠模式,并繪制該模式的UML圖。1)類圖2) 實(shí)現(xiàn)代碼:public class Client public static void main(String args) Hamburg h;Cola c;AbstractFactory af = new MDNFactory(); h = af.creat
35、eHamburg();c = af.createCola();h.getHumburg();c.getCola();af = new KDJFactory();h = af.createHamburg();c = af.createCola();h.getHumburg();c.getCola();public in terface AbstractFactory public Hamburg createHamburg();public Cola createCola();public class KDJFactory implements AbstractFactory Overridep
36、ublic Hamburg createHamburg() return new KDJHamburg();Overridepublic Cola createCola() return new KDJCola();public class MDNFactory implements AbstractFactory Overridepublic Hamburg createHamburg() return new MDNHamburg();Overridepublic Cola createCola() return new MDNCola();public in terface Cola p
37、ublic void getCola();public class KDJCola implements Cola Overridepublic void getCola() System.out .printin( "KDJCola");public class MDNCola implements Cola Overridepublic void getCola() System.out .println( "MDNCola");public in terface Hamburg public void getHumburg();public cla
38、ss KDJHamburg implements Hamburg Overridepublic void getHumburg() System.out .printin( "KDJHamburg"); public class MDNHamburg implements Hamburg Overridepublic void getHumburg() System.out .println( "MDNHamburg");3)實(shí)現(xiàn)結(jié)果:w Javadoc 打 Dclaratjon 貝匚onole 氏 | < terminated> Client Java Application D:je MDNHamburgMDNCola KDJHamburgKDJColai8. 某軟件公司要為某銀行的業(yè)務(wù)支撐系統(tǒng)開(kāi)發(fā)一個(gè)利息計(jì)算模塊,利息的計(jì)算流程如 下:(1) 系統(tǒng)根據(jù)賬號(hào)和密碼驗(yàn)證用戶信息,如果用戶信息錯(cuò)誤,則系統(tǒng)顯示出錯(cuò)提示。(2)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 4-Fluoromethcathinone-metabolite-hydrochloride-生命科學(xué)試劑-MCE-5559
- 二零二五年度股權(quán)無(wú)償轉(zhuǎn)讓與公司網(wǎng)絡(luò)安全保障合同
- 2025年度電商平臺(tái)促銷活動(dòng)返利協(xié)議
- 二零二五年度汽車行業(yè)綠色出行貸款合同
- 施工現(xiàn)場(chǎng)施工防放射性物質(zhì)泄漏威脅制度
- 線上線下融合營(yíng)銷在家居用品市場(chǎng)的實(shí)踐
- 教育孩子的社交技巧親子互動(dòng)指南
- 現(xiàn)代辦公環(huán)境下的學(xué)校災(zāi)難預(yù)防措施探討
- DB35T 2226-2024村(居)便民幫代辦服務(wù)規(guī)范
- 事業(yè)單位勞動(dòng)合同管理指導(dǎo)意見(jiàn)
- 2025年熱管換熱氣行業(yè)深度研究分析報(bào)告
- 2025年陜西西安市經(jīng)濟(jì)技術(shù)開(kāi)發(fā)區(qū)管委會(huì)招聘30人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025山東能源集團(tuán)中級(jí)人才庫(kù)選拔高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《安利蛋白質(zhì)粉》課件
- 【可行性報(bào)告】2024年數(shù)據(jù)標(biāo)注與審核項(xiàng)目可行性研究分析報(bào)告
- 2024-2025學(xué)年滬科版數(shù)學(xué)七年級(jí)上冊(cè)期末綜合測(cè)試卷(一)(含答案)
- 2025門診護(hù)理工作計(jì)劃
- 《針?lè)ň姆ā氛n件-溫灸器灸
- 電氣領(lǐng)域知識(shí)培訓(xùn)課件
- 山東省部分學(xué)校2024-2025學(xué)年高一上學(xué)期12月選科指導(dǎo)聯(lián)合測(cè)試地理試題( 含答案)
- 《淄博張店區(qū)停車問(wèn)題治理現(xiàn)狀及優(yōu)化對(duì)策分析【開(kāi)題報(bào)告+正文】15000字 》
評(píng)論
0/150
提交評(píng)論