UML考試試題-副本_第1頁
UML考試試題-副本_第2頁
UML考試試題-副本_第3頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、面向對象分析與設計習題一、單項選擇題1. 到20世紀末,面向對象軟件工程已經逐漸開展成熟,特別是D的形成和廣泛使用,采用面向對象分析與編程的軟件開發方法已成為軟件開發的主流方法。A. Simula67 語言 B. Smalltalk 語言C. Java 語言D. 統一建模語言 UML 的標準2. 面向對象的運動產生了多種面向對象的語言,其中C是一種混合性面向對象語言,既支持面向過程的程序設計方法, 又支持面向對象的程序設計方法, 有廣泛應用的根底和豐富 開發環境的支持,因而使面向對象的程序設計能得到很快普及。A. Smalltalk B. EiffelC. C+D. Java3以下不屬于面向對

2、象技術的根本特征的是B。A. 封裝性 B. 模塊性 C. 多態性D. 繼承性4. 面向對象程序設計將描述事物的數據與 C 封裝在一起 ,作為一個相互依存、 不可分割的 整體來處理。A. 信息B. 數據隱藏 C. 對數據的操作 D. 數據抽象5. 關于面向對象方法的優點,以下不正確的表達是 C。A. 與人類習慣的思維方法比擬一致B. 可重用性好C.以數據操作為中心D.可維護性好6. D 是從用戶使用系統的角度描述系統功能的圖形表達方法。A. 類圖B. 對象圖7. C 是表達系統類及其相互聯系的圖示 和其他圖的根底。A.對象圖B.組件圖C. 序列圖D. 用例圖,它是面向對象設計的核心,建立狀態圖、

3、協作圖C. 類圖D. 配置圖8. D描述了一組交互對象間的動態協作關系,它表示完成某項行為的對象和這些對象之 間傳遞消息的時間順序。A .對象圖B.協作圖C. 狀態圖D. 序列圖9. D就是用于表示構成分布式系統的節點集和節點之間的聯系的圖示,它可以表示系統中軟件和硬件的物理架構。A. 組件圖B. 協作圖10. 使用 UML 進行關系數據庫的 并把它們映射成為關系數據庫表A. 業務 Use Case 模型設計C. 物理數據模型設計11. 一個設計得好的 00系統具有BA. 低內聚、低耦合的特征C. 高內聚、高耦合的特征C. 狀態圖D. 配置圖B時,需要設計出表達持久數據的實體類及其聯系,Tab

4、le) 、視圖 (View) 等。B. 邏輯數據模型設計C. 物理實現設計B. 高內聚、低耦合的特征D. 低內聚、高耦合的特征12. 下面不是UML的根本構成元素。A. 控制語言B. 根本構造塊A)C. 規那么D. 公共機制13. 面向對象的特點主要概括為C。A. 可分解性、可組合性、可分類性C.抽象性、繼承性、封裝性、多態性14構成對象的兩個主要因素是A。A.屬性和效勞 B.標識和內容B. 繼承性、封裝性、多態性D.封裝性、易維護性、可擴展性、可重用性C. 繼承和多態D.消息和封裝15.以下關于面向對象方法中描述中錯誤的選項是C。A. 使用設計模式有助于在軟件開發中應用面向對象技術B. 選擇

5、面向對象程序設計語言時需要考慮開發人員對其的熟悉程度C. UML作為一種可視化建模語言需要與RUP開發過程同時使用D. 目前在軟件生命周期的分析、設計、實現和測試中均可以應用面向對象方法16順序圖主要可以為設計人員提供A信息。A.消息發送的順序B.某個方法的執行流程C.類之間關聯關系的多重性D.某個對象在不同狀態之間的轉移17. 類和接口的關系類似于下面哪種類型的關系D。A. 關聯association和聚集aggregationB. 關聯association和組合composition C. 腳本scenario和用例use caseD. 包Package和子系統subsystem18.

6、在類圖中,那個類圖中的類Order所生成的代碼具有Public class OrderPublic Customer recipie nt;的形式? AA.C."Ode-Cuslotrie-thC.sUiriei1Oder |_B.D.19.下面那個圖符表示 UML中的實現關系?0.1nA.C.I>(C)D)20. 一個銀行業務系統采用如圖瑣事的配置圖,那么錯誤的選項是A.與GUI有關的類應該部署在Branch Client上B. 這個圖表示一個三層的體系結構,不管Branch Client、Financial App Server、DatabaseServer是運行在同一臺機

