版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《軟件體系結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告項(xiàng)目名稱(chēng) 結(jié)構(gòu)型設(shè)計(jì)模式實(shí)驗(yàn)專(zhuān)業(yè)班級(jí) 1206 學(xué)號(hào) 3901120604 姓名 金初陽(yáng) 實(shí)驗(yàn)成績(jī):批閱教師:實(shí)驗(yàn)4結(jié)構(gòu)型設(shè)計(jì)模式實(shí)驗(yàn)實(shí)驗(yàn)學(xué)時(shí):_2每組人數(shù):一]實(shí)驗(yàn)類(lèi)型:_3 (1:基礎(chǔ)性2:綜合性 3:設(shè)計(jì)性4:研究性)實(shí)驗(yàn)要求:一1 (1:必修2:選修 3:其它)實(shí)驗(yàn)類(lèi)別:一3 (1:基礎(chǔ)2:專(zhuān)業(yè)基礎(chǔ)3:專(zhuān)業(yè)4:其它)ー、實(shí)驗(yàn)?zāi)康氖炀毷褂肞owerDesigner和任意ー種面向?qū)ο缶幊陶Z(yǔ)言實(shí)現(xiàn)幾種常見(jiàn)的結(jié)構(gòu)型設(shè)計(jì)模式,包括適配器模式、組合模式和外觀模式,理解每ー種設(shè)計(jì)模式的模式動(dòng)機(jī),掌握模式結(jié)構(gòu),學(xué)習(xí)如何使用代碼實(shí)現(xiàn)這些模式。二、實(shí)驗(yàn)內(nèi)容.現(xiàn)有一個(gè)接口DataOperation定義了排序方法sort(int口)和查找方法search(int[],int),已知類(lèi)Quicksort的quickSort(intロ)方法實(shí)現(xiàn)了快速排序算法,類(lèi)BinarySearch的binarySearch(intロ,int)方法實(shí)現(xiàn)了二分查找算法。試使用適配器模式設(shè)計(jì)ー個(gè)系統(tǒng),在不修改源代碼的情況下將類(lèi)Quicksort和類(lèi)BinarySearch的方法適配到DataOperation接口中。繪制類(lèi)圖并編程實(shí)現(xiàn)。(要求實(shí)現(xiàn)快速排序和二分查找,使用對(duì)象適配器實(shí)現(xiàn)).WindowsMediaPlayer和RealPlayer是兩種常用的媒體播放器,它們的API結(jié)構(gòu)和調(diào)用方法存在區(qū)別。現(xiàn)在你的應(yīng)用程序需要支持這兩種播放器API,而且在將來(lái)可能還需要支持新的媒體播放器,請(qǐng)問(wèn)如何設(shè)計(jì)該應(yīng)用程序?繪制類(lèi)圖并編程模擬實(shí)現(xiàn)。.使用組合模式設(shè)計(jì)ー個(gè)殺毒軟件(AntiVirus)的框架,該軟件既可以對(duì)某個(gè)文件夾(Folder)殺毒,也可以對(duì)某個(gè)指定的文件(File)進(jìn)行殺毒,文件種類(lèi)包括文本文件TextFile、圖片文件ImageFile、視頻文件VideoFile。繪制類(lèi)圖并編程模擬實(shí)現(xiàn)。.某教育機(jī)構(gòu)組織結(jié)構(gòu)如下圖所示:在該教育機(jī)構(gòu)的OA系統(tǒng)中可以給各級(jí)辦公室下發(fā)公文,試采用組合模式設(shè)計(jì)該機(jī)構(gòu)的組織結(jié)構(gòu),繪制相應(yīng)的類(lèi)圖并編程模擬實(shí)現(xiàn),在客戶(hù)端代碼中模擬下發(fā)公文。.某軟件公司為新開(kāi)發(fā)的智能手機(jī)控制與管理軟件提供了?鍵備份功能,通過(guò)該功能可以將原本存儲(chǔ)在手機(jī)中的通信錄、短信、照片、歌曲等資料一次性全部拷貝到移動(dòng)存儲(chǔ)介質(zhì)(例如MMC卡或SD卡)中。在實(shí)現(xiàn)過(guò)程中需要與多個(gè)已有的類(lèi)進(jìn)行交互,例如通訊錄管理類(lèi)、短信管理類(lèi)等,為了降低系統(tǒng)的耦合度,試使用外觀模式來(lái)設(shè)計(jì)并編程模擬實(shí)現(xiàn)該ー鍵備份功能。6,某信息系統(tǒng)需要提供ー個(gè)數(shù)據(jù)處理和報(bào)表顯示模塊,該模塊可以讀取不同類(lèi)型的文件中的數(shù)據(jù)并將數(shù)據(jù)轉(zhuǎn)換成XML格式,然后對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,最后以報(bào)表方式來(lái)顯示數(shù)據(jù)。由于該過(guò)程需要涉及到多個(gè)類(lèi),試使用外觀模式設(shè)計(jì)該數(shù)據(jù)處理和報(bào)表顯示模塊??紤]到有些文件本身已經(jīng)是XML格式,無(wú)須進(jìn)行格式轉(zhuǎn)換,為了讓系統(tǒng)具有更好的擴(kuò)展性,在系統(tǒng)設(shè)計(jì)中可以引入抽象外觀類(lèi)。三、實(shí)驗(yàn)要求.結(jié)合實(shí)例,正確無(wú)誤地繪制適配器模式、組合模式和外觀模式的模式結(jié)構(gòu)圖:.使用任意ー種面向?qū)ο缶幊陶Z(yǔ)言實(shí)現(xiàn)適配器模式、組合模式和外觀模式實(shí)例,代碼運(yùn)行正確無(wú)誤。四、實(shí)驗(yàn)步驟.結(jié)合實(shí)例,使用PowerDesigner繪制適配器模式實(shí)例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z(yǔ)言實(shí)現(xiàn)該模式實(shí)例;.結(jié)合實(shí)例,使用PowerDesigner繪制適配器模式實(shí)例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z(yǔ)言實(shí)現(xiàn)該模式實(shí)例:.結(jié)合實(shí)例,使用PowerDesigner繪制組合模式實(shí)例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z(yǔ)言實(shí)現(xiàn)該模式實(shí)例:.結(jié)合實(shí)例,使用PowerDesigner繪制組合模式實(shí)例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z(yǔ)言實(shí)現(xiàn)該模式實(shí)例:.結(jié)合實(shí)例,使用PowerDesigner繪制外觀模式實(shí)例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z(yǔ)言實(shí)現(xiàn)該模式實(shí)例:.結(jié)合實(shí)例,使用PowerDesigner繪制外觀模式實(shí)例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z(yǔ)言實(shí)現(xiàn)該模式實(shí)例。五、實(shí)驗(yàn)結(jié)果1.類(lèi)圖:實(shí)現(xiàn)代碼:Client.javapackagecom.exercise2.Test1;importutil.ParseXML;publicclassClient{publicstaticvoidmain(String[]args){DataOperationoperation=(DataOperation)ParseXML.getBeanObjO;int[]array={1,3,4,56,34,54,67,8);int[]array1={1,3,4,8,34,54,56,67);intkey=8;System.out.println("原始數(shù)組)for(inti=0;i<array.length;i++){System.out.print(array[i]+い);)System.out.println(" n);operation.sort(array);System.out.println("快排之后的數(shù)據(jù)");for(inti=0;i<array.length;i++){System.out.print(array[i]+“");)System.out.println(H *');System.out.println("indexof"+key+”:n4-operation.search(arrayl,key));DataOperation.javapackagecom.exercise2.Testl;publicinterfaceDataOperation{voidsort(int[]array);intsearch(int[]array,intkey);}DataOperationAdapter.javapackagecom.exercise2.Testl;publicclassDataOperationAdapterimplementsDataOperation{?Overridepublicvoidsort(int[]array){QuickSort.sort(array);?Overridepublicintsearch(int[]array,intkey){returnBinarySearch.binarySearch(array,key);)QuickSort.javapackagecom.exercise2.Testl;importjava.util.Arrays;publicclassQuicksort{publicstaticvoidsort(int[]array){Arrays.sort(array);}}BinarySearch.javapackagecom.exercise2.Testl;publicclassBinarySearch{publicstaticintbinarySearch(int[]array,intkey){QuickSort.sort(array);intlow=0;inthigh=array.length-1;intmiddle=(low+high)/2;while(low<=high){middle=(low+high)/2;if(key>array[middle]){low=middle+1;}elseif(key<array[middle]){high=middle-1;}else{returnmiddle;))return-1;}}實(shí)驗(yàn)結(jié)果:原始數(shù)組134563454678 - - 快排之后的數(shù)據(jù)134834545667 indexof8:32.類(lèi)圖:
ー實(shí)現(xiàn)代碼:Cilent.javapackagecom.exercise2.Test2;importjava.io.File;importutil.ParseXML;publicclassCilent{publicstaticvoidmain(String[]args){Targettarget=(Target)ParseXML.getBeanObjO;Filefile=newFile,”);target.play(file);Target.javapackagecom.exercise2.Test2;importjava.io.File;publicclassTarget{publicvoidplay(Filefile){)}RealPIayerAdapter.javapackagecom.exercise2.Test2;importjava.io.File;publicclassRealPlayerAdapterextendsTarget)publicvoidplay(Filefile){newRealPlayer().play(file);RealPlayer.javapackagecom.exercise2.Test2;importjava.io.File;publicclassRealPlayer{publicvoidplay(Filefile){System.out.println("useRealPlayerplaymusic'*);WindowsMediaPlayer.javapackagecom.exercise2.Test2;importjava.io.File;publicclassWindowsMediaPlayer{publicvoidplay(Filefile){System.out.println(MuseWindowsMediaPlayerplaymusic*1);WindowsMediaPlayerAdapter.javapackagecom.exercise2.Test2;importjava.io.File;publicclassWindowsMediaPlayerAdapterextendsTarget)publicvoidplay(Filefile){newWindowsMediaPlayer().play(file);實(shí)驗(yàn)結(jié)果:gMarkers二Properties泉Servers賓DataSourceExplorer在SnippetsヒProblems曰Console區(qū)!〈terminated〉Cilent[JavaApplication]C:\ProgramFiles\Java\jreAbin\javaw.exe(2014^12^170下午3:4useRealPlayerplaymusic3.類(lèi)圖:實(shí)現(xiàn)代碼:AbstractElement.javapackagecom.exercise2.Test3;publicabstractclassAbstractElement{abstractvoidantiVirus();abstractvoidadd(AbstractElementelement);abstractvoidremove(AbstractElementelement);abstractAbstractElementgetElement(intindex);}Folder.javapackagecom.exercise2.Test3;importjava.util.ArrayList;publicclassFolderextendsAbstractElement{ArrayList<AbstractElement>list;publicFolder(){super();list=newArrayList<AbstractElement>();)?OverridevoidantiVirus(){for(AbstractElementelement:list){element.antiVirus();}?Overridevoidadd(AbstractElementelement){list.add(element);?Overridevoidremove(AbstractElementelement){list.remove(element);?OverrideAbstractElementgetElement(intindex){returnlist.get(index);)}TextFile.javapackagecom.exercise2.Test3;publicclassTextFileextendsAbstractElement{?OverridevoidantiVirus(){System.out.println("antivirusatTextFile");?Overridevoidadd(AbstractElementelement){System.out.println("failtoaddelement");?Overridevoidremove(AbstractElementelement){System.out.println("failtoremoveelement");?OverrideAbstractElementgetElement(intindex){//TODOAuto-generatedmethodstubreturnnull;)}ImageFile.javapackagecom.exercise2.Test3;publicclassImageFileextendsAbstractElement{?OverridevoidantiVirus(){System.out.println("antivirusatImageFile");?Overridevoidadd(AbstractElementelement){System.out.println(Hfailtoaddelement**);?Overridevoidremove(AbstractElementelement){System.out.println(**failtoremoveelement**);?OverrideAbstractElementgetElement(intindex){//TODOAuto-generatedmethodstubreturnnull;)}VideoFile.javapackagecom.exercise2.Test3;publicclassVideoFileextendsAbstractElement{?OverridevoidantiVirus(){System.out.println(nantivirusatVideoFile*');?Overridevoidadd(AbstractElementelement){System.out.println("failtoaddelement");?Overridevoidremove(AbstractElementelement){System.out.println("failtoremoveelement");?OverrideAbstractElementgetElement(intindex){//TODOAuto-generatedmethodstubreturnnull;
實(shí)驗(yàn)結(jié)果:ほMarkersEProperties郴Servers鋪DataSourceExplorer加SnippetsにProblems日Console漢〈terminated〉Client(7)[JavaApplication]C:\ProgramFiles\Java\jre7\bin\javaw.exe(2014^12月22日下’antivirusatantivirusantivirusatantivirusatantivirusatantivirusatantivirusatVideoFileTextFileVideoFileTextFileImageFile|ー實(shí)現(xiàn)代碼:Componet.javapackagecom.exercise2.Test4;publicabstractclassComponet{publicStringname;abstractvoidadd(Componetc);abstractvoidremove(Componetc);abstractComponetgetChild(inti);abstractvoidoperation();}Composite.javapackagecom.exercise2.Test4;importjava.util.ArrayList;publicclassCompositeextendsComponet{publicArrayList<Componet>list;publicComposite(Stringname){list=newArrayList<Componet>();super,name=name;}?Overridevoidadd(Componetc){list.add(c);}?Overridevoidremove(Componetc){list.remove(c);?OverrideComponetgetChild(inti){returnlist.get(i);}?Overridevoidoperation(){for(Componetc:list){c.operation();))Leaf.javapackagecom.exercise2.Test4;publicclassLeafextendsComponet{publicLeaf(Stringname){super,name=name;}?Overridevoidadd(Componetc){System.out.println(Mfailtoaddcomponet'1);?Overridevoidremove(Componetc){System.out.println(Hfailtoremovecomponet");?OverrideComponetgetChild(inti){//TODOAuto-generatedmethodstubreturnnull;)?Overridevoidoperation(){System.out.println(name+”收至リ文件”);Client.javapackagecom.exercise2.Test4;publicclassClient{publicstaticvoidmain(String[]args){Componetdocument1,document2,documents,document4,documents,document6,document?,documents,organization1,organization2,organizations,organization4;organization1=newComposite("北京總部”);organization2=newComposite("湖南分校");organizations=newComposite("長(zhǎng)沙教學(xué)點(diǎn)");organization4=newComposite("湘潭教學(xué)點(diǎn)");〃北京總部document1=newLeaf("北京總部教務(wù)辦公室”);document2=newLeaf("北京總部行政辦公室");organization1.add(documentl);organization1.add(document2);organization1.add(organization2);〃湖南分校documents=newLeaf("湖南分校教務(wù)辦公室");document4=newLeaf("湖南分校行政辦公室");organization2.add(document3);organization2.add(document4);organization2.add(organization3);organization2.add(organization4);〃長(zhǎng)沙教學(xué)點(diǎn)documents=newLeaf("長(zhǎng)沙教學(xué)點(diǎn)教務(wù)辦公室”);document6=newLeaf("長(zhǎng)沙教學(xué)點(diǎn)行政辦公室”);organization3.add(document5);organization3.add(document6);〃湘潭教學(xué)點(diǎn)document?=newLeaf(”湘潭教學(xué)點(diǎn)教務(wù)辦公室”);documents=newLeaf(”湘潭教學(xué)點(diǎn)行政辦公室”);organization4.add(document7);organization4.add(document8);organization1.operation();實(shí)驗(yàn)結(jié)果:傳MarkersMProperties覘Servers逸DataSourceExplorer山SnippetsProblems日Console區(qū)〈terminated〉Client(8)[JavaApplication]C:\ProgramFiIes\Java\jre7\bin\javaw.exe(2014^12月22日下午5:50:2北京總部教務(wù)辦公室收到文件北京總部行政辦公室收到文件湖南分校教務(wù)辦公室收到文件湖南分校行政辦公室收到文件長(zhǎng)沙教學(xué)點(diǎn)教務(wù)辦公室收到文件長(zhǎng)沙教學(xué)點(diǎn)行政辦公室收到文件湘潭教學(xué)點(diǎn)教務(wù)辦公室收到文件湘潭教學(xué)點(diǎn)行政辦公室收到文件5.類(lèi)圖:實(shí)現(xiàn)代碼:Client.javapackagecom.exercise2.Test5;publicclassClient)publicstaticvoidmain(String[]args){FacadeManagermanager=newFacadeManager();manager.manage();FacadeManager.javapackagecom.exercise2.Test5;publicclassFacadeManager{privateContactsManagercontactsManager;privateSMSManagersmsManager;privatePhotoManagerphotoManager;privateMusicManagermusicManager;publicFacadeManager(){this.contactsManager=newContactsManager();this.smsManager=newSMSManager();this.photoManager=newPhotoManager();this.musicManager=newMusicManager();)publicvoidmanage(){contactsManager.manageContacts();smsManager.manageSMS();;photoManager.managePhoto();musicManager.manageMusic();))ContactsManager.javapackagecom.exercise2.Test5;publicclassContactsManager{publicvoidmanageContacts(){System.out.println("ContactsManagerismanagingcontacts");SMSManager.javapackagecom.exercise2.Test5;publicclassSMSManager{publicvoidmanageSMS(){System.out.println("SMSManagerismanagingsms");)}PhotoManager.javapackagecom.exercise2.Test5;publicclassPhotoManager{publicvoidmanagePhoto(){System.out.println("PhotoManagerismanagingphotoH);))MusicManager.javapackagecom.exercise2.Test5;publicclassMusicManager{publicvoidmanageMusic(){System.out.println(nMusicManagerismanagingmusic°);)}
實(shí)驗(yàn)結(jié)果:Markers□Properties郴Servers說(shuō)DataSourceExplorer在SnippetsProblems曰Console區(qū)〈terminated〉Client(9)[JavaApplication]C:\ProgramFiIes\Java\jreAbin\javaw.exe(2014^12月22日下午8:24::ContactsManagerismanagingcontactsSMSManagerismanagingsmsPhotoManagerismanagingphotoMusicManagerismanagingmusic|6.類(lèi)圖:+showChart():voidFacade2AbstractFacade+showChart():voidFacade2Facadel+showChart():void+showChart()void必Reportshow+showReport():+showChart():void+showChart()void必Reportshow+showReport():voidDataProcess+processData():voidー實(shí)現(xiàn)代碼: Client.javapackagecom.exercise2.Test6;importutil.ParseXML;publicclassClient{publicstaticvoidmain(String[]args){AbstractFacadefacade=(AbstractFacade)ParseXML.getBeanObjO;facade.showChart();})AbstractFacade.javapackagecom.exercise2.Test6;publicabstractclassAbstractFacade{abstractvoidshowChart();}Facadel.javapackagecom.exercise2.Test6;publicclassFacade1extendsAbstractFacade{privateDataProcessdataProcess;privateReportshowreportShow;publicFacade1(){dataProcess=newDataProcess();reportShow=newReportShow();?OverridevoidshowChart(){dataPcessData();reportShow.showReport();)/r/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版小程序SDK接入授權(quán)合同模板3篇
- 2025年度美容院加盟店品牌形象保護(hù)合同范本4篇
- 2025版國(guó)際合同授權(quán)委托書(shū)定制模板3篇
- 城市配送與物流配送環(huán)節(jié)的信息互聯(lián)互通考核試卷
- 常州鋰電池生產(chǎn)廠(chǎng)2025年度消防設(shè)備采購(gòu)合同2篇
- 二零二五年度古法工藝木屋建造技藝傳承合同4篇
- 物業(yè)設(shè)施設(shè)備維護(hù)2025年度合同3篇
- 設(shè)備租賃公司二零二五年度施工塔吊租賃合同
- 2025年代理銷(xiāo)售分銷(xiāo)鏈銷(xiāo)售協(xié)議
- 2025年因施工責(zé)任賠償協(xié)議
- 開(kāi)展課外讀物負(fù)面清單管理的具體實(shí)施舉措方案
- 2025年云南中煙工業(yè)限責(zé)任公司招聘420人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025-2030年中國(guó)洗衣液市場(chǎng)未來(lái)發(fā)展趨勢(shì)及前景調(diào)研分析報(bào)告
- 2024解析:第三章物態(tài)變化-基礎(chǔ)練(解析版)
- 北京市房屋租賃合同自行成交版北京市房屋租賃合同自行成交版
- 《AM聚丙烯酰胺》課件
- 技術(shù)支持資料投標(biāo)書(shū)
- 老年人意外事件與與預(yù)防
- 預(yù)防艾滋病、梅毒和乙肝母嬰傳播轉(zhuǎn)介服務(wù)制度
- 《高速鐵路客運(yùn)安全與應(yīng)急處理》課程標(biāo)準(zhǔn)
- 23J916-1:住宅排氣道(一)
評(píng)論
0/150
提交評(píng)論