面向?qū)ο蠓治黾霸O(shè)計復(fù)習(xí)題(修改題庫)_第1頁
面向?qū)ο蠓治黾霸O(shè)計復(fù)習(xí)題(修改題庫)_第2頁
面向?qū)ο蠓治黾霸O(shè)計復(fù)習(xí)題(修改題庫)_第3頁
面向?qū)ο蠓治黾霸O(shè)計復(fù)習(xí)題(修改題庫)_第4頁
面向?qū)ο蠓治黾霸O(shè)計復(fù)習(xí)題(修改題庫)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、面向?qū)ο蠓治雠c設(shè)計習(xí)題一、單項選擇題1.到20世紀(jì)末,面向?qū)ο筌浖こ桃呀?jīng)逐漸發(fā)展成熟,特別是( )的形成和廣泛使用,采用面向?qū)ο蠓治雠c編程的軟件開發(fā)方法已成為軟件開發(fā)的主流方法。 A. Simula67語言 B. Smalltalk語言 C. Java語言 D. 統(tǒng)一建模語言(UML)的標(biāo)準(zhǔn)2. 面向?qū)ο蟮倪\動產(chǎn)生了多種面向?qū)ο蟮恼Z言, 其中( )是一種混合性面向?qū)ο笳Z言, 既支持面向過程的程序設(shè)計方法,又支持面向?qū)ο蟮某绦蛟O(shè)計方法,有廣泛應(yīng)用的基礎(chǔ)和豐富開發(fā)環(huán)境的支持,因而使面向?qū)ο蟮某绦蛟O(shè)計能得到很快普及。A. Smalltalk B. Eiffel C. C+ D. Java3下列不屬

2、于面向?qū)ο蠹夹g(shù)的基本特征的是( )。A. 封裝性 B. 模塊性 C. 多態(tài)性 D. 繼承性 4. 面向?qū)ο蟪绦蛟O(shè)計將描述事物的數(shù)據(jù)與( ) 封裝在一起,作為一個相互依存、不可分割的整體來處理。A. 信息 B. 數(shù)據(jù)隱藏 C. 對數(shù)據(jù)的操作 D. 數(shù)據(jù)抽象 5. 關(guān)于面向?qū)ο蠓椒ǖ膬?yōu)點,下列不正確的敘述是 ( )。A. 與人類習(xí)慣的思維方法比較一致 B. 可重用性好 C. 以數(shù)據(jù)操作為中心 D.可維護(hù)性好6. ( )是從用戶使用系統(tǒng)的角度描述系統(tǒng)功能的圖形表達(dá)方法。 A. 類圖 B. 對象圖 C. 序列圖 D. 用例圖7. ( ) 是表達(dá)系統(tǒng)類及其相互聯(lián)系的圖示,它是面向?qū)ο笤O(shè)計的核心,建立狀態(tài)

3、圖、協(xié)作圖和其他圖的基礎(chǔ)。 A對象圖 B. 組件圖 C. 類圖 D. 配置圖8.( )描述了一組交互對象間的動態(tài)協(xié)作關(guān)系,它表示完成某項行為的對象和這些對象之間傳遞消息的時間順序。 A對象圖 B. 協(xié)作圖 C. 狀態(tài)圖 D. 序列圖9.( )就是用于表示構(gòu)成分布式系統(tǒng)的節(jié)點集和節(jié)點之間的聯(lián)系的圖示,它可以表示系統(tǒng)中軟件和硬件的物理架構(gòu)。 A. 組件圖 B. 協(xié)作圖 C. 狀態(tài)圖 D. 配置圖10. 使用UML進(jìn)行關(guān)系數(shù)據(jù)庫的( )時,需要設(shè)計出表達(dá)持久數(shù)據(jù)的實體類及其聯(lián)系,并把它們映射成為關(guān)系數(shù)據(jù)庫表(Table)、視圖(View)等。 A. 業(yè)務(wù)Use Case模型設(shè)計 B. 邏輯數(shù)據(jù)模型設(shè)

4、計C. 物理數(shù)據(jù)模型設(shè)計 C. 物理實現(xiàn)設(shè)計11.一個設(shè)計得好的OO系統(tǒng)具有( )A. 低內(nèi)聚、低耦合的特征B. 高內(nèi)聚、低耦合的特征C. 高內(nèi)聚、高耦合的特征D. 低內(nèi)聚、高耦合的特征12.下面()不是UML的基本構(gòu)成元素。( )A. 控制語言B. 基本構(gòu)造塊C. 規(guī)則D. 公共機(jī)制13. 面向?qū)ο蟮奶攸c主要概括為( )。A. 可分解性、可組合性、可分類性B. 繼承性、封裝性、多態(tài)性C. 抽象性、繼承性、封裝性、多態(tài)性D. 封裝性、易維護(hù)性、可擴(kuò)展性、可重用性14構(gòu)成對象的兩個主要因素是( )。A. 屬性和服務(wù)B. 標(biāo)識和內(nèi)容C. 繼承和多態(tài)D. 消息和封裝15.下列關(guān)于面向?qū)ο蠓椒ㄖ忻枋鲋?/p>