7、器上還是在不同機器上C. 為了系統的可伸縮性scalability,與業務邏輯有關的對象應該部署在Financial AppServer 上D. 為了系統的可伸縮性,與業務邏輯有關的對象應該部署在Branch Client上21. 關于用例與類的比照中D是錯誤的。A都屬于模型結構元素B都存在繼承關系C 類描述系統的局部靜態視圖,用例描述系統動態的行為視圖D類描述的是系統的內部構成,用例也可以描述系統的內部構成22. Innovation 公司正在為 Rose開發插入件,使得 Rose可以把00A 00D莫型以各種圖形格式導出,如JPEG格式、BMP格式、GIF格式等。在導出時,會根據不同的算法

8、來生成相應的圖形文件,這些算法很復雜。為了描述這些算法,在下面這些圖中,那個是最適合的? A注:活動圖可以用來描述細節A.活動圖B.狀態圖C.類圖D.用例圖23. 計算機Computer由中央處理器、內存、軟盤、硬盤、顯示器、鍵盤、鼠標等組成。那么 Computer 類和其他類CPU RAM FloppyDrive、HardDisk、Monitor、Keyboard、Mouse 之間的關系是:DA. 泛化關系GeneralizationB.實現關系RealizationC.包含關系Inclusion D.聚集關系Aggregation24. 在狀態圖中不能表示下面那些概念?DA.動作actio

9、n B.事件event C.轉移transition D.類class25. 在數據庫設計的C階段開始考慮具體的數據庫管理系統DBMS的特性。CA.需求分析B.概念設計C.邏輯設計.D物理設計26.在UML中,有3種根本構造塊,分別是AA.C.事物、關系和圖事物、關系和結構B.D.注釋、關系和圖注釋、關系和結構27.在UM沖,有四種關系,下面哪個不是:B)A.依賴關系B.繼承關系C.泛化關系D.實現關系28. 下面哪個不是 UML中的靜態視圖BA.狀態圖B.用例圖C. 對象圖 D. 類圖29. 在用例之間,會有三種不同的關系,以下哪個不是它們之間可能的關系D A. 包含in elude B.擴

10、展exte ndC. 泛化generalization D.關聯connect30. 用例Use-case用來描述系統在事件做出響應時所采取的行動。用例之間是具有相關性的。在一個“訂單輸入子系統中,創立新訂單和更新訂單都需要檢查用戶帳號是否正確。 那么,用例“創立新訂單、“更新訂單與用例“檢查用戶帳號之間是B關系A. 擴展extend B.包含include C. 分類classification D.聚集aggregation 31. UML中類的有三種,下面哪個不是其中之一BA.實體類 B. 抽象類 C. 控制類 D. 邊界類32閱讀圖例,判斷以下哪個說法是錯誤的。c述書A.B.C.D.讀

11、者可以使用系統的還書用例每次執行還書用例都要執行圖書查詢用例 每次執行還書用例都要執行交納罰金用例 執行還書用例有可能既執行圖書查詢用例,又執行交納罰金用例33 .關于協作圖的描述,以下哪個不正確BA.協作圖作為一種交互圖,強調的是參加交互的對象的組織;B. 協作圖是順序圖的一種特例C. 協作圖中有消息流的順序號;D. 在ROSE工具中,協作圖可在順序圖的根底上按“F5鍵自動生成;34. 設計模式具有的優點a。A .適應需求變化B. 程序易于理解C. 減少開發過程中的代碼開發工作量D.簡化軟件系統的設計35. 設計模式一般用來解決什么樣的問題a。A.同一問題的不同表相B不同問題的同一表相C.不

12、同問題的不同表相D.以上都不是36. 設計模式的兩大主題是 A. 系統的維護與開發C.系統架構與系統開發(d)。B 對象組合與類的繼承D. 系統復用與系統擴展37. 以下哪些問題通過應用設計模式不能夠解決。(C)A)指定對象的接口C)確定軟件的功能都正確實現B )針對接口編程D)設計應支持變化38. 外觀模式的作用是( b)。A 當不能采用生成子類的方法進行擴充時,動態地給一個對象添加一些額外的功能。B 為了系統中的一組功能調用提供一個一致的接口,這個接口使得這一子系統更加容易 使用。C.保證一個類僅有一個實例,并提供一個訪問他的全局訪問點。D 在方法中定義算法的框架,而將算法中的一些操作步驟

13、延遲到子類中實現。39. Fa?ade (外觀)模式的意圖是(a)。A. 希望簡化現有系統的使用方法。你需要定義自己的借口。B .將一個無法控制的現有對象與一個特定借口相匹配。C. 將一組實現局部從另一組使用它們的對象中別離出來。D .你需要為特定的客戶(或情況)提供特定系列的對象。40. Adapter (適配器)模式的意圖是(B )。A. 希望簡化現有系統的使用方法。你需要定義自己的接口。B .將一個無法控制的現有對象與一個特定接口相匹配。C. 將一組實現局部從另一組使用它們的對象中別離出來。D .你需要為特定的客戶(或情況)提供特定系列的對象。41. 下面不屬于創立型模式的有( C)。A

