




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件設計與體系結構復習一、 填空題(一) Chapter 11.軟件設計模式通常包含4個基本要素:模式名稱、問題、解決方案以及效果。2.軟件設計模式可以分為三個層次:架構模式、設計模式、習慣用法。3.軟件設計模式是對軟件設計經驗的總結,是對軟件設計中特定環(huán)境下反復出現(xiàn)的設計問題的、經過驗證的、成功解決方案的描述。(二) chapter 51.早在1968年,計算機領域的大師Dijstra指出:項目規(guī)模越大,其整體架構就越重要。2. 軟件體系結構的三個基本要素是:構件、連接件、約束3. 對軟件質量的關注正是軟件架構師與一般的軟件設計師的不同之處,一般的軟件設計師主要關注軟件功能的設計,并要遵循架
2、構師給出的設計準則。4. IEEE 1471-2000標準定義軟件體系結構是“系統(tǒng)的基本組織結構,包括系統(tǒng)構成要素、這些構成要素相互之間以及運行環(huán)境之間的關系,還包括系統(tǒng)設計及演化時應遵循的原則”。(三) chapter 21.創(chuàng)建型軟件設計模式是解決_對象創(chuàng)建機制_的設計模式。2.創(chuàng)建型軟件設計模式的兩個主導思想:封裝了系統(tǒng)使用的具體類的知識,隱藏這些具體類的實例被創(chuàng)建與結合的細節(jié)。3.簡單工廠方法模式的特點是僅僅有一個具體的創(chuàng)建者類,并且在此類中包含一個_靜態(tài)工廠_方法。4.生成器模式是一步一步創(chuàng)建一個復雜的對象,允許用戶通過制定復雜對象的類型和內容就可以構建它們,用戶不知道內部的具體構建
3、細節(jié)5. 單例模式是指確保一個僅有一個唯一的實例,并提供一個全局的訪問點。6. 在單例模式中,為了防止客戶程序利用構造方法創(chuàng)建多個對象,要將構造方法聲明為private(或私有)類型。(四) chapter 31. 結構型軟件設計模式的主要目的是將不同的類和對象組合在一起,形成更大或者更復雜的結構體。2. 組合模式指將對象組合成樹形結構,以表示“部分-整體”的層次結構。該模式使得對單個對象和組合對象的使用具有一致性。3.適配器模式可以分為兩種:類適配器和對象適配器4. 類適配器模式通過繼承的方式改變已經存在的接口而形成新的接口,使之適合客戶類調用的需要;對象適配器模式使用調用或者聚合的方式選擇
4、調用多個類中的方法,形成新的接口。5. 適配器模式與外觀模式都是為了設計新的接口而存在。它們的區(qū)別在于:適配器模式是轉換接口,外觀模式是簡化接口。(五) chapter 41. 行為型軟件設計模式解釋對象之間是怎樣進行交互的。2. 迭代器模式能夠提供一種方法按照順序訪問一個聚合對象中的所有元素,而又不需要暴露該對象的內部表示。3. 中介者模式的要點是將所有對象之間的交互細節(jié)抽象到一個獨立的類中,這個類叫做中介者類。4. 訪問者模式封裝了分布于多個類之間的行為。(六) Chapter 61. 利用調用-返回風格軟件體系結構設計的軟件系統(tǒng)使用的是_分而治之_策略,其主要思想是將一個復雜的大系統(tǒng)分解
5、為一些子系統(tǒng),以便降低復雜度,并且增加可修改性。2. 在管道-過濾器軟件體系結構中,每個組件都有一組輸入和輸出,組件讀入數(shù)據流,經過數(shù)據處理,然后產生輸出數(shù)據流。3. 順序批處理軟件體系結構是數(shù)據流風格體系結構的一個子類型。在該系統(tǒng)種,組件為獨立的程序,并且這些組件按照先后順序處理,即只有當一個組件運行徹底結束以后,下一個組件才能開始執(zhí)行。4. 主程序-子程序軟件體系結構特別關注功能的實現(xiàn)。面向對象軟件體系結構特別關注數(shù)據與功能的封裝。二、 簡答題(一) Chapter11. 軟件體系結構為什么重要?答:軟件體系結構: 是軟件相關人員進行交流的手段;(2分) 是一種高層次的設計復用手段;(2分
6、) 是早期關鍵設計決策的體現(xiàn)。(1分)2. 軟件體系結構與軟件框架的區(qū)別?答:呈現(xiàn)形式不同:體系結構的呈現(xiàn)形式是一個設計規(guī)約,而框架則是程序代碼 。(2分)目的不同:體系結構的首要目的大多是指導一個軟件系統(tǒng)的實施與開發(fā);而框架的首要目的是為復用因此,一個框架可有其體系結構,用于指導該框架的開發(fā),反之不然(3分)3. 解釋開閉原則、Liskov替換原則、依賴倒置原則答:開閉原則:構件應該對擴展具有開放性,對修改具有封閉性。(2分)Liskov替換原則:子類可以替換它們的父類。(2分)依賴倒置原則:依賴于抽象,而非具體實現(xiàn)。(1分)(二) chapter24. 說明工廠方法、簡單工廠模式
7、、抽象工廠模式三個模式的主要區(qū)別。答:簡單工廠模式只有一個工廠類,該工廠類的靜態(tài)工廠方法負責所有產品的創(chuàng)建。(1分)工廠方法模式中,一個產品類層次對應一個工廠類層次,每個具體工廠負責創(chuàng)建一個具體的產品。(2分)抽象工廠模式中,一個工廠類層次對應多個產品類層次,每個具體工廠負責一個產品簇中產品的創(chuàng)建。(2分)5. 實現(xiàn)單例模式的三個關鍵要點是什么?答:將構造方法私有化;(1分)定義一個靜態(tài)實例;(2分)提供一個可以返回靜態(tài)實例的靜態(tài)方法。(2分)6. 簡述生成器模式與抽象工廠模式的區(qū)別。答:前者按照步驟創(chuàng)建一個復雜的對象,而后者強調一類產品對象,創(chuàng)建一個產品族中的某個產品對象(簡單或復雜)。(3
8、分)前者將所建造的產品(通常建造一個復合體)最后一次性返回,而不是一點一點返回,而抽象工廠所創(chuàng)建的產品對象立即被返回。(2分)(三) Chapter37. 簡述外觀模式與適配器模式的區(qū)別?答:外觀模式簡化接口是為了更好地使用某個類庫適配器模式轉換接口的目的是將一個不適合使用的接口轉換為可以被使用的接口,或者將一些接口不同但功能相同或相近的接口加以轉換,以便統(tǒng)一使用。8. 簡述結構型模式的分類。答:分為兩類:結構型類模式:關心類的組合,使用繼承來組合接口或類,提供了類之間的關聯(lián)方式。(2分)結構型對象模式:關心類和對象的組合,描述了如何對一些對象進行組合,從而實現(xiàn)新功能的一些方法。具體來說,通過
9、關聯(lián)關系,可以在一個類中定義另一個類的對象,然后通過該對象調用其方法。(3分)(四) Chapter 49. 簡述迭代器模式的主要功能?答:提供對聚合對象的迭代訪問:以不同的方式遍歷聚合對象,如向前、向后對同一聚合同時進行多個遍歷以不同的遍歷策略遍歷聚合多態(tài)迭代:為不同的聚合結構提供統(tǒng)一的迭代接口,即,通過一個迭代接口訪問不同的聚合結構。10. 簡述訪問者模式中形成的回調訪問通路?答:visit()與accept()方法構成一個調用通路。(1分)visit(X):訪問者類告知具體元素X類,我要訪問你,即調用它的方法。(2分)accept(Visitor):具體元素X類告知Visitor,我接受
10、你的訪問。Visitor訪問具體元素X類的目的是什么,具體元素X類不管。(2分)11. 策略模式和狀態(tài)模式的區(qū)別。答:策略模式用來處理一組具有相同目的但是實現(xiàn)方法不同的算法,這些算法方案之間一般來說沒有狀態(tài)變遷。(2分)狀態(tài)模式則有所不同,它實現(xiàn)的一個概念可以叫做動態(tài)繼承,也就是繼承的子類都可以發(fā)生變化。狀態(tài)的變化可以由一個狀態(tài)遷移圖表示。(2分)一般來說,實現(xiàn)狀態(tài)模式更復雜一點,用戶需要仔細考慮由誰來負責狀態(tài)轉換問題,是由Context類負責還是由狀態(tài)類的超類負責,還是由狀態(tài)類的子類負責。(2分)(五) Chapter 612. 簡述面向對象體系結構,并畫出面向對象體系結構圖?答:面向對象體
11、系結構中,把系統(tǒng)看作是由一些對象的集合組成(而不是由函數(shù)或方法組成),消息從一個對象發(fā)送到另外一個對象。每個對象都有其相關功能。一個對象是數(shù)據以對數(shù)據操作的封裝體,外界通過接口與其進行交互。(3分)面向對象體系結構圖如下:(2分,下面這幅圖不需要一模一樣,表達清楚意思即可)13. 簡述主程序-子程序軟件體系結構與面向對象體系結構的不同之處。答:在設計思想上的區(qū)別:主程序-子程序關注功能的實現(xiàn),即系統(tǒng)是由一個個過程構成。面向對象體系結構關注數(shù)據與功能的封裝(對象)。系統(tǒng)是由一系列對象構成,這些對象按一定規(guī)則通信,完成具體功能。(3分)在系統(tǒng)分析設計方面的區(qū)別。前者采用結構化分析設計方法(如數(shù)據流
12、圖、面向數(shù)據流的設計),后者采用面向對象分析設計,使用用例圖、類圖、時序圖等模型。(2分)14. 畫出MVC體系結構的一般形式的結構類圖。15. 畫出應用了觀察者機制的MVC體系結構設計類圖。三、 設計題(一) chapter 2創(chuàng)建型設計模式1. 一個房屋銷售查詢系統(tǒng),以便查詢不同類型的房屋的介紹、價格和地址等。為簡單起見,只考慮兩種類型的房屋:別墅(House)和公寓(Condo),并假設每種房屋類型都包含:豪華(Super)、中等(Medium)兩個等級。要求能夠查看房屋信息和房屋價格,請使用創(chuàng)建型設計模式解決該問題,畫出設計類圖。答:參考圖 1圖 1 抽象工廠模式參考圖2. 假設有一個
13、web托管公司,該公司在Windows和UNIX平臺上托管服務。該Web托管公司在這兩種平臺上提供三種不同類型的托管包:基本(Basic)、高級(Senior)和更高級(Super)。使用“抽象工廠”模式設計一個應用,查詢該托管公司提供的不同類型的托管包功能,畫出設計類圖。答:參考Error! Reference source not found.Error! Reference source not found.圖 2 抽象工廠模式解決win、Unix服務創(chuàng)建問題3. 生成器模式可以用于描述肯德基KFC如何創(chuàng)建套餐:套餐是一個復雜對象,它一般包含主食(如漢堡、牛肉飯等)、配餐(如新奧爾良烤翅
14、、香辣雞翅、吮指原味雞等)和飲料(如果汁、可樂等)等三個組成部分,不同的套餐有不同的組成部分,而KFC的服務員可以根據顧客的要求,一步一步裝配這些組成部分,構造一份完整的套餐,然后返回給顧客。套餐假設目前有如下幾個套餐:午餐套餐(Lunch Suit)、晚餐套餐(Supper Suit)、豪華套餐(Luxury Suit)。請用生成器模式設計該應用,畫出其設計類圖。答:參見圖 3圖 3 生成器模式KFC套餐構造4. 下圖所示設計類圖是關于游戲軟件的設計。在該設計中,SlowGameFactory類負責創(chuàng)建SlowFighter對象與SlowMonster對象,并且將創(chuàng)建完的對象以其超類類型返回
15、給ClientGUI對象。然后,ClientGUI對象將操縱SlowFighter對象與SlowMonster對象,使得它們互相打斗。(1) 上述設計使用了什么設計模式?抽象工廠(2) 請在以上設計中添加SuperFighter和SuperMonster,SuperFighter與SuperMonster是對應的,請繪制新的設計類圖。修正一下該答案5. 某公司要設計一個房屋選購系統(tǒng),系統(tǒng)內的房屋分為三種類型:經濟型(Economic House)、普通型(Normal House)與豪華型(Luxury House)。不同房型的區(qū)別體現(xiàn)在面積大?。ˋrea)以及臥室(Bedroom)、衛(wèi)生間(
16、Bathroom)、車庫(Garage)、花園(Garden)、游泳池(Swimming Pool)的數(shù)量上。請用生成器模式設計該選購系統(tǒng),畫出設計類圖。(二) chapter 3 結構型設計模式6. 使用組合模式設計一款使用不同國家的語言做為問候語的軟件,需要一個用于用戶輸入的用戶圖形界面。在該用戶圖形界面上,有各個主要國家的列表。用戶可以選擇一個國家,然后,單擊產生問候語的按鈕,程序將顯示該國家見面時所使用的問候語。使用安全形式設計,畫出設計類圖。使用透明形式設計,畫出設計類圖。答:參見圖 4 參見圖 5圖 4 組合模式設計-安全形式圖 5 組合模式設計-透明模式7. 下圖所示為一個整數(shù)排
17、序的Java程序設計類圖。該設計使用類適配器模式。問題:(1) 請說明使用該設計有什么問題?Java是單繼承語言,不支持多繼承(2) 畫出新的設計類圖。答:參見圖 6圖 6 對象適配器解決多繼承問題8. 考察一個電源總開關的例子。為了使用方便,一個電源總開關可以控制四盞燈、一個風扇、一臺空調和一臺電視機的啟動和關閉。通過該電源總開關可以同時控制上述所有電器設備。請使用外觀模式設計該系統(tǒng),畫出設計類圖。答:參見圖 7圖 7 電源開關的例子9. 美國和加拿大的郵政編碼有不同的格式,美國的郵政編碼由5位阿拉伯數(shù)字組成加破折號,再加4位阿拉伯數(shù)字組成,即美國的郵政編碼形狀為ddddd-dddd,其中d
18、是介于0與9之間的整數(shù)。加拿大的郵政編碼是由6位字母與數(shù)字混合組成,格式為:cdc dcd,其中第1,3,5位是英語字母,第2,4,6位是阿拉伯數(shù)字,如:M4B 1G5。假設有一個網上貿易軟件,原來的客戶是美國公民,但是,隨著業(yè)務的擴展,將要允許加拿大公民使用該系統(tǒng)。假如已經有兩個經過充分測試的類,一個是USZipCode,另外一個是CAPostalCode。這兩個類中分別有一個方法,isValidZipCode(zip:String), 和isValidCaPostalCode(pcode: String),用于確認用戶輸入的郵政編碼是否正確。雖然這兩個接口(方法)的參數(shù)都是String類型
19、的,但是方法名字是不同的,而且,它們的具體的確認算法是不同的。現(xiàn)在要寫一個網上郵政編碼確認程序,該程序使用一個統(tǒng)一的接口,允許客戶程序使用該接口的時候,既可以使用美國的郵政編碼又可以使用加拿大的郵政編碼。請使用適配器模式進行設計,畫出設計類圖。10. 假如公司需要設計一個特工信息系統(tǒng)。特工的信息被加密并且被存入文本文檔或者數(shù)據庫。有三種方法加密特工的名字和代碼,該加密名字和代碼的任務由三個類完成,這三個類是EncryptedInfo1,EncryptedInfo2,EncryptedInfo3。請使用橋接模式設計該特工信息保密系統(tǒng),畫出設計類圖。11. 現(xiàn)需要設計一個可以模擬各種動物行為的機器
20、人。目前,在機器人中已定義了一系列方法:叫喊方法cry()、移動方法move()。如果希望在不修改已有代碼的基礎上使得機器人能夠像狗一樣叫wang(),像狗一樣跑run(),使用適配器模式進行設計,繪制設計類圖。12. 設計一個飛行員信息管理系統(tǒng)。假設飛行員分為戰(zhàn)斗機飛行員和轟炸機飛行員;在性別上又分為男飛行員和女飛行員。請使用橋接模式進行設計,畫出設計類圖。13. 假設有一個設計類圖如下所示。此類圖中包含了幾個動物類,Tiger、Dog和Cat,它們都包含各自的功能,三個類相互協(xié)作并緊密耦合,以便完成類似于動物世界的游戲功能。請用中介者模式重新設計,保持功能不變,畫出設計類圖。可將updat
21、eAll()方法修改為doGame(),在doGame()定義游戲規(guī)則。14. 針對如下已經存在的某程序設計圖,使用橋接模式重新設計該程序,并畫出設計類圖15. 文件系統(tǒng)中的文件有不同類型,不同類型的文件其瀏覽方式有所區(qū)別,如文本文件和圖片文件、視頻文件的瀏覽方式就不相同。對文件夾的瀏覽實際上就是對其中所包含文件的瀏覽,而客戶端可以一致地對文件和文件夾進行操作,無須關心它們的區(qū)別。請使用組合模式來模擬文件的瀏覽操作(display),畫出設計類圖。 (三) chapter 4 行為型設計模式16. 一個計算手機繳費的軟件設計如下圖所示:類中的type變量代表不同的客戶群體,因此有不同的繳費率。
22、因為對應于不同的客戶群體,有不同的優(yōu)惠收費包,例如FamilyPackage、FriendPackage和FamerPackage。方法computeFare(String num, String type)需要經常改變,原因是每個包都有不同的打折率,并且對于每個包計算費用的算法是不同的。這說明在方法computeFare(String num, String type)中,存在許多條件語句。很明顯,本設計不符合開閉原則,請利用策略模式對以上的類進行重新設計,畫出設計類圖。答:17. 使用狀態(tài)模式設計軟件。在一個面向兒童的人/機對抗游戲中有兩個角色,mood_guy代表計算機游戲軟件,玩家為兒
23、童。玩家可以容易地影響mood_guy。mood_guy有三個狀態(tài):愉快、惱怒和瘋狂。當它在愉快的狀態(tài)時,它將唱歌;當它在惱怒的狀態(tài)時,它將告訴它的朋友,抱怨某事;當它在瘋狂的狀態(tài)時,它將故意損壞一些東西。mood_guy可以自動改變心情狀態(tài):如果玩家忽略它超過20秒,無論處于何種狀態(tài),mood_guy將自動進入愉快狀態(tài)。mood_guy的狀態(tài)也可以由玩家的行為而改變:如果它處于愉快狀態(tài),玩家給它一個酸梨,則它進入惱怒狀態(tài);如果它處于惱怒狀態(tài),玩家給它一個辣椒,它將進入瘋狂狀態(tài);如果它處于瘋狂狀態(tài),玩家給它一個香蕉,它將進入愉快狀態(tài)。要求使用狀態(tài)模式設計該問題,并且:(1)畫出狀態(tài)圖;(2)畫
24、出設計類圖,該類圖中應該包含兩個方法:act( )和changeMood( )。18. 設計一個使用幾種排序算法對整數(shù)進行排序的程序。該程序可以計算出每種排序算法的執(zhí)行時間,以便比較各種排序算法的速度。該程序可以支持插入排序(InsertionSort)、快速排序(QuickSort)、冒泡排序(BubbleSort)、堆排序(HeapSort)。請使用策略模式進行設計,畫出設計類圖。19. 利用狀態(tài)模式設計的Weather State的實例。在本例中,考慮天氣狀態(tài)。天氣狀態(tài)可以分為:晴天狀態(tài)(Sunny State),下雨狀態(tài)(Rainy State),刮風狀態(tài)(Windy State),下
25、雪(Snowing State)。在晴天狀態(tài),陽光普照;在雨天狀態(tài)烏云密布,下雨不停;在刮風狀態(tài),大風刮得天昏地暗;在下雪狀態(tài),大雪紛飛。用狀態(tài)模式封裝天氣狀態(tài)。為了表達天有不測風云的思想,假設天氣狀態(tài)是隨機改變的,即在四種狀態(tài)之間的切換是根本沒有規(guī)律可循的,因此,考慮在抽象類WeatherState中的方法changeState(Context cxt)的實現(xiàn)中,使用能產生隨機整數(shù)的Random類。因此,具體狀態(tài)的改變,由抽象類WeatherState負責實現(xiàn)。請采用常規(guī)的狀態(tài)模式進行設計,畫出設計類圖。Context-state: WeatherState+getState()+doAct
26、ion():voidstateSunnyState+action():String+changeState()+setState():StringWeatherState+createStateObj()+changeState(Context cxt ):void+setState():String+getCurrentState():String+action(): String-ctx: ContextWindyState+action(): String+changeState()+setState():StringRainyState+act(): String+changeStat
27、e()+setState():StringSnowingState +act(): String+changeState()+setState():String20. 隨機生成一個整數(shù)矩陣,矩陣可以看做是聚合類型的數(shù)據。使用迭代器模式設計,對該矩陣進行不同的遍歷:(1)奇數(shù)遍歷(OddIterator),訪問并統(tǒng)計矩陣中的所有奇數(shù)。(2)偶數(shù)遍歷(EvenIterator),訪問并統(tǒng)計矩陣中的所有偶數(shù)。(3)斜對角線遍歷(DiagonalIterator), 按照斜對角線迭代遍歷矩陣。請應用迭代器模式進行設計,畫出設計類圖。21. 室內溫度控制軟件設計。室內溫度控制需要具備窗戶、風扇、空調的自動開啟與關閉功能。因此,該應用需要設計三個類,分別用于封裝窗戶、風扇、空調。請利用命令模式設計該應用,畫出設計類圖。22. 下圖所示是一個調用排序算法的設計圖。在實現(xiàn)時,調用者Invoker通過條件判斷語句調用相應的排序算法,調用者Invoker和接收者Receiver之間是緊耦合的。 請使用命令模式在Invoker與Receiver
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 我的社區(qū)個人工作計劃
- 內部工程項目承包合同樣本
- 出售車庫定金合同樣本
- 公司收押金合同樣本
- 農村房頂維修安全合同標準文本
- 農村建房鋼材合同樣本
- 中介房產抵押合同標準文本
- 勞動教育貫穿計劃
- 冰箱轉讓合同標準文本
- 農村大隊部修建合同標準文本
- 商業(yè)銀行支行裝修工程技術投標書
- 鋼筋運輸施工方案
- 工程招標代理服務投標方案(技術方案)
- asme第ⅸ卷焊接工藝評定,焊工技能評定-77
- 商法-商法課件
- 工程車輛事故案例分析安全教育課件
- 正確健康素養(yǎng)監(jiān)測調查問卷及答案
- 五六十年代詩歌戲劇散文公開課一等獎課件省賽課獲獎課件
- 【三只松鼠股利政策現(xiàn)狀問題及對策9400字(論文)】
- 博士后研究工作報告
- 學習方法與學習經驗交流
評論
0/150
提交評論