5、錯誤的是( )。A. 使用設(shè)計模式有助于在軟件開發(fā)中應(yīng)用面向?qū)ο蠹夹g(shù)B. 選擇面向?qū)ο蟪绦蛟O(shè)計語言時需要考慮開發(fā)人員對其的熟悉程度C. UML作為一種可視化建模語言需要與RUP開發(fā)過程同時使用D. 目前在軟件生命周期的分析、設(shè)計、實現(xiàn)和測試中均可以應(yīng)用面向?qū)ο蠓椒?6. 順序圖主要可以為設(shè)計人員提供( )信息。A. 消息發(fā)送的順序B. 某個方法的執(zhí)行流程C. 類之間關(guān)聯(lián)關(guān)系的多重性D. 某個對象在不同狀態(tài)之間的轉(zhuǎn)移17. 類和接口的關(guān)系類似于下面哪種類型的關(guān)系( )。A. 關(guān)聯(lián)(association)和聚集(aggregation)B. 關(guān)聯(lián)(association)和組合(composit

6、ion)C. 腳本(scenario)和用例(use case)D. 包(Package)和子系統(tǒng)(subsystem)18. 在類圖中,那個類圖中的類Order所生成的代碼具有Public class Order Public Customer recipient;的形式?( )A. B. C. D. 19. 下面那個圖符表示UML中的實現(xiàn)關(guān)系?( )A. B. C. D. 20. 一個銀行業(yè)務(wù)系統(tǒng)采用如圖所示的配置圖,則錯誤的是( )A. 與GUI有關(guān)的類應(yīng)該部署在Branch Client上B. 這個圖表示一個三層的體系結(jié)構(gòu),不管Branch Client、Financial App S

7、erver、Database Server是運行在同一臺機(jī)器上還是在不同機(jī)器上C. 為了系統(tǒng)的可伸縮性(scalability),與業(yè)務(wù)邏輯有關(guān)的對象應(yīng)該部署在Financial App Server上D. 為了系統(tǒng)的可伸縮性,與業(yè)務(wù)邏輯有關(guān)的對象應(yīng)該部署在Branch Client上21. 關(guān)于用例與類的對比中( )是錯誤的。 A 都屬于模型結(jié)構(gòu)元素 B 都存在繼承關(guān)系 C 類描述系統(tǒng)的部分靜態(tài)視圖,用例描述系統(tǒng)動態(tài)的行為視圖 D 類描述的是系統(tǒng)的內(nèi)部構(gòu)成,用例也可以描述系統(tǒng)的內(nèi)部構(gòu)成22. Innovation公司正在為Rose開發(fā)插入件,使得Rose可以把OOA、OOD模型以各種圖形格式

8、導(dǎo)出,如JPEG格式、BMP格式、GIF格式等。在導(dǎo)出時,會根據(jù)不同的算法來生成相應(yīng)的圖形文件,這些算法很復(fù)雜。為了描述這些算法,在下面這些圖中,那個是最適合的?( )(注:活動圖可以用來描述細(xì)節(jié))A. 活動圖 B. 狀態(tài)圖C. 類圖D. 用例圖23. 計算機(jī)(Computer)由中央處理器、內(nèi)存、軟盤、硬盤、顯示器、鍵盤、鼠標(biāo)等組成。那么Computer類和其他類(CPU、RAM、FloppyDrive、HardDisk、Monitor、Keyboard、Mouse)之間的關(guān)系是:( )A. 泛化關(guān)系(Generalization)B. 實現(xiàn)關(guān)系(Realization)C. 包含關(guān)系(In

9、clusion)D. 聚集關(guān)系(Aggregation)24. 在狀態(tài)圖中不能表示下面那些概念?( )A. 動作(action)B. 事件(event)C. 轉(zhuǎn)移(transition)D. 類(class)25.在數(shù)據(jù)庫設(shè)計的 階段開始考慮具體的數(shù)據(jù)庫管理系統(tǒng)(DBMS)的特性。( )A. 需求分析B. 概念設(shè)計C. 邏輯設(shè)計.D 物理設(shè)計26在UML中,有3種基本構(gòu)造塊,分別是( ) A. 事物、關(guān)系和圖 B. 注釋、關(guān)系和圖 C. 事物、關(guān)系和結(jié)構(gòu) D. 注釋、關(guān)系和結(jié)構(gòu)27在UML中,有四種關(guān)系,下面哪個不是( ) A.依賴關(guān)系 B.繼承關(guān)系 C.泛化關(guān)系 D.實現(xiàn)關(guān)系28下面哪個不是

10、UML中的靜態(tài)視圖() A.狀態(tài)圖 B.用例圖 C.對象圖 D.類圖 29在用例之間,會有三種不同的關(guān)系,下列哪個不是它們之間可能的關(guān)系( ) A.包含(include) B.擴(kuò)展(extend) C.泛化(generalization) D.關(guān)聯(lián)(connect) 30用例(Use-case)用來描述系統(tǒng)在事件做出響應(yīng)時所采取的行動。用例之間是具有相關(guān)性的。在一個“訂單輸入子系統(tǒng)”中,創(chuàng)建新訂單和更新訂單都需要檢查用戶帳號是否正確。那么,用例“創(chuàng)建新訂單”、“更新訂單”與用例“檢查用戶帳號”之間是( )關(guān)系 A.擴(kuò)展(extend) B.包含(include) C.分類(classifica

11、tion) D.聚集(aggregation)31UML中類的有三種,下面哪個不是其中之一( ) A.實體類 B.抽象類 C.控制類 D.邊界類32閱讀圖例,判斷下列哪個說法是錯誤的。( ) A.讀者可以使用系統(tǒng)的還書用例 B.每次執(zhí)行還書用例都要執(zhí)行圖書查詢用例 C.每次執(zhí)行還書用例都要執(zhí)行交納罰金用例 D.執(zhí)行還書用例有可能既執(zhí)行圖書查詢用例,又執(zhí)行交納罰金用例 33關(guān)于協(xié)作圖的描述,下列哪個不正確( ) A.協(xié)作圖作為一種交互圖,強調(diào)的是參加交互的對象的組織; B.協(xié)作圖是順序圖的一種特例 C.協(xié)作圖中有消息流的順序號; D.在ROSE工具中,協(xié)作圖可在順序圖的基礎(chǔ)上按“F5”鍵自動生成