14、 .抽象工廠模式( AbstraCt FaCtory )B .工廠方法模式(Factory Method )C.適配器模式(Adapter)D .單 例 模式 ( Singleton )42. 將一個類的接口轉換成客戶希望的另一個接口。這句話是對以下哪種模式的描述(C)。A. 策略模式( Strategies)B .橋接模式(Bridge)C. 適配器模式(Adapter)D. 單例模式( Singleton)43. 以下關于結構型模式說法不正確的選項是。(B)A)結構型模式可以在不破壞類封裝性的根底上,實現新的功能。B )結構型模式主要用于創立一組對象。C)結構型模式可以創立一組類的統一訪問

15、接口。D結構型模式可以在不破壞類封裝性的根底上, 使得類可以同不曾估計到的系統進行交互。44. 關于繼承表述 錯誤的選項是:D 。A. 繼承是一種通過擴展一個已有對象的實現,從而獲得新功能的復用方法。B. 泛化類超類可以顯式地捕獲那些公共的屬性和方法。特殊類子類那么通過附加 屬性和方法來進行實現的擴展。C. 在一定意義上說破壞了封裝性,因為這會將父類的實現細節暴露給子類。D. 繼承本質上是“白盒復用,對父類的修改,不會影響到子類。45在不破壞類封裝性的根底上, 使得類可以同不曾估計到的系統進行交互。主要表達在D。A外觀模式FacadeB裝飾模式(Decorator)C 策略模式Strategi

16、esD橋接模式BridgeA )。46.行為類模式使用B在類間分派行為。A接口 B繼承機制C對象組合D委托A抽象工廠模式Abstract Factory B觀祭者模式ObserverC 策略模式StrategiesD橋接模式BridgeD。47.下面的類圖表示的是哪個設計模式?A抽象工廠模式B觀察者模式C策略模式D橋接模式51.下面的類圖表示的是哪個設計模式?57. 下面的類圖表示的是哪個設計模式?D 。A 策略模式StrategiesB 裝飾模式DecoratorC橋接模式BridgeD觀察者模式Observer48. Bridge 橋接模式的意圖是C。A.希望簡化現有系統的使用方法。你需要

17、定義自己的借口。B .將一個無法控制的現有對象與一個特定借口相匹配。C.將一組實現局部從另一組使用它們的對象中別離出來。D .你需要為特疋的客戶或情況提供特疋系列的對象。49.靜態工廠的核心角色是A 。A.抽象產品B.具體產品C.靜態工廠D.消費者50.以下屬于創立型模式的是A 。A抽象工廠模式Abstract Factory B 裝飾模式DecoratorC外觀模式FacadeD橋接模式BridgeA.希望簡化現有系統的使用方法。你需要定義自己的借口。B .將一個無法控制的現有對象與一個特定借口相匹配。C.將一組實現局部從另一組使用它們的對象中別離出來。D .提供一個創立一系列相關或相互依賴

18、對象的接口,而無需指定它們具體的類 53.在根據不同的機器選擇設備驅動程序的案例中,以下表達 不準確的是D。A. 可以使用switch語句選擇驅動程序.B. 可以使用繼承來實現選擇驅動程序,但它可能會產生類組合爆炸問題.C. 可以選擇抽象工廠模式實現,且能防止組合爆炸問題.D. 使用繼承的解決方案要比switch語句有更多的優勢.54.應用設計模式的一個優點是 A 。A .適應需求變化B.程序易于理解C.減少開發過程中的代碼開發工作量D.簡化軟件系統的設計55. 當我們想創立一個具體的對象而又不希望指定具體的類時,可以使用A模式。A.創立型 B.結構型 C行為型 D.以上都可以56. 在觀察者

19、模式中,表述 錯誤的選項是C。A. 觀察者角色的更新是被動的。B. 被觀察者可以通知觀察者進行更新C. 觀察者可以改變被觀察者的狀態再由被觀察者通知所有觀察者依據被觀察者的狀態進行。D. 以上表述全部錯誤。58. 當我們想創立一個具體的對象而又不希望指定具體的類時,可以使用A模式。A.創立型B.結構型C行為型D.以上都可以59. 以下模式中,屬于行為模式的是B。A.工廠模式B觀察者C適配器D 以上都是60. Observer模式不適用于D。A當一個抽象模型存在兩個方面,其中一個方面依賴于另一方面,將這二者封裝在獨立的對象中以使它們可以各自獨立的改變和復用。B當對一個對象的改變需要同時改變其他對

