




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗二 設(shè)計模式實驗一一、實驗?zāi)康氖炀毷褂妹嫦驅(qū)ο笤O(shè)計原則對系統(tǒng)進行重構(gòu);熟練使用PowerDesigner和任意一種面向?qū)ο缶幊陶Z言實現(xiàn)幾種常見的設(shè)計模式,包括簡單工廠模式、工廠方法模式、抽象工廠模式、單例模式、適配器模式、橋接模式和組合模式,理解每一種設(shè)計模式的模式動機,掌握模式結(jié)構(gòu),學(xué)習(xí)如何使用代碼實現(xiàn)這些模式,并學(xué)會分析這些模式的使用效果。二、實驗內(nèi)容使用面向?qū)ο笤O(shè)計原則對系統(tǒng)進行重構(gòu);使用PowerDesigner和任意一種面向?qū)ο缶幊陶Z言實現(xiàn)簡單工廠模式、工廠方法模式、抽象工廠模式、單例模式、適配器模式、橋接模式和組合模式,包括根據(jù)實例繪制模式結(jié)構(gòu)圖、編寫模式實例模擬實現(xiàn)代碼,運行
2、并測試所編寫代碼。(1) 面向?qū)ο笤O(shè)計原則在某圖形庫API中提供了多種矢量圖模板,用戶可以基于這些矢量圖創(chuàng)建不同的顯示圖形,圖形庫設(shè)計人員設(shè)計的初始類圖如下所示:在該圖形庫中,每個圖形類(如Circle、Triangle等)的init()方法用于初始化所創(chuàng)建的圖形, setColor()方法用于給圖形設(shè)置邊框顏色,fill()方法用于給圖形設(shè)置填充顏色,setSize()方法用于設(shè)置圖形的大小,display()方法用于顯示圖形??蛻纛?Client)在使用該圖形庫時發(fā)現(xiàn)存在如下問題: 由于在創(chuàng)建窗口時每次只需要使用圖形庫中的一種圖形,因此在更換圖形時需要修改客戶類源代碼; 在圖形庫中增加并使
3、用新的圖形時需要修改客戶類源代碼; 客戶類在每次使用圖形對象之前需要先創(chuàng)建圖形對象,有些圖形的創(chuàng)建過程較為復(fù)雜,導(dǎo)致客戶類代碼冗長且難以維護。現(xiàn)需要根據(jù)面向?qū)ο笤O(shè)計原則對該系統(tǒng)進行重構(gòu),要求如下: 隔離圖形的創(chuàng)建和使用,將圖形的創(chuàng)建過程封裝在專門的類中,客戶類在使用圖形時無須直接創(chuàng)建圖形對象,甚至不需要關(guān)心具體圖形類類名; 客戶類能夠方便地更換圖形或使用新增圖形,無須針對具體圖形類編程,符合開閉原則。繪制重構(gòu)之后的類圖并說明在重構(gòu)過程中所運用的面向?qū)ο笤O(shè)計原則。(2) 簡單工廠模式使用簡單工廠模式設(shè)計一個可以創(chuàng)建不同幾何形狀(Shape),如圓形(Circle)、矩形(Rectangle)和三
4、角形(Triangle)等的繪圖工具類,每個幾何圖形均具有繪制Draw()和擦除Erase()兩個方法,要求在繪制不支持的幾何圖形時,拋出一個UnsupportedShapeException異常,繪制類圖并編程模擬實現(xiàn)。(3) 工廠方法模式現(xiàn)需要設(shè)計一個程序來讀取多種不同類型的圖片格式,針對每一種圖片格式都設(shè)計一個圖片讀取器(ImageReader),如GIF圖片讀取器(GifReader)用于讀取GIF格式的圖片、JPG圖片讀取器(JpgReader)用于讀取JPG格式的圖片。圖片讀取器對象通過圖片讀取器工廠ImageReaderFactory來創(chuàng)建,ImageReaderFactory是
5、一個抽象類,用于定義創(chuàng)建圖片讀取器的工廠方法,其子類GifReaderFactory和JpgReaderFactory用于創(chuàng)建具體的圖片讀取器對象。試使用工廠方法模式設(shè)計該程序,繪制類圖并編程模擬實現(xiàn)。(4) 抽象工廠模式某軟件公司欲開發(fā)一套界面皮膚庫,可以對桌面軟件進行界面美化。不同的皮膚將提供視覺效果不同的按鈕、文本框、組合框等界面元素,其結(jié)構(gòu)如下圖所示:該皮膚庫需要具備良好的靈活性和可擴展性,用戶可以自由選擇不同的皮膚,開發(fā)人員可以在不修改既有代碼的基礎(chǔ)上增加新的皮膚。試使用抽象工廠模式設(shè)計該皮膚庫,繪制類圖并編程模擬實現(xiàn)。(5) 單例模式使用單例模式的思想實現(xiàn)多例模式,確保系統(tǒng)中某個類
6、的對象只能存在有限個,例如兩個或三個,設(shè)計并編寫代碼實現(xiàn)一個多例類。(6) 單例模式使用單例模式設(shè)計一個多文檔窗口(注:在Java AWT/Swing開發(fā)中可使用JDesktopPane和JInternalFrame來實現(xiàn)),要求在主窗體中某個內(nèi)部子窗體只能實例化一次,即只能彈出一個相同的子窗體,如下圖所示,編程實現(xiàn)該功能。(注:用C#或C+實現(xiàn)類似功能也可以)(7) 適配器模式現(xiàn)有一個接口DataOperation定義了排序方法sort(int) 和查找方法search(int, int),已知類QuickSort的quickSort(int)方法實現(xiàn)了快速排序算法,類BinarySearc
7、h 的binarySearch (int, int)方法實現(xiàn)了二分查找算法?,F(xiàn)使用適配器模式設(shè)計一個系統(tǒng),在不修改源代碼的情況下將類QuickSort和類BinarySearch的方法適配到DataOperation接口中。繪制類圖并編程實現(xiàn)。(要求實現(xiàn)快速排序和二分查找)(8) 適配器模式Windows Media Player和RealPlayer是兩種常用的媒體播放器,它們的API結(jié)構(gòu)和調(diào)用方法存在區(qū)別。現(xiàn)在你的應(yīng)用程序需要支持這兩種播放器API,而且在將來可能還需要支持新的媒體播放器,請問如何設(shè)計該應(yīng)用程序?選擇一種合適的設(shè)計模式,繪制類圖并編程模擬實現(xiàn)。(9) 橋接模式某軟件公司欲開
8、發(fā)一個跨平臺圖像瀏覽系統(tǒng),要求該系統(tǒng)能夠顯示BMP、JPG、GIF、PNG等多種格式的文件,并且能夠在Windows、Linux、Unix等多個操作系統(tǒng)上運行。系統(tǒng)首先將各種格式的文件解析為像素矩陣(Matrix),然后將像素矩陣顯示在屏幕上,在不同的操作系統(tǒng)中可以調(diào)用不同的繪制函數(shù)來繪制像素矩陣。系統(tǒng)需具有較好的擴展性,以便在將來支持新的文件格式和操作系統(tǒng)。試使用橋接模式設(shè)計該跨平臺圖像瀏覽系統(tǒng),繪制類圖并編程模擬實現(xiàn)。(10) 組合模式某教育機構(gòu)組織結(jié)構(gòu)如下圖所示:在該教育機構(gòu)的OA系統(tǒng)中可以給各級辦公室下發(fā)公文,現(xiàn)采用組合模式設(shè)計該機構(gòu)的組織結(jié)構(gòu),繪制相應(yīng)的類圖并編程模擬實現(xiàn),在客戶端代
9、碼中模擬下發(fā)公文。三、實驗要求1. 選擇合適的面向?qū)ο笤O(shè)計原則對系統(tǒng)進行重構(gòu),正確無誤繪制重構(gòu)之后的類圖;2. 正確無誤繪制簡單工廠模式、工廠方法模式、抽象工廠模式、單例模式、適配器模式、橋接模式和組合模式實例的模式結(jié)構(gòu)圖;3. 使用任意一種面向?qū)ο缶幊陶Z言實現(xiàn)簡單工廠模式、工廠方法模式、抽象工廠模式、單例模式、適配器模式、橋接模式和組合模式實例,代碼運行正確無誤。四、實驗步驟1. 選擇合適的面向?qū)ο笤O(shè)計原則對系統(tǒng)進行重構(gòu),使用PowerDesigner繪制重構(gòu)之后的類圖;2. 使用PowerDesigner繪制簡單工廠模式實例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式實例;3. 使用PowerDe
10、signer繪制工廠方法模式實例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式實例;4. 使用PowerDesigner繪制抽象工廠模式實例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式實例;5. 使用PowerDesigner繪制單例模式實例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式實例;6. 使用PowerDesigner繪制適配器模式結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式;7. 使用PowerDesigner繪制橋接模式結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式;8. 使用PowerDesigner繪制組合模式結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式。五、實驗報告要求1. 提供重構(gòu)之后的類圖,簡要說明重構(gòu)過程中所運用的面向?qū)?/p>
11、象設(shè)計原則;2. 提供簡單工廠模式實例結(jié)構(gòu)圖及實現(xiàn)代碼;3. 提供工廠方法模式實例結(jié)構(gòu)圖及實現(xiàn)代碼;4. 提供抽象工廠模式實例結(jié)構(gòu)圖及實現(xiàn)代碼;5. 提供單例模式實例結(jié)構(gòu)圖及實現(xiàn)代碼;6. 提供適配器模式實例結(jié)構(gòu)圖及實現(xiàn)代碼;7. 提供橋接模式實例結(jié)構(gòu)圖及實現(xiàn)代碼;8. 提供組合模式實例結(jié)構(gòu)圖及實現(xiàn)代碼;9. 注意調(diào)整類圖中文字的字體及字號,注意圖的整體布局和圖的大小,避免使用交叉線,注意代碼字體和顏色,代碼字體需一致,顏色需統(tǒng)一;10. 認(rèn)真寫好實驗總結(jié);11. 提交電子版實驗報告,格式為“學(xué)號-姓名-實驗2.doc”,如“060102-張三-實驗2.doc”,所有材料(包括類圖和源代碼)均
12、放在一個Word文件中,格式為doc或docx,不需要提交PowerDeigner所保存的oom模型,也無須單獨提交源代碼。CENTRAL SOUTH UNIVERSITY軟件體系結(jié)構(gòu)實驗報告實驗名稱 基本數(shù)據(jù)類型和運算 學(xué)生姓名 張三 學(xué)生學(xué)號 12345678 專業(yè)班級 軟件工程1101班 指導(dǎo)教師 李四 完成時間 2011年10月1日 實驗二 設(shè)計模式實驗一一、實驗?zāi)康氖炀毷褂妹嫦驅(qū)ο笤O(shè)計原則對系統(tǒng)進行重構(gòu);熟練使用PowerDesigner和任意一種面向?qū)ο缶幊陶Z言實現(xiàn)幾種常見的設(shè)計模式,包括簡單工廠模式、工廠方法模式、抽象工廠模式、單例模式、適配器模式、橋接模式和組合模式,理解每一種
13、設(shè)計模式的模式動機,掌握模式結(jié)構(gòu),學(xué)習(xí)如何使用代碼實現(xiàn)這些模式,并學(xué)會分析這些模式的使用效果。二、實驗內(nèi)容使用面向?qū)ο笤O(shè)計原則對系統(tǒng)進行重構(gòu);使用PowerDesigner和任意一種面向?qū)ο缶幊陶Z言實現(xiàn)簡單工廠模式、工廠方法模式、抽象工廠模式、單例模式、適配器模式、橋接模式和組合模式,包括根據(jù)實例繪制模式結(jié)構(gòu)圖、編寫模式實例模擬實現(xiàn)代碼,運行并測試所編寫代碼。(1) 面向?qū)ο笤O(shè)計原則在某圖形庫API中提供了多種矢量圖模板,用戶可以基于這些矢量圖創(chuàng)建不同的顯示圖形,圖形庫設(shè)計人員設(shè)計的初始類圖如下所示:在該圖形庫中,每個圖形類(如Circle、Triangle等)的init()方法用于初始化所創(chuàng)
14、建的圖形, setColor()方法用于給圖形設(shè)置邊框顏色,fill()方法用于給圖形設(shè)置填充顏色,setSize()方法用于設(shè)置圖形的大小,display()方法用于顯示圖形??蛻纛?Client)在使用該圖形庫時發(fā)現(xiàn)存在如下問題: 由于在創(chuàng)建窗口時每次只需要使用圖形庫中的一種圖形,因此在更換圖形時需要修改客戶類源代碼; 在圖形庫中增加并使用新的圖形時需要修改客戶類源代碼; 客戶類在每次使用圖形對象之前需要先創(chuàng)建圖形對象,有些圖形的創(chuàng)建過程較為復(fù)雜,導(dǎo)致客戶類代碼冗長且難以維護?,F(xiàn)需要根據(jù)面向?qū)ο笤O(shè)計原則對該系統(tǒng)進行重構(gòu),要求如下: 隔離圖形的創(chuàng)建和使用,將圖形的創(chuàng)建過程封裝在專門的類中,客
15、戶類在使用圖形時無須直接創(chuàng)建圖形對象,甚至不需要關(guān)心具體圖形類類名; 客戶類能夠方便地更換圖形或使用新增圖形,無須針對具體圖形類編程,符合開閉原則。繪制重構(gòu)之后的類圖并說明在重構(gòu)過程中所運用的面向?qū)ο笤O(shè)計原則。(2) 簡單工廠模式使用簡單工廠模式設(shè)計一個可以創(chuàng)建不同幾何形狀(Shape),如圓形(Circle)、矩形(Rectangle)和三角形(Triangle)等的繪圖工具類,每個幾何圖形均具有繪制Draw()和擦除Erase()兩個方法,要求在繪制不支持的幾何圖形時,拋出一個UnsupportedShapeException異常,繪制類圖并編程模擬實現(xiàn)。(3) 工廠方法模式現(xiàn)需要設(shè)計一個
16、程序來讀取多種不同類型的圖片格式,針對每一種圖片格式都設(shè)計一個圖片讀取器(ImageReader),如GIF圖片讀取器(GifReader)用于讀取GIF格式的圖片、JPG圖片讀取器(JpgReader)用于讀取JPG格式的圖片。圖片讀取器對象通過圖片讀取器工廠ImageReaderFactory來創(chuàng)建,ImageReaderFactory是一個抽象類,用于定義創(chuàng)建圖片讀取器的工廠方法,其子類GifReaderFactory和JpgReaderFactory用于創(chuàng)建具體的圖片讀取器對象。試使用工廠方法模式設(shè)計該程序,繪制類圖并編程模擬實現(xiàn)。(4) 抽象工廠模式某軟件公司欲開發(fā)一套界面皮膚庫,可
17、以對桌面軟件進行界面美化。不同的皮膚將提供視覺效果不同的按鈕、文本框、組合框等界面元素,其結(jié)構(gòu)如下圖所示:該皮膚庫需要具備良好的靈活性和可擴展性,用戶可以自由選擇不同的皮膚,開發(fā)人員可以在不修改既有代碼的基礎(chǔ)上增加新的皮膚。試使用抽象工廠模式設(shè)計該皮膚庫,繪制類圖并編程模擬實現(xiàn)。(5) 單例模式使用單例模式的思想實現(xiàn)多例模式,確保系統(tǒng)中某個類的對象只能存在有限個,例如兩個或三個,設(shè)計并編寫代碼實現(xiàn)一個多例類。(6) 單例模式使用單例模式設(shè)計一個多文檔窗口(注:在Java AWT/Swing開發(fā)中可使用JDesktopPane和JInternalFrame來實現(xiàn)),要求在主窗體中某個內(nèi)部子窗體只
18、能實例化一次,即只能彈出一個相同的子窗體,如下圖所示,編程實現(xiàn)該功能。(注:用C#或C+實現(xiàn)類似功能也可以)(7) 適配器模式現(xiàn)有一個接口DataOperation定義了排序方法sort(int) 和查找方法search(int, int),已知類QuickSort的quickSort(int)方法實現(xiàn)了快速排序算法,類BinarySearch 的binarySearch (int, int)方法實現(xiàn)了二分查找算法?,F(xiàn)使用適配器模式設(shè)計一個系統(tǒng),在不修改源代碼的情況下將類QuickSort和類BinarySearch的方法適配到DataOperation接口中。繪制類圖并編程實現(xiàn)。(要求實現(xiàn)快
19、速排序和二分查找)(8) 適配器模式Windows Media Player和RealPlayer是兩種常用的媒體播放器,它們的API結(jié)構(gòu)和調(diào)用方法存在區(qū)別?,F(xiàn)在你的應(yīng)用程序需要支持這兩種播放器API,而且在將來可能還需要支持新的媒體播放器,請問如何設(shè)計該應(yīng)用程序?選擇一種合適的設(shè)計模式,繪制類圖并編程模擬實現(xiàn)。(9) 橋接模式某軟件公司欲開發(fā)一個跨平臺圖像瀏覽系統(tǒng),要求該系統(tǒng)能夠顯示BMP、JPG、GIF、PNG等多種格式的文件,并且能夠在Windows、Linux、Unix等多個操作系統(tǒng)上運行。系統(tǒng)首先將各種格式的文件解析為像素矩陣(Matrix),然后將像素矩陣顯示在屏幕上,在不同的操作
20、系統(tǒng)中可以調(diào)用不同的繪制函數(shù)來繪制像素矩陣。系統(tǒng)需具有較好的擴展性,以便在將來支持新的文件格式和操作系統(tǒng)。試使用橋接模式設(shè)計該跨平臺圖像瀏覽系統(tǒng),繪制類圖并編程模擬實現(xiàn)。(10) 組合模式某教育機構(gòu)組織結(jié)構(gòu)如下圖所示:在該教育機構(gòu)的OA系統(tǒng)中可以給各級辦公室下發(fā)公文,現(xiàn)采用組合模式設(shè)計該機構(gòu)的組織結(jié)構(gòu),繪制相應(yīng)的類圖并編程模擬實現(xiàn),在客戶端代碼中模擬下發(fā)公文。三、實驗要求1. 選擇合適的面向?qū)ο笤O(shè)計原則對系統(tǒng)進行重構(gòu),正確無誤繪制重構(gòu)之后的類圖;2. 正確無誤繪制簡單工廠模式、工廠方法模式、抽象工廠模式、單例模式、適配器模式、橋接模式和組合模式實例的模式結(jié)構(gòu)圖;3. 使用任意一種面向?qū)ο缶幊陶Z
21、言實現(xiàn)簡單工廠模式、工廠方法模式、抽象工廠模式、單例模式、適配器模式、橋接模式和組合模式實例,代碼運行正確無誤。四、實驗步驟1. 選擇合適的面向?qū)ο笤O(shè)計原則對系統(tǒng)進行重構(gòu),使用PowerDesigner繪制重構(gòu)之后的類圖;2. 使用PowerDesigner繪制簡單工廠模式實例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式實例;3. 使用PowerDesigner繪制工廠方法模式實例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式實例;4. 使用PowerDesigner繪制抽象工廠模式實例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式實例;5. 使用PowerDesigner繪制單例模式實例結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式實例;6. 使用PowerDesigner繪制適配器模式結(jié)構(gòu)圖并用面向?qū)ο缶幊陶Z言實現(xiàn)該模式;7. 使用PowerDe
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能看板在敏捷開發(fā)中的應(yīng)用-深度研究
- 2025年共同策劃建立公司合同
- 2025年農(nóng)產(chǎn)品批發(fā)市場裝修工程合同
- 城市化與城市競爭力-深度研究
- 2025年壓路機租賃合同書樣本
- 非機械逃生技術(shù)成本分析-深度研究
- 企業(yè)常年法律顧問合同(普通版)6篇
- 2025年項目管理服務(wù)合同
- 車聯(lián)網(wǎng)技術(shù)進展-深度研究
- 2025年優(yōu)化版物流運輸保險合同文本
- 完整版項目實施保密方案
- 支氣管哮喘的診療課件
- 上海市黃浦區(qū)2022-2023學(xué)年九年級上學(xué)期期末化學(xué)試卷(一模)
- 競聘運營主管的未來規(guī)劃
- 中級消防設(shè)施操作員練習(xí)題庫含參考答案
- 河北醫(yī)科大學(xué)第一醫(yī)院招聘醫(yī)療工作人員筆試真題2023
- 人教版(2024)八年級上冊物理第六章 質(zhì)量與密度 單元測試卷(含答案解析)
- 2023年黑龍江省公務(wù)員錄用考試《行測》真題及答案解析
- 職業(yè)衛(wèi)生監(jiān)測與評價作業(yè)指導(dǎo)書
- 急性創(chuàng)傷的現(xiàn)場急救和評估
- 現(xiàn)代家政導(dǎo)論-課件 4.2.1認(rèn)識家庭教育及意義
評論
0/150
提交評論