12、;34. 設(shè)計模式具有的優(yōu)點( )。A適應(yīng)需求變化 B.程序易于理解C減少開發(fā)過程中的代碼開發(fā)工作量 D.簡化軟件系統(tǒng)的設(shè)計35. 設(shè)計模式一般用來解決什么樣的問題( )。A.同一問題的不同表相 B不同問題的同一表相C.不同問題的不同表相 D.以上都不是36. 設(shè)計模式的兩大主題是( )。A.系統(tǒng)的維護(hù)與開發(fā) B 對象組合與類的繼承C.系統(tǒng)架構(gòu)與系統(tǒng)開發(fā)D.系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展37. 以下哪些問題通過應(yīng)用設(shè)計模式不能夠解決 。( )A)指定對象的接口 B)針對接口編程C)確定軟件的功能都正確實現(xiàn) D)設(shè)計應(yīng)支持變化38. 外觀模式的作用是( )。A當(dāng)不能采用生成子類的方法進(jìn)行擴(kuò)充時,動態(tài)地給一個

13、對象添加一些額外的功能。B為了系統(tǒng)中的一組功能調(diào)用提供一個一致的接口,這個接口使得這一子系統(tǒng)更加容易使用。C保證一個類僅有一個實例,并提供一個訪問他的全局訪問點。D在方法中定義算法的框架,而將算法中的一些操作步驟延遲到子類中實現(xiàn)。39. Faade(外觀)模式的意圖是( )。A. 希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的接口。B將一個無法控制的現(xiàn)有對象與一個特定接口相匹配。C. 將一組實現(xiàn)部分從另一組使用它們的對象中分離出來。D你需要為特定的客戶(或情況)提供特定系列的對象。40. Adapter(適配器)模式的意圖是( )。A. 希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的接口。B將一個

14、無法控制的現(xiàn)有對象與一個特定接口相匹配。C. 將一組實現(xiàn)部分從另一組使用它們的對象中分離出來。D你需要為特定的客戶(或情況)提供特定系列的對象。41. 下面不屬于創(chuàng)建型模式的有( )。A抽象工廠模式( Abstract Factory )B工廠方法模式(Factory Method)C適配器模式 (Adapter)D單例模式(Singleton)42. 將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口。這句話是對下列哪種模式的描述( )。A. 策略模式(Strategies)B橋接模式(Bridge)C適配器模式(Adapter)D單例模式(Singleton)43. 以下關(guān)于結(jié)構(gòu)型模式說法不正確的是

15、 。( )A)結(jié)構(gòu)型模式可以在不破壞類封裝性的基礎(chǔ)上,實現(xiàn)新的功能。B)結(jié)構(gòu)型模式主要用于創(chuàng)建一組對象。C)結(jié)構(gòu)型模式可以創(chuàng)建一組類的統(tǒng)一訪問接口。D)結(jié)構(gòu)型模式可以在不破壞類封裝性的基礎(chǔ)上,使得類可以同不曾估計到的系統(tǒng)進(jìn)行交互。44. 關(guān)于繼承表述錯誤的是:( )。A.繼承是一種通過擴(kuò)展一個已有對象的實現(xiàn),從而獲得新功能的復(fù)用方法。B.泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。特殊類(子類)則通過附加屬性和方法來進(jìn)行實現(xiàn)的擴(kuò)展。C.在一定意義上說破壞了封裝性,因為這會將父類的實現(xiàn)細(xì)節(jié)暴露給子類。D.繼承本質(zhì)上是“白盒復(fù)用”,對父類的修改,不會影響到子類。45. 在不破壞類封裝性的基礎(chǔ)

16、上,使得類可以同不曾估計到的系統(tǒng)進(jìn)行交互。主要體現(xiàn)在( )。A外觀模式(Facade) B裝飾模式(Decorator)C策略模式(Strategies) D橋接模式(Bridge)46.行為類模式使用( )在類間分派行為。A接口 B繼承機(jī)制 C對象組合 D委托47. 下面的類圖表示的是哪個設(shè)計模式?( )。A抽象工廠模式(Abstract Factory) B觀察者模式(Observer)C策略模式(Strategies) D橋接模式(Bridge)48. Bridge(橋接)模式的意圖是( )。A. 希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的接口。B將一個無法控制的現(xiàn)有對象與一個特定接口

17、相匹配。C. 將一組實現(xiàn)部分從另一組使用它們的對象中分離出來。D你需要為特定的客戶(或情況)提供特定系列的對象。49. 靜態(tài)工廠的核心角色是( )。A.抽象產(chǎn)品B.具體產(chǎn)品C.靜態(tài)工廠D.消費者50. 以下屬于創(chuàng)建型模式的是( )。A抽象工廠模式(Abstract Factory) B 裝飾模式(Decorator)C外觀模式(Facade) D橋接模式(Bridge)51. 下面的類圖表示的是哪個設(shè)計模式?( )。A抽象工廠模式 B觀察者模式C 策略模式 D橋接模式 52. Abstract Factory(抽象工廠)模式的意圖是( )。A. 希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的接口