20、象,而不知道具體有多少個對象有待改變C當一個對象必須通知其它對象,而它又不能假定其它對象是誰,也就是說你不希望這些對象是緊耦合的。D 一個對象結構包含很多類對象,它們有不同的接口, 而想對這些對象實施一些依賴于其具體類的操作。、判斷題1. 一個狀態圖最多只能由一個初態和一個終態。F2. 協作圖中的消息必須要有消息順序號。T3. 兩個參與者actor 之間可以有包含in elude 關系、擴展exte nd 關系或泛化ge neralizatio n關系,而包含關系和擴展關系是依賴depe ndency關系的版型。F4.參與者actor 和用例use case 之間的關系是關聯associati

21、on關系。T5.類A和類B之間的關系如圖1所示,那么稱類B中的getName方法是對類A中的 getName()方法的重載overload 。 F String6.可以并發進行。T圖2活動圖疚七 (z SlpTEh 寸礎ppi 機閒7. 一個軟件系統,如果只有源代碼,缺乏其他相應的輔助文檔,如缺乏順序圖和類圖,那么(F)可以利用Rose進行逆向工程得到順序圖和類圖,但得到的順序圖和類圖會比擬簡單。8. CMM描述了五個級別的軟件過程成熟度,即初始級、可重復級、已定義、已管理級、優化級。T9. UML由用例視圖、物理視圖、組件視圖、進度視圖和配置視圖組成。F10. 在設計類圖時,可以不用對類圖中

22、的每個關聯進行命名,但如果需要命名的話, 最好用一個“動詞給關聯命名。T11. 適配器模式屬于創立型模式。F12. 在設計模式中,“效果只是指“原因和結果。T13. 設計模式使代碼編制不能真正工程化。F14. 設計模式的兩大主題是系統復用與系統擴展。T15. Fa?ade 外觀模式不僅可以為方法調用創立更簡單的接口,還可以減少客戶必須處理 的對象數量。T16. 外觀模式,當不能采用生成子類的方法進行擴充時,動態地給一個對象添加一些額外的 功能。F17. Fa?ade模式為子系統中的一組接口提供的界面可能不一致。F19. 對象適配器模式是合成聚合復用原那么的典型應用。T20. Adapter模式

23、使原本由于接口不兼容而不能一起工作的那些類可以一起工作。T21. Fa?ade模式和Adapter模式是相同類型的包裝器。F22. Adapter模式不是必須針對某個接口進行設計。F23. 繼承本質上是“白盒復用,對父類的修改,不會影響到子類。F24. 繼承是一種通過擴展一個已有對象的實現,從而獲得新功能的復用方法。25|抽象工廠模式提供了一系列相關或相互依賴對象的接口且必須指定他們具體的類。F26. Abstract Factory 抽象工廠模式確保系統總能根據當前的情況獲得適宜的對象。T27. 在Abstract Factory 抽象工廠模式中,客戶對象不需要知道“向誰請求需要的對象“如何

24、使用這些對象 。F28. Decorator 裝飾模式的意圖是為一個對象連接附加的職責。F29. 每個Decorator對象在被裝飾的功能之前或之后執行自己的附加功能。T30. Decorator 裝飾模式適用性是表示對象的局部-整體層次結構。F三、填空題1. 面向對象開發方法一改正去傳統的以 功能分析為根底的_面向過程_的結構化分析與設計方法,它模擬人們理解和處理客觀世界的方式來分析問題,把系統視為一系列_對象的集合,其_面向對象的設計又將分析的結果映射到某種面向對象實現工具的結構上,使映射過程有著比擬直接的對應關系,使分析者、設計者和編程者都可使用相同的概念_,從而使面向對象的軟件開發能比

25、擬自然地模擬客觀世界的活動,使問題描述空間 與_解空間在結構上盡可能一致。因此,采用面向對象方法可以更有效地開發大型軟件系 統。面向對象方法的封裝_、_繼承_、多態_等機制不僅支持軟件復用,而且使軟件維護 工作可靠有效,可實現軟件系統的柔性制造,更好地克服_軟件危機_。因此,它已成為成熟的廣為采用的軟件開發方法。2. 對象是客觀實體的抽象表示,是由描述對象屬性的數據 _和_對這些數據進行的操作行為兩局部組成。而_類_是對具有相同屬性和行為的一組對象的抽象描述。因此,它可 作為一種用戶自定義類型和創立對象的樣板,而按照這種樣板所創立的一個個具體對象就是類的實例_。通過_繼承關系又可形成一種類層次

26、結構。3. UML中用于描述系統的靜態建模的視圖稱為靜態視圖,包括_用例圖_、類圖、_對象圖_、包圖和構件圖_。4. UML從不同的視角為系統架構建模,可產生九種視圖:用例圖、類圖、對象圖、 配置圖、組件圖、_協作圖、 活動圖、序列圖、狀態圖。5. 序列圖 是用來反映假設干個對象之間動態協作關系的一種交互圖。它主要反映對象之間已發送消息的先后次序和對象之間的交互過程。 協作圖是用來描述實現某些效勞所涉及的對象及其相互之間的關系包括消息通信的動態視圖。建模者可以選擇 協作圖 來反映對象之間的協作關系;如果需要強調時間和序列,最好選 擇 序列圖 ;如果需要強調上下文相關,最好選擇 協作圖 。6.

27、適配器模式,分為類的適配器和對象的適配器兩種實現。其中類的適配器采用的是繼承關系,而對象適配器采用的是組合聚合關系。7. Adapter模式有兩種類型有 :對象Adapter模式、類Adapter模式。8. UML是一種用來創立程序模型的圖像語言。9. Adapter適配器模式使原本接口不兼容而不能一起工作的類可以一起工作。10. 適配器模式,分為類的適配器和對象的適配器兩種實現。其中類的適配器采用的是繼承關系,而對象適配器采用的是組合聚類關系。11. 在存在繼承關系的情況下,方法向超類方向集中,而數據向子類方向集中。12. 在進行設計以應對變化的過程中,應該遵循兩條根本策略:找出變化并封裝變

28、化點; 優先使用對象組合,而不是類繼承。13. 封裝性好的代碼更容易測試,因為它與其他代碼沒有耦合 。14. 抽象工廠模式提供了一系列相關或相互依賴對象的接口而無需指定他們具體的類。15. 工廠模式分為簡單工廠 ,工廠方法 , 工廠方法 三種類型。四. 簡答題1. 簡述面向對象軟件開發方法的優點。面向對象開發方法一改正去傳統的以功能分析和功能分解為根底的面向過程的結構化分析 與設計方法, 面向對象開發方法模擬人們理解和處理客觀世界的方式來分析問題, 把系統視 為一系列對象的集合, 其面向對象的設計又將分析的結果映射到某種面向對象實現工具的結 構上, 使映射過程有著比擬直接的對應關系, 使分析者

29、、 設計者和編程者都可使用相同的概 念,從而使面向對象的軟件開發能比擬自然地模擬客觀世界的活動, 使問題描述空間與解空 間在結構上盡可能一致。 因此, 采用面向對象方法可以更有效地開發大型軟件系統。面向對象方法的封裝、 繼承、多態等機制不僅支持軟件復用,而且使軟件維護工作可靠有效, 可實 現軟件系統的柔性制造, 更好地克服軟件危機。 因此, 它已成為成熟的廣為采用的軟件開發 方法。到 20 世紀末,面向對象軟件工程逐漸開展成熟,特別是統一建模語言 UML 標準的 形成和廣泛使用,使面向對象軟件開發方法已成為軟件開發的主流技術。2. 簡述面向對象技術的三大機制。答: 1封裝性 encapsula

30、tion 所謂封裝就是把對象的屬性和行為結合成一個獨立的單位, 使外界不能直接訪問或修改 這些數據和代碼,外界只能通過對象提供的接口函數來改變或獲取對象的屬性數據,這 就實現了消息隱蔽。2繼承性 如果在一個已定義的類上,增加一些特殊屬性或操作,可以形成一個新的類,這個類不 僅繼承了前一個類的全部特征, 而且具有新的特性, 因此可看作前一個類的特例, 是對前 一個類的繼承。 前一個類稱為父類, 新產生的類叫做子類。 通過繼承關系可形成一種類層 次結構,叫做繼承結構。 3多態性在類層次結構的不同類中,可用相同的函數名實現功能不同的函數。3. 簡述 OOA 模型的層次結構。答:00A模型采用五層次結

31、構,它們分別是:1對象 - 類層劃分待開發系統及其環境信息的根本構造單位, 標出反映問題域的對象和類, 并用符號 進行標準的描述,用信息提供者熟悉的術語為對象和類命名。2屬性層定義對象和某些結構中的數據單元, 繼承結構中所有類的公共屬性可放于通用類中。 標 識對象類必需的屬性并放在適宜的繼承層次上, 屬性的特殊限制和實例連接關系也應標識出 來。3效勞層表示對象的效勞或行為,即是要定義類上的操作。4結構層"整體-局部標識現實世界中對象之間的關系。當一個對象是另一個對象的一局部時,用 "關系表示;當一個類屬于另一個類時,用類之間繼承關系表示。5主題層可將相關類或對象劃分為一個主

32、題。4. 簡述00D模型的總體結構,并畫圖表示。00D體系結構的各個局部內容:1問題論域局部,在00A模型的根底上,細化分析結果,設計一組構成底層應用模型的類和對 象。2人機交互局部:設計用戶界面模型 ,該用戶界面模型中的類和對象提供實現人機交互操作的接口函數。用戶界面設計包括菜單設計、窗口設計、輸入 /輸出界面設計等等。3任務管理局部:建立一些類,用以負責處理操作系統級的并發問題、中斷、調度以及 其它與特定平臺有關的問題。4 數據管理局部:提供數據管理系統中存儲和檢索對象的根本結構,包括對永久性數據 的訪問和管理。數據管理設計包括:數據存放設計:數據存放設計選擇數據存放的方式文件存放、關系數

33、據庫表格存放或面向對象的數據庫存放。設計相應的操作。為每個需要存儲的對象和類增加用于存儲管理的屬性和操作,類和對象的定義中加以描述。class & object layer類及對象層attribute layer類及對象層service layer效勞層struct layer結構層subject layer主題層問題論域局部人 機 交 互 部 分任 務 管 理 部 分數 據 管 理 部 分M«1.5 00D 模型的總體結構類邊界實例連接屬性實例邊界效勞 口主題 口1 : M 一對多關系。5.分析下面的類圖,畫出新的類圖,將原圖中的多對多關系轉換為答案:6信用卡可能處于“開放

34、和“關閉狀態,其中“開放狀態可以直接進入“關閉狀態,而從“關閉狀態必須提供密碼驗證才能進入“開放狀態。“開放狀態又包括“透支和“正常狀態之間的變化,當剩余金額少于零、或者使用額度大于剩余金額、或者結算余額小于零時進入透支狀態,反之那么為正常狀態。畫出信用卡的狀態圖。6分JIM-1廠、JU_J正常®亍插、工1廠rIj7. 請判斷以下類圖中的類關系是否適宜,并說明理由。1飛機有機翼、機身、駕駛艙崔I*3 公司的員工很多,包括程序員、分析員、工程經理可以不是;2 商場里的電器。1臺電器可以 是1臺洗衣機,也可以不是;1臺 電器可以是1臺電視機,也可以不 是;1臺電器可以是1臺空調,也1飛機

35、有機翼、機身、駕駛艙應改為“組合2商場里的電器。1臺電器可以是1臺洗衣機,也可以不是;1臺電器可以是1臺電視機, 也可以不是;1臺電器可以是1臺空調,也可以不是;應該為“泛化3 公司的員工很多,包括程序員、分析員、工程經理應改為“泛化8. 假設你從垃圾堆里撿到這樣一張小紙片如以下圖所示。根據現有信息盡可能判斷:1“小車類有哪幾個操作?2“指揮小車UC類的“執行任務操作要做哪些工作?采用偽代碼描述 Or屮竹HlL丄ib .赫斛:mm曄1師息討也坨尿夠円愕嶗事£>圖時序圖2 :匚舊闞參考答案:1“小車類有哪幾個操作?返回小車當前位置轉向和前進2 “指揮小車UC類的“執行任務操作要做

36、哪些工作?采用偽代碼描述 移動任務:更新行走斷表和目的地移動任務:判斷現有信息足以讓小車行走小車:放回小車當前位置小車:驗證小車尚未到達目的地移動:根據但前位置及斷表信息計算出速度、角度小車:轉向和前進9. 簡述統一建模語言 UML 的優點。10. 簡述面向對象技術的三大機制。11. 簡述面向對象分析的根本步驟。12. 簡述 OOD 模型的總體結構,并畫圖表示。13. 應用 UML 進行系統分析和設計所需建立視圖有那幾種?14. 簡述“開閉原那么的根本思想。請舉出一個使用了軟件“開閉原那么的軟件設計模 式,其中何處表達了“開閉原那么。答:“開閉原那么:軟件實體應當對擴展開放,而對修改關閉,“開

37、 - 閉原那么要求 軟件系統能夠在不需要修改原有類的根底上,通過增加類到達擴展功能的目的。Abstract factory 表達了這個原那么,如果想增加一類新的 products ,只需在 product 類 體系中增加各個 products ,然后在 factory 類體系結構中增加一個 concrete factory 就可以 了,而不需要對現有類做任何修改, The Open-closed principleocp 在不改動過模塊源代碼 的情況下擴展模塊的行為。軟件實體類模塊 函數等應該是可以擴展的,但是不可以修改的。15. 簡述依賴例轉原那么的根本思想。請舉出一個使用了軟件依賴原那么的

38、軟件設計模式, 其中何處表達了依賴原那么。答:依賴倒置原那么的根本思想是: 高層模塊不應該依賴于低層模塊, 二者都應該依賴 于抽象。 抽象不應該依賴于細節, 細節應該不依賴于抽象。 Tomplate method 就表達了這 個原那么,它定義了一個操作中的算法骨架,而將一些步驟延遲到子類中, template method 使得子類不改變一個算法的結構,即可重定義該算法的某些特定步驟。16. 什么是單一職責原那么?請舉出一個使用了單一職責原那么的軟件設計模式,其中何處 表達了單一職責原那么。答:根本思想: SRP 使得一個類或一個模塊承當的責任盡可能的少,使盡可能少的因 素或動機影響該類或該模

39、塊,即增大類或模塊的內聚性,減少其耦合度, SRP 是所有原那么 中最簡單的之一,也是最難正確運用的之一。COMMAND 模式表達了 SRP 原那么,大多數類都是一組方法和相應的一組變量的結合, 而該模式只是封裝了一個沒有任何變量的函數, 它對函數的關注超過了類, 將一個請求封裝 為一個對象,從而可用不同的請求對客戶進行參數化。17. 軟件復用可采用類的繼承方式和類的聚合方式,比擬兩者的優缺點。答:聚合: 一個對象擁有另一個對象或對另一個對象負責即一個對象包含另一個對象或是另一個對象的一局部 并且聚合對象和其所有具有相同的生命周期 即所謂的 “同生共 死關系。聚合復用優點: 容器類僅能通過被包

40、含對象的接口來對其進行訪問。 “黑盒 復用, 因為被包含對象的內部細節對外是不可見。 包裝性好。 實現上的相互依賴性比擬小。 每一個類只專注于一項任務。 通過獲取指定其他的具有相同類型的對象的使用, 可以在運 行期間動態地定義對象的組合。聚合的缺點: 導致系統中的對象過多 為了能將多個不同的對象作為組合塊來使用, 必須仔細地對接口進行定義。類繼承:是一種通過擴展一個已有對象的實現,從而獲得新功能的復用方法。繼承的優點:容易進行新的實現,因為其大多數可繼承而來易于修改或擴展那些被復用的實現。繼承的缺點:破壞了封裝性,因為這會將父類的實現細節暴露給子類“白盒復用,因為父類的內部細節對于子類而言通常

41、是可見的當父類的實現更改時,子類也不得不隨之更改從父類繼承來的實現將不能在運行期間進行改變。18. 畫出工廠方法模式的結構圖。什么情況下適合使用工廠方發模式?mun nc' I'MCTtrMrtwdf)其中product :為工廠模式所要創立的對象類型定義一個接口。Concrete product: 實現 product 接口。Creator :聲明工廠方法(factory method )返回值為 product的一個對象。Concrete creator :覆寫 factory Method(),返回值為 concrete product 的一個具體實 例。在下面情況下你可

42、以考慮使用工廠方法模式:1) 當客戶程序不需要知道要使用對象的創立過程。2) 客戶程序使用的對象存在變動的可能,或者根本就不知道使用哪一個具體的對象。19. 畫出合成模式(Composite )的結構圖。舉例說明一個可以應用合成模式的軟件設 計實例,說明其中各角色的作用。實例:計算機和立體組合音響這樣的設備經常被組裝成一局部整體層次結構或者是容器 層次結構,例如:底盤可以包含驅動裝置和平面板,總線含有多個插件,機柜包括底盤、總 線等。這樣結構很自然的用 composite模式進行模擬。Equipme nt類為在局部整體層次結構中的所有設備定義一個接口。Equipme nt聲明一些操作返回一個設

43、備的屬性,例如它的能是消耗和價格。子類為指定的設備實現了這些操作,Equipment還聲明了一個 Create Iterator操作,該操作為訪問它的零件返回一個 Iterator ,這個操作的缺省實現返回一上Nulllterator,它在空集上迭代。Composite Equipment 是包含其它設備的基類,它也是 Equipment的子類。20. 簡述門面模式Facade 和中介者模式Mediator 的根本思想,兩者的差異何在? 答:門面模式facade 又稱外觀模式。根本思想:為子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使

44、用。"中介者模式根本思想:Mediator Pattern 中文譯為"中介者模式、"調停者模式。 調停者模式的定義是:用一個調停對象來封裝一系列的對象交互。調停者使各對象不需要顯式地相互引用,從而使其耦合松散, 而且可以獨立地改變它們之間的交互。簡單點來說,將原來兩個直接引用或者依賴的對象拆開,在中間參加一個“調停對象,使得兩頭的對象分別和“調停對象引用或者依賴。兩者的差異:從目的上看,調停者模式與門面模式有些相似。但是門面模式是介于客戶程序與子系統之間的,而調停者模式是介于子系統與子系統之間的。這也注定了它們有很大的區別:門面模式是將原有的復雜邏輯提取到一個統一