18、。B將一個無法控制的現(xiàn)有對象與一個特定接口相匹配。C. 將一組實現(xiàn)部分從另一組使用它們的對象中分離出來。D提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們具體的類53. 在根據(jù)不同的機(jī)器選擇設(shè)備驅(qū)動程序的案例中,以下敘述不準(zhǔn)確的是( )。A. 可以使用switch語句選擇驅(qū)動程序.B. 可以使用繼承來實現(xiàn)選擇驅(qū)動程序,但它可能會產(chǎn)生類組合爆炸問題.C. 可以選擇抽象工廠模式實現(xiàn),且能避免組合爆炸問題.D. 使用繼承的解決方案要比switch語句有更多的優(yōu)勢.54. 應(yīng)用設(shè)計模式的一個優(yōu)點是( )。A適應(yīng)需求變化 B.程序易于理解C減少開發(fā)過程中的代碼開發(fā)工作量 D.簡化軟件系統(tǒng)的設(shè)計

19、55. 當(dāng)我們想創(chuàng)建一個具體的對象而又不希望指定具體的類時,可以使用( )模式。A.創(chuàng)建型 B.結(jié)構(gòu)型 C行為型 D.以上都可以56. 在觀察者模式中,表述錯誤的是( )。A.觀察者角色的更新是被動的。B.被觀察者可以通知觀察者進(jìn)行更新C.觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被觀察者的狀態(tài)進(jìn)行。D.以上表述全部錯誤。57. 下面的類圖表示的是哪個設(shè)計模式?( )。A 策略模式(Strategies) B 裝飾模式(Decorator)C 橋接模式(Bridge) D 觀察者模式(Observer)58. 當(dāng)我們想創(chuàng)建一個具體的對象而又不希望指定具體的類時,可以使用( )

20、模式。A.創(chuàng)建型 B.結(jié)構(gòu)型C行為型 D.以上都可以59. 下列模式中,屬于行為模式的是( )。A.工廠模式 B觀察者C適配器 D 以上都是60. Observer模式不適用于( )。A當(dāng)一個抽象模型存在兩個方面,其中一個方面依賴于另一方面,將這二者封裝在獨立的對象中以使它們可以各自獨立的改變和復(fù)用。B當(dāng)對一個對象的改變需要同時改變其他對象,而不知道具體有多少個對象有待改變時。C當(dāng)一個對象必須通知其它對象,而它又不能假定其它對象是誰,也就是說你不希望這些對象是緊耦合的。D一個對象結(jié)構(gòu)包含很多類對象,它們有不同的接口,而想對這些對象實施一些依賴于其具體類的操作。二、判斷題1. 一個狀態(tài)圖最多只能

21、由一個初態(tài)和一個終態(tài)。( f )2. 協(xié)作圖中的消息必須要有消息順序號。( t )3. 兩個參與者(actor)之間可以有包含(include)關(guān)系、擴(kuò)展(extend)關(guān)系或泛化(generalization)關(guān)系,而包含關(guān)系和擴(kuò)展關(guān)系是依賴(dependency)關(guān)系的版型。( f )4. 參與者(actor)和用例(use case)之間的關(guān)系是關(guān)聯(lián)(association)關(guān)系。( f )5. 類A和類B之間的關(guān)系如圖1所示,則稱類B中的getName()方法是對類A中的 getName()方法的重載(overload)。( f )圖1 getName()方法之間的關(guān)系圖2 活動圖6.

22、 如圖2所示,活動Gesture和Stream audio可以并發(fā)進(jìn)行。( t )7. 一個軟件系統(tǒng),如果只有源代碼,缺乏其他相應(yīng)的輔助文檔,如缺乏順序圖和類圖,則可以利用Rose進(jìn)行逆向工程得到順序圖和類圖,但得到的順序圖和類圖會比較簡單。( t )8. CMM描述了五個級別的軟件過程成熟度,即初始級、可重復(fù)級、已定義、已管理級、優(yōu)化級。( t )9. UML由用例視圖、物理視圖、組件視圖、進(jìn)度視圖和配置視圖組成。( t )10. 在設(shè)計類圖時,可以不用對類圖中的每個關(guān)聯(lián)進(jìn)行命名,但如果需要命名的話,最好用一個“動詞”給關(guān)聯(lián)命名。( t )11. 適配器模式屬于創(chuàng)建型模式。( f )12.

23、在設(shè)計模式中,“效果”只是指“原因和結(jié)果”。( t )13. 設(shè)計模式使代碼編制不能真正工程化。( f )14. 設(shè)計模式的兩大主題是系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展。( t )15. Faade(外觀)模式不僅可以為方法調(diào)用創(chuàng)建更簡單的接口,還可以減少客戶必須處理的對象數(shù)量。( t )16. 外觀模式,當(dāng)不能采用生成子類的方法進(jìn)行擴(kuò)充時,動態(tài)地給一個對象添加一些額外的功能。( f )17. Faade模式為子系統(tǒng)中的一組接口提供的界面可能不一致。( t )18. Faade外觀模式只能為方法調(diào)用創(chuàng)建更簡單的接口,不能減少客戶必須處理的對象數(shù)量。( t )19. 對象適配器模式是合成聚合復(fù)用原則的典型應(yīng)用。