45、的接口,簡化客戶對邏輯的使用。 它是被客戶所感知的,而原有的復雜邏輯那么被隱藏了起來。而調停者模式的參加并沒有改變客戶原有的使用習慣,它是隱藏在原有邏輯后面的,使得代碼邏輯更加清晰可用。21. 簡述觀察者模式的根本思想,如何實現當目標對象發生變化時多個觀察者對象的同 步更新?畫出他們之間的協作圖。1Observer 觀察者根本思想:對象間的一種一對多的依賴關系。當一個對象的 狀態發生變化時,所有依賴于它的對象都得到通知并自動更新。2 協作:當Concrete Subject發生任何可能導到其參觀者與其本身狀態不一致的改變時,它將通知它的各個觀察者。在得到一個具體的目標改變通知后,Con cre

46、te Object對象可向目標對象查詢信息,Con crete Object使用這個些信息以使它的狀態與目標對象的狀態一致。3 協作圖:3協作團匸.Get State22. 舉一適合使用State模式的例子。與不使用該模式相比,有哪些優點? 舉例:抽象狀態類定義了一個抽象方法“寫程序工柞噂直:double 仃齊龍盛;ir鮭1十斗秤呼in;1fl)yn序(In : OK» J flW 5 l.ft)ir : 1 ft耳用x : 丁料卜+ HIT1 in wEll)與不使用該模式相比優點:State模式將特定的狀態相關的行為封裝在一個類中,由于所有狀態相關的代碼都存在于某 個concre

47、te state中,所以通過定義新的子類可以很容易的增加新的狀態和轉換。23. 有哪些模式的使用可以使得類的復用性增強?說明你的理由。策略模式strategy屬于對象行為型模式,主要定義一系列的算法,把這些算法一個個封裝成擁有共同接口的單獨的類,并使他們之間互換,客戶端調用他們的時候互不影響。算法使用和算法別離,即將變化的具體算法封裝起來,降低了代碼的耦合度,算法提取起來,使算法得到重用。中介者模式mediator用一個調停對象來封裝一系列的對象交互。調停者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。即, 將原來的兩個直接引用或者依賴的對象拆開,在中間參加

48、一個“調停對象,使得兩頭的對象分別和“調停對象引用或者依賴。提高了原有系統的可讀性,將原有系統的多對多轉化 為一對多,提高了代碼的可復用性。適配器Adapter 模式是的原本由于接口不兼容而不能再一起的那些類可以一起工作。如畫圖程序中,已實現繪制點,直線等功能。為了讓客戶程序在使用的時候不用關心 不同定義,定義個抽象類標準接口,當去實現繪圖時,發現系統其它地方已有制圖實現,但是系統已有的方法與抽象類中規定方法不一樣,這時候用適配器模式可以解決這問題。適配器模式是為了面向接口編程中更好的復用。24. 比擬Adapter和Proxy模式使用上的異同之處。適配器模式Adapter:將一個類的接口轉換