24、( t )20. Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。( t )21. Faade模式和Adapter模式是相同類型的包裝器。( t )22. Adapter模式不是必須針對某個接口進(jìn)行設(shè)計。( f )23. 繼承本質(zhì)上是“白盒復(fù)用”,對父類的修改,不會影響到子類。( f )24. 繼承是一種通過擴(kuò)展一個已有對象的實現(xiàn),從而獲得新功能的復(fù)用方法。( t )25. 抽象工廠模式提供了一系列相關(guān)或相互依賴對象的接口且必須指定他們具體的類。( f )26. Abstract Factory(抽象工廠)模式確保系統(tǒng)總能根據(jù)當(dāng)前的情況獲得合適的對象。( t )27.

25、 在Abstract Factory(抽象工廠)模式中,客戶對象不需要知道“向誰請求需要的對象”“如何使用這些對象”。( f )28. Decorator(裝飾)模式的意圖是為一個對象連接附加的職責(zé)。( t )29. 每個Decorator對象在被裝飾的功能之前或之后執(zhí)行自己的附加功能。( t )30. Decorator(裝飾)模式適用性是表示對象的部分-整體層次結(jié)構(gòu)。( f )四. 簡答題1. 簡述面向?qū)ο筌浖_發(fā)方法的優(yōu)點。 1)從認(rèn)識論角度上看面向?qū)ο蠓椒ǜ淖兞碎_發(fā)軟件的方式 2)面向?qū)ο笳Z言使得從客觀世界到計算機(jī)的語言鴻溝變窄 3)面向?qū)ο蠓椒ㄊ狗治雠c設(shè)計之間的鴻溝變窄 4)面向?qū)ο?/p>

26、方法有助于軟件的維護(hù)和復(fù)用 5)面向?qū)ο蠓椒ㄓ兄谔岣哕浖馁|(zhì)量與生成率2. 簡述面向?qū)ο蠹夹g(shù)的三大機(jī)制。答:(1)封裝性(encapsulation)所謂封裝就是把對象的屬性和行為結(jié)合成一個獨立的單位,使外界不能直接訪問或修改這些數(shù)據(jù)和代碼,外界只能通過對象提供的接口函數(shù)來改變或獲取對象的屬性數(shù)據(jù),這就實現(xiàn)了消息隱蔽。(2)繼承性如果在一個已定義的類上,增加一些特殊屬性或操作,可以形成一個新的類,這個類不僅繼承了前一個類的全部特征,而且具有新的特性,因此可看作前一個類的特例,是對前一個類的繼承。前一個類稱為父類,新產(chǎn)生的類叫做子類。通過繼承關(guān)系可形成一種類層次結(jié)構(gòu),叫做繼承結(jié)構(gòu)。(3)多態(tài)性

27、在類層次結(jié)構(gòu)的不同類中,可用相同的函數(shù)名實現(xiàn)功能不同的函數(shù)。3. 簡述OOA模型的層次結(jié)構(gòu)。答:OOA模型采用五層次結(jié)構(gòu),它們分別是:(1)對象-類層劃分待開發(fā)系統(tǒng)及其環(huán)境信息的基本構(gòu)造單位,標(biāo)出反映問題域的對象和類,并用符號進(jìn)行規(guī)范的描述,用信息提供者熟悉的術(shù)語為對象和類命名。(2)屬性層定義對象和某些結(jié)構(gòu)中的數(shù)據(jù)單元,繼承結(jié)構(gòu)中所有類的公共屬性可放于通用類中。標(biāo)識對象類必需的屬性并放在合適的繼承層次上,屬性的特殊限制和實例連接關(guān)系也應(yīng)標(biāo)識出來。(3)服務(wù)層表示對象的服務(wù)或行為,即是要定義類上的操作。(4)結(jié)構(gòu)層標(biāo)識現(xiàn)實世界中對象之間的關(guān)系。當(dāng)一個對象是另一個對象的一部分時,用整體-部分關(guān)系

28、表示;當(dāng)一個類屬于另一個類時,用類之間繼承關(guān)系表示。(5)主題層可將相關(guān)類或?qū)ο髣澐譃橐粋€主題。4. 簡述OOD模型的總體結(jié)構(gòu),并畫圖表示。OOD體系結(jié)構(gòu)的各個部分內(nèi)容:(1)問題論域部分:在OOA模型的基礎(chǔ)上,細(xì)化分析結(jié)果,設(shè)計一組構(gòu)成底層應(yīng)用模型的類和對象。(2)人機(jī)交互部分:設(shè)計用戶界面模型,該用戶界面模型中的類和對象提供實現(xiàn)人機(jī)交互操作的接口函數(shù)。用戶界面設(shè)計包括 菜單設(shè)計、窗口設(shè)計、輸入/輸出界面設(shè)計等等。(3)任務(wù)管理部分:建立一些類,用以負(fù)責(zé)處理操作系統(tǒng)級的并發(fā)問題、中斷、調(diào)度以及其它與特定平臺有關(guān)的問題。 (4)數(shù)據(jù)管理部分:提供數(shù)據(jù)管理系統(tǒng)中存儲和檢索對象的基本結(jié)構(gòu),包括對永