49、成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。代理模式有兩個英文名字:Proxy Pattern 和Surrogate Pattern 。代理模式:為其他對象提供一種代理以控制對這個對象的訪問。說白了就是,在一些情況下客戶不想或者不能直接引用一個對象,而代理對象可以在客戶和目標對象之間起到中介作用,去掉客戶不能看到的內容和效勞或者增添客戶需要的額外效勞。兩者的主要區別在于代理模式應用的情況是不改變接口命名的,而且是對已有接口功能的一種控制;而適配器模式那么強調接口轉換。25. 說明Observer模式的根本實現方式。 如果不用該模式,要到

50、達同樣的效果, 你會如 何做?觀察者模式在關于目標角色、觀察者角色通信的具體實現中,有兩個版本。一種情況便是目標角色在發生變化后,僅僅告訴觀察者角色“我變化了;觀察者角色如果想要知道具體的變化細節,那么就要自己從目標角色的接口中得到。這種模式被很形象的稱為:拉模式一一就是說變化的信息是觀察者角色主動從目標角色中“拉出來的。還有一種方法,那就是我目標角色“效勞一條龍,通知你發生變化的同時,通過一個 參數將變化的細節傳遞到觀察者角色中去。這就是“推模式一一管你要不要,先給你啦。這兩種模式的使用, 取決于系統設計時的需要。 如果目標角色比擬復雜, 并且觀察者角 色進行更新時必須得到一些具體變化的信息

51、,那么“推模式比擬適宜。 如果目標角色比擬簡單,那么“拉模式就很適宜。如果不使用該模式,可采用策略模式,將不同的情況作為子類封裝在一個類中,模擬observer模式中目標角色的不同狀態, 當外部狀態發生變化時, 可以選擇不同的strategyl、 strategy2改變觀察者角色,從而到達與觀察者模式同樣的效果。26. 請列舉一個使用裝飾模式的例子。畫出你的例子的類圖結構。JUnit中的裝飾模式:在 JUnit中,TestCase是一個很重要的類,允許對其進行功能 擴展。在 junit.extensions 包中,TestDecorator、RepeatedTest 便是對 TestCase 的裝 飾模式擴展。下面我們將它們和上

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論