29、久性數(shù)據(jù)的訪問和管理。數(shù)據(jù)管理設(shè)計包括: 數(shù)據(jù)存放設(shè)計:數(shù)據(jù)存放設(shè)計選擇數(shù)據(jù)存放的方式(文件存放、關(guān)系數(shù)據(jù)庫表格存放或面向?qū)ο蟮臄?shù)據(jù)庫存放)。 設(shè)計相應(yīng)的操作。為每個需要存儲的對象和類增加用于存儲管理的屬性和操作,在類和對象的定義中加以描述。5. 分析下面的類圖,畫出新的類圖,將原圖中的多對多關(guān)系轉(zhuǎn)換為1:M(一對多)關(guān)系。答案:6信用卡可能處于“開放”和“關(guān)閉”狀態(tài),其中“開放”狀態(tài)可以直接進(jìn)入“關(guān)閉”狀態(tài),而從“關(guān)閉”狀態(tài)必須提供密碼驗證才能進(jìn)入“開放”狀態(tài)?!伴_放”狀態(tài)又包括“透支”和“正?!睜顟B(tài)之間的變化,當(dāng)剩余金額少于零、或者使用額度大于剩余金額、或者結(jié)算余額小于零時進(jìn)入透支狀態(tài),反

30、之則為正常狀態(tài)。畫出信用卡的狀態(tài)圖。(6分)7. 請判斷以下類圖中的類關(guān)系是否合適,并說明理由。(1)飛機(jī)有機(jī)翼、機(jī)身、駕駛艙(2)商場里的電器。1臺電器可以是1臺洗衣機(jī),也可以不是;1臺電器可以是1臺電視機(jī),也可以不是;1臺電器可以是1臺空調(diào),也可以不是;(3)公司的員工很多,包括程序員、分析員、項目經(jīng)理(1)飛機(jī)有機(jī)翼、機(jī)身、駕駛艙應(yīng)改為“組合”(2)商場里的電器。1臺電器可以是1臺洗衣機(jī),也可以不是;1臺電器可以是1臺電視機(jī),也可以不是;1臺電器可以是1臺空調(diào),也可以不是;應(yīng)該為“泛化”(3)公司的員工很多,包括程序員、分析員、項目經(jīng)理應(yīng)改為“泛化”8. 假設(shè)你從垃圾堆里撿到這樣一張小紙

31、片(如下圖所示)。根據(jù)現(xiàn)有信息盡可能判斷:(1)“小車”類有哪幾個操作?(2)“指揮小車UC”類的“執(zhí)行任務(wù)”操作要做哪些工作?(采用偽代碼描述)圖 時序圖參考答案:(1)“小車”類有哪幾個操作?返回小車當(dāng)前位置()轉(zhuǎn)向和前進(jìn)()(2)“指揮小車UC”類的“執(zhí)行任務(wù)”操作要做哪些工作?(采用偽代碼描述)移動任務(wù):更新行走斷表和目的地()移動任務(wù):判斷現(xiàn)有信息足以讓小車行走()小車:放回小車當(dāng)前位置()小車:驗證小車尚未到達(dá)目的地()移動:根據(jù)但前位置及斷表信息計算出速度、角度()小車:轉(zhuǎn)向和前進(jìn)()9. 簡述統(tǒng)一建模語言UML的優(yōu)點。10. 簡述面向?qū)ο蠹夹g(shù)的三大機(jī)制。11. 簡述面向?qū)ο蠓治?/p>

32、的基本步驟。12. 簡述OOD模型的總體結(jié)構(gòu),并畫圖表示。13. 應(yīng)用UML進(jìn)行系統(tǒng)分析和設(shè)計所需建立視圖有那幾種?14.簡述“開閉”原則的基本思想。請舉出一個使用了軟件“開閉”原則的軟件設(shè)計模式,其中何處體現(xiàn)了“開閉”原則。答:“開閉”原則:軟件實體應(yīng)當(dāng)對擴(kuò)展開放,而對修改關(guān)閉,“開-閉”原則要求軟件系統(tǒng)能夠在不需要修改原有類的基礎(chǔ)上,通過增加類達(dá)到擴(kuò)展功能的目的。Abstract factory體現(xiàn)了這個原則,如果想增加一類新的products,只需在product類體系中增加各個products,然后在factory類體系結(jié)構(gòu)中增加一個concrete factory就可以了,而不需要對

33、現(xiàn)有類做任何修改,The Open-closed principleocp在不改動過模塊源代碼的情況下擴(kuò)展模塊的行為。軟件實體(類模塊 函數(shù)等)應(yīng)該是可以擴(kuò)展的,但是不可以修改的。15.簡述依賴?yán)D(zhuǎn)原則的基本思想。請舉出一個使用了軟件依賴原則的軟件設(shè)計模式,其中何處體現(xiàn)了依賴原則。答:依賴倒置原則的基本思想是:層模塊不應(yīng)該依賴于低層模塊,二者都應(yīng)該依賴于抽象。抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該不依賴于抽象。Tomplate method就體現(xiàn)了這個原則,它定義了一個操作中的算法骨架,而將一些步驟延遲到子類中,template method使得子類不改變一個算法的結(jié)構(gòu),即可重定義該算法的某些特定步驟

34、。 16.什么是單一職責(zé)原則?請舉出一個使用了單一職責(zé)原則的軟件設(shè)計模式,其中何處體現(xiàn)了單一職責(zé)原則。答:基本思想:SRP使得一個類或一個模塊承擔(dān)的責(zé)任盡可能的少,使盡可能少的因素或動機(jī)影響該類或該模塊,即增大類或模塊的內(nèi)聚性,減少其耦合度,SRP是所有原則中最簡單的之一,也是最難正確運用的之一。COMMAND模式體現(xiàn)了SRP原則,大多數(shù)類都是一組方法和相應(yīng)的一組變量的結(jié)合,而該模式只是封裝了一個沒有任何變量的函數(shù),它對函數(shù)的關(guān)注超過了類,將一個請求封裝為一個對象,從而可用不同的請求對客戶進(jìn)行參數(shù)化。17.軟件復(fù)用可采用類的繼承方式和類的聚合方式,比較兩者的優(yōu)缺點。答:聚合:一個對象擁有另一個

35、對象或?qū)α硪粋€對象負(fù)責(zé)(即一個對象包含另一個對象或是另一個對象的一部分)并且聚合對象和其所有具有相同的生命周期(即所謂的“同生共死”關(guān)系)。聚合復(fù)用優(yōu)點:容器類僅能通過被包含對象的接口來對其進(jìn)行訪問。黑盒”復(fù)用,因為被包含對象的內(nèi)部細(xì)節(jié)對外是不可見。包裝性好。實現(xiàn)上的相互依賴性比較小。每一個類只專注于一項任務(wù)。通過獲取指定其他的具有相同類型的對象的使用,可以在運行期間動態(tài)地定義(對象的)組合。聚合的缺點:導(dǎo)致系統(tǒng)中的對象過多 為了能將多個不同的對象作為組合塊來使用,必須仔細(xì)地對接口進(jìn)行定義。類繼承:是一種通過擴(kuò)展(一個已有對象的)實現(xiàn),從而獲得新功能的復(fù)用方法。繼承的優(yōu)點:容易進(jìn)行新的實現(xiàn),因

36、為其大多數(shù)可繼承而來 易于修改或擴(kuò)展那些被復(fù)用的實現(xiàn)。繼承的缺點:破壞了封裝性,因為這會將父類的實現(xiàn)細(xì)節(jié)暴露給子類 “白盒”復(fù)用,因為父類的內(nèi)部細(xì)節(jié)對于子類而言通常是可見的 當(dāng)父類的實現(xiàn)更改時,子類也不得不隨之更改 從父類繼承來的實現(xiàn)將不能在運行期間進(jìn)行改變。18.畫出工廠方法模式的結(jié)構(gòu)圖。什么情況下適合使用工廠方發(fā)模式?其中product:為工廠模式所要創(chuàng)建的對象類型定義一個接口。Concrete product:實現(xiàn)product接口。Creator:聲明工廠方法(factory method)返回值為product的一個對象。Concrete creator:覆寫factory Meth

37、od(),返回值為concrete product 的一個具體實例。在下面情況下你可以考慮使用工廠方法模式: 1) 當(dāng)客戶程序不需要知道要使用對象的創(chuàng)建過程。 2) 客戶程序使用的對象存在變動的可能,或者根本就不知道使用哪一個具體的對象。19.畫出合成模式(Composite)的結(jié)構(gòu)圖。舉例說明一個可以應(yīng)用合成模式的軟件設(shè)計實例,說明其中各角色的作用。實例:計算機(jī)和立體組合音響這樣的設(shè)備經(jīng)常被組裝成一部分整體層次結(jié)構(gòu)或者是容器層次結(jié)構(gòu),例如:底盤可以包含驅(qū)動裝置和平面板,總線含有多個插件,機(jī)柜包括底盤、總線等。這樣結(jié)構(gòu)很自然的用composite模式進(jìn)行模擬。Equipment類為在部分整體層

38、次結(jié)構(gòu)中的所有設(shè)備定義一個接口。Equipment聲明一些操作返回一個設(shè)備的屬性,例如它的能是消耗和價格。子類為指定的設(shè)備實現(xiàn)了這些操作,Equipment還聲明了一個Create Iterator 操作,該操作為訪問它的零件返回一個Iterator ,這個操作的缺省實現(xiàn)返回一上NullIterator,它在空集上迭代。Composite Equipment是包含其它設(shè)備的基類,它也是Equipment的子類。20.簡述門面模式(Facade)和中介者模式(Mediator)的基本思想,兩者的差異何在?答:門面模式(facade)又稱外觀模式?;舅枷耄簽樽酉到y(tǒng)中的一組接口提供一個一致的界面,

39、 Facade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。“中介者模式”基本思想:Mediator Pattern 中文譯為“中介者模式”、“調(diào)停者模式”。調(diào)停者模式的定義是:用一個調(diào)停對象來封裝一系列的對象交互。調(diào)停者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。簡單點來說,將原來兩個直接引用或者依賴的對象拆開,在中間加入一個“調(diào)?!睂ο?,使得兩頭的對象分別和“調(diào)停”對象引用或者依賴。兩者的差異: 從目的上看,調(diào)停者模式與門面模式有些相似。 但是門面模式是介于客戶程序與子系統(tǒng)之間的,而調(diào)停者模式是介于子系統(tǒng)與子系統(tǒng)之間的。這也注定了它們有很

40、大的區(qū)別:門面模式是將原有的復(fù)雜邏輯提取到一個統(tǒng)一的接口,簡化客戶對邏輯的使用。它是被客戶所感知的,而原有的復(fù)雜邏輯則被隱藏了起來。而調(diào)停者模式的加入并沒有改變客戶原有的使用習(xí)慣,它是隱藏在原有邏輯后面的,使得代碼邏輯更加清晰可用。21.簡述觀察者模式的基本思想,如何實現(xiàn)當(dāng)目標(biāo)對象發(fā)生變化時多個觀察者對象的同步更新?畫出他們之間的協(xié)作圖。(1)Observer(觀察者)基本思想:對象間的一種一對多的依賴關(guān)系。當(dāng)一個對象的狀態(tài)發(fā)生變化時,所有依賴于它的對象都得到通知并自動更新。(2)協(xié)作:當(dāng)Concrete Subject發(fā)生任何可能導(dǎo)到其參觀者與其本身狀態(tài)不一致的改變時,它將通知它的各個觀察者

41、。在得到一個具體的目標(biāo)改變通知后,Concrete Object對象可向目標(biāo)對象查詢信息,Concrete Object使用這個些信息以使它的狀態(tài)與目標(biāo)對象的狀態(tài)一致。(3)協(xié)作圖:22.舉一適合使用State模式的例子。與不使用該模式相比,有哪些優(yōu)點?舉例:抽象狀態(tài)類定義了一個抽象方法“寫程序”與不使用該模式相比優(yōu)點:State模式將特定的狀態(tài)相關(guān)的行為封裝在一個類中,由于所有狀態(tài)相關(guān)的代碼都存在于某個concrete state中,所以通過定義新的子類可以很容易的增加新的狀態(tài)和轉(zhuǎn)換。23.有哪些模式的使用可以使得類的復(fù)用性增強?說明你的理由。策略模式(strategy) 屬于對象行為型模式

42、,主要定義一系列的算法,把這些算法一個個封裝成擁有共同接口的單獨的類,并使他們之間互換,客戶端調(diào)用他們的時候互不影響。算法使用和算法分離,即將變化的具體算法封裝起來,降低了代碼的耦合度,算法提取起來,使算法得到重用。中介者模式(mediator) 用一個調(diào)停對象來封裝一系列的對象交互。調(diào)停者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。即,將原來的兩個直接引用或者依賴的對象拆開,在中間加入一個“調(diào)?!睂ο螅沟脙深^的對象分別和“調(diào)停”對象引用或者依賴。提高了原有系統(tǒng)的可讀性,將原有系統(tǒng)的多對多轉(zhuǎn)化為一對多,提高了代碼的可復(fù)用性。適配器(Adapter)模式

43、是的原本由于接口不兼容而不能再一起的那些類可以一起工作。如畫圖程序中,已實現(xiàn)繪制點,直線等功能。為了讓客戶程序在使用的時候不用關(guān)心不同定義,定義個抽象類規(guī)范接口,當(dāng)去實現(xiàn)繪圖時,發(fā)現(xiàn)系統(tǒng)其它地方已有制圖實現(xiàn),但是系統(tǒng)已有的方法與抽象類中規(guī)定方法不一樣,這時候用適配器模式可以解決這問題。適配器模式是為了面向接口編程中更好的復(fù)用。24.比較Adapter和Proxy模式使用上的異同之處。適配器模式(Adapter):將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。代理模式有兩個英文名字:Proxy Pattern 和 Sur

44、rogate Pattern。代理模式:為其他對象提供一種代理以控制對這個對象的訪問。說白了就是,在一些情況下客戶不想或者不能直接引用一個對象,而代理對象可以在客戶和目標(biāo)對象之間起到中介作用,去掉客戶不能看到的內(nèi)容和服務(wù)或者增添客戶需要的額外服務(wù)。兩者的主要區(qū)別在于代理模式應(yīng)用的情況是不改變接口命名的,而且是對已有接口功能的一種控制;而適配器模式則強調(diào)接口轉(zhuǎn)換。 25.說明Observer模式的基本實現(xiàn)方式。如果不用該模式,要達(dá)到同樣的效果,你會如何做?觀察者模式在關(guān)于目標(biāo)角色、觀察者角色通信的具體實現(xiàn)中,有兩個版本。一種情況便是目標(biāo)角色在發(fā)生變化后,僅僅告訴觀察者角色“我變化了”;觀察者角色

45、如果想要知道具體的變化細(xì)節(jié),則就要自己從目標(biāo)角色的接口中得到。這種模式被很形象的稱為:拉模式就是說變化的信息是觀察者角色主動從目標(biāo)角色中“拉”出來的。 還有一種方法,那就是我目標(biāo)角色“服務(wù)一條龍”,通知你發(fā)生變化的同時,通過一個參數(shù)將變化的細(xì)節(jié)傳遞到觀察者角色中去。這就是“推模式”管你要不要,先給你啦。 這兩種模式的使用,取決于系統(tǒng)設(shè)計時的需要。如果目標(biāo)角色比較復(fù)雜,并且觀察者角色進(jìn)行更新時必須得到一些具體變化的信息,則“推模式”比較合適。如果目標(biāo)角色比較簡單,則“拉模式”就很合適。 如果不使用該模式,可采用策略模式,將不同的情況作為子類封裝在一個類中,模擬observer模式中目標(biāo)角色的不同狀態(tài),當(dāng)外部狀態(tài)發(fā)生變化時,可以選擇不同的strategy1、strategy2改變觀察者角色,從而達(dá)到與觀察者模式同樣的效果。26.請列舉一個使用裝飾模式的例子。畫出你的例子的類圖結(jié)構(gòu)。JUnit 中的裝飾模式:在 JUnit 中,TestCase 是一個很重要的類,允許對其進(jìn)行功能

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論