




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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.對象圖C.序列圖D.用例圖7 . (C)是表達系統類及其相互聯系的圖示,它是面向對象設計的核心,建立狀態圖、協作圖和其他圖的基礎。A.對象圖 B.組件圖C.類
3、圖D.配置圖8 . (D)描述了一組交互對象間的動態協作關系,它表示完成某項行為的對象和這些對象之 間傳遞消息的時間順序。A.對象圖 B.協作圖C.狀態圖D.序列圖9 . (D)就是用于表示構成分布式系統的節點集和節點之間的聯系的圖示,它可以表示系統 中軟件和硬件的物理架構。A.組件圖B.協作圖C.狀態圖D.配置圖10 .使用UML進行關系數據庫的( 并把它們映射成為關系數據庫表(A.業務Use Case模型設計C.物理數據模型設計B)時,需要設計出表達持久數據的實體類及其聯系, Table)、視圖(View)等。B.邏輯數據模型設計C.物理實現設計11 .一個設計得好的 OO系統具有(B)A
4、.低內聚、低耦合的特征C.高內聚、高耦合的特征B.高內聚、低耦合的特征D.低內聚、高耦合的特征12.下面()不是UMLI勺基本構成元素。(A)A.控制語言B.基本構造塊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.關聯 a association)和聚集(aggregation)B.關聯 a association)和組合(composition )C.腳本(scenario)和用例(use caseD.包(Package)和子系統(subsystem)
6、18 .在類圖中,那個類圖中的類Order所生成的代碼具有Public class OrderPublic Customer recipient;的形式? ( A)C)19.下面那個圖符表示UML中的實現關系?D.0 1A.C.D)20 . 一個銀行業務系統采用如圖瑣事的配置圖,則錯誤的是(B?ShcHB |F嬴同A即 Database 曲1 Server I TCp SefVerA.與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可以把OOA OOD莫型以各種圖形格式導出,如JPEG格式、BMP<式、GIF格式等。在導出時,會根據不同
8、的算法來生成相應的圖形文件,這些算法很復雜。為了描述這些算法,在下面這些圖中,那個是最適合的?(A)(注:活動圖可以用來描述細節)A.活動圖B.狀態圖 C.類圖D.用例圖23 .計算機(Computer)由中央處理器、內存、軟盤、硬盤、顯示器、鍵盤、鼠標等組成。那么 Computer 類和其他類(CPU RAM FloppyDrive 、HardDisk、Monitor、Keyboard > Mouse)之間的關系是:(D)A.泛化關系(Generalization) B.實現關系(Realization )C.包含關系(Inclusion )D.聚集關系(Aggregation )24
9、 .在狀態圖中不能表示下面那些概念? (D)A.動作(action) B.事件(event) C.轉移(transition) D.類(class)25 .在數據庫設計的C 階段開始考慮具體的數據庫管理系統( DBMS的特性。(0A.需求分析 B.概念設計C.邏輯設計.D物理設計26 .在UML中,有3種基本構造塊,分別是(A)A.事物、關系和圖B.注釋、關系和圖C. 事物、關系和結構D.注釋、關系和結構27 .在UML中,有四種關系,下面哪個不是(B)A.依賴關系 B.繼承關系C.泛化關系D.實現關系28 .下面哪個不是 UML中的靜態視圖(B)A.狀態圖B.用例圖C. 對象圖 D. 類圖2
10、9 .在用例之間,會有三種不同的關系,下列哪個不是它們之間可能的關系(D )A. 包含(include )B.擴展(extend )C. 泛化(generalization )D.關聯(connect )30.用例(Use-case)用來描述系統在事件做出響應時所采取的行動。用例之間是具有相關 性的。在一個“訂單輸入子系統”中,創建新訂單和更新訂單都需要檢查用戶帳號是否正確。 那么,用例“創建新訂單”、“更新訂單”與用例“檢查用戶帳號”之間是(B)關系A. 擴展(extend )B.包含(include )C. 分類(classification ) D. 聚集(aggregation )31
11、 . UML中類的有三種,下面哪個不是其中之一( B)A.實體類 B. 抽象類 C. 控制類 D. 邊界類32 .閱讀圖例,判斷下列哪個說法是錯誤的。( c)<<include»讀者、還書、一圖書查詢交納罰金A.讀者可以使用系統的還書用例B.每次執行還書用例都要執行圖書查詢用例C.每次執行還書用例都要執行交納罰金用例D.執行還書用例有可能既執行圖書查詢用例,又執行交納罰金用例33 .關于協作圖的描述,下列哪個不正確(B)A.協作圖作為一種交互圖,強調的是參加交互的對象的組織;B.協作圖是順序圖的一種特例C.協作圖中有消息流的順序號;D.在ROSE:具中,協作圖可在順序圖的
12、基礎上按“F5”鍵自動生成;34 .設計模式具有的優點(a)。A.適應需求變化B.程序易于理解C.減少開發過程中的代碼開發工作量D.簡化軟件系統的設計35 .設計模式一般用來解決什么樣的問題(a)。A.同一問題的不同表相B不同問題的同一表相C.不同問題的不同表相D.以上都不是36 .設計模式的兩大主題是(d)。A.系統的維護與開發B對象組合與類的繼承C.系統架構與系統開發D.系統復用與系統擴展37 .以下哪些問題通過應用設計模式不能夠解決。(c)A)指定對象的接口B)針對接口編程C)確定軟件的功能都正確實現D)設計應支持變化38 .外觀模式的作用是(b)。A.當不能采用生成子類的方法進行擴充時
13、,動態地給一個對象添加一些額外的功能。B.為了系統中的一組功能調用提供一個一致的接口,這個接口使得這一子系統更加容易 使用。C.保證一個類僅有一個實例,并提供一個訪問他的全局訪問點。D.在方法中定義算法的框架,而將算法中的一些操作步驟延遲到子類中實現。39 . Fa?ade (外觀)模式的意圖是(a)。A.希望簡化現有系統的使用方法。你需要定義自己的借口。B.將一個無法控制的現有對象與一個特定借口相匹配。C.將一組實現部分從另一組使用它們的對象中分離出來。D.你需要為特定的客戶(或情況)提供特定系列的對象。40 . Adapter (適配器)模式的意圖是(B)。A.希望簡化現有系統的使用方法。
14、你需要定義自己的接口。B.將一個無法控制的現有對象與一個特定接口相匹配。C.將一組實現部分從另一組使用它們的對象中分離出來。D.你需要為特定的客戶(或情況)提供特定系列的對象。41 .下面不屬于創建型模式的有(C)。A .抽象工廠模式( Abstract Factory )B.工廠方法模式(Factory Method )C.適配器模式(Adapter)D.單例 模式 (Singleton)42.將一個類的接口轉換成客戶希望的另一個接口。這句話是對下列哪種模式的描述(C)。A.策略模式(Strategies)B.橋接模式(Bridge)C.適配器模式(Adapter)D. 單例模式(Singl
15、eton)43 .以下關于結構型模式說法不正確的是。(B)A)結構型模式可以在不破壞類封裝性的基礎上,實現新的功能。B)結構型模式主要用于創建一組對象。C)結構型模式可以創建一組類的統一訪問接口。D)結構型模式可以在不破壞類封裝性的基礎上,使得類可以同不曾估計到的系統進行交互。44 .關于繼承表述 錯誤的是:(D)。A.繼承是一種通過擴展一個已有對象的實現,從而獲得新功能的復用方法。B.泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。特殊類(子類)則通過附加 屬性和方法來進行實現的擴展。C.在一定意義上說破壞了封裝性,因為這會將父類的實現細節暴露給子類。D.繼承本質上是“白盒復用”,對父類的
16、修改,不會影響到子類。45 .在不破壞類封裝性的基礎上,使得類可以同不曾估計到的系統進行交互。主要體現在(D)。A外觀模式(Facade)B裝飾模式(Decorator)C策略模式(Strategies)D橋接模式(Bridge)46 .行為類模式使用(B)在類間分派行為。A接口 B繼承機制C對象組合D委托47 .下面的類圖表示的是哪個設計模式? (D)。A抽象工廠模式(Abstract Factory ) B觀察者模式(Observer)C策略模式(Strategies)D橋接模式(Bridge)51.下面的類圖表示的是哪個設計模式? ( A)。A抽象工廠模式B觀察者模式C策略模式D橋接模式
17、Clinnt局由3 (racfFocfory+CrBHC«PrcsiJLJcLAC)i +CrRateProduclB()-JPrndiictAZVAJtjiStriicfProdu'tf.APraductAIConGratc Facia rw1Concrvlc Fflclory 2+CrBaLttProducrA() +Craa IwPrDductBf)+CrBaLwProducCA() +Crea L*PrDductB()AbsfraetPraefEJcCfiPradtictBlProHiuE 出自57.下面的類圖表示的是哪個設計模式? ( D)。A 策略模式(Strat
18、egies)B 裝飾模式(Decorator)C橋接模式(Bridge) D觀察者模式(Observer)A*Mch(Dt»arwr)口門 0(> -iNctiy q-,'ii -ri。巾 I -i f jh- ,4H)Cone FflteOiKerv&rConcretent-fiiHverSniflHtSkle!; O-*S-rsr.iirixf?和48 . Bridge (橋接)模式的意圖是(C)。A.希望簡化現有系統的使用方法。你需要定義自己的借口。B.將一個無法控制的現有對象與一個特定借口相匹配。C.將一組實現部分從另一組使用它們的對象中分離出來。D.你
19、需要為特定的客戶(或情況)提供特定系列的對象。49 .靜態工廠的核心角色是(A)。A.抽象產品B.具體產品C.靜態工廠D.消費者50 .以下屬于創建型模式的是(A)。B裝飾模式(Decorator)D橋接模式(Bridge)A抽象工廠模式(Abstract Factory)C外觀模式(Facade)52. Abstract Factory (抽象工廠)模式的意圖是(D)。A.希望簡化現有系統的使用方法。你需要定義自己的借口。B.將一個無法控制的現有對象與一個特定借口相匹配。C.將一組實現部分從另一組使用它們的對象中分離出來。D.提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類
20、 53.在根據不同的機器選擇設備驅動程序的案例中,以下敘述 不準確的是(D)。A.可以使用switch語句選擇驅動程序.B.可以使用繼承來實現選擇驅動程序,但它可能會產生類組合爆炸問題.C.可以選擇抽象工廠模式實現,且能避免組合爆炸問題.D.使用繼承的解決方案要比 switch語句有更多的優勢.55 .當我們想創建一個具體的對象而又不希望指定具體的類時,可以使用( A)模式。A.創建型 B.結構型 C行為型 D.以上都可以56 .在觀察者模式中,表述 錯誤的是(C)。A.觀察者角色的更新是被動的。B.被觀察者可以通知觀察者進行更新C.觀察者可以改變被觀察者的狀態再由被觀察者通知所有觀察者依據被
21、觀察者的狀態進行。D.以上表述全部錯誤。58 .當我們想創建一個具體的對象而又不希望指定具體的類時,可以使用( A)模式。A.創建型B.結構型C行為型D.以上都可以59 .下列模式中,屬于行為模式的是(B)。A.工廠模式B觀察者C適配器D 以上都是60 . Observer模式不適用于(D)。A當一個抽象模型存在兩個方面,其中一個方面依賴于另一方面,將這二者封裝在獨立對象中以使它們可以各自獨立的改變和復用。B當對一個對象的改變需要同時改變其他對象,而不知道具體有多少個對象有待改變C當一個對象必須通知其它對象,而它又不能假定其它對象是誰,也就是說你不希望這些 對象是緊耦合的。D 一個對象結構包含
22、很多類對象,它們有不同的接口, 而想對這些對象實施一些依賴于其具體類的操作。二、判斷題1 . 一個狀態圖最多只能由一個初態和一個終態。(F)2 .協作圖中的消息必須要有消息順序號。(T)3 .兩個參與者(actor )之間可以有包含(include )關系、擴展(extend )關系或泛化(generalization )關系,而包含關系和擴展關系是依賴( dependency)關系的版型。(F)4 .參與者(actor )和用例(use case )之間的關系是關聯(association )關系。(T)5.類A和類B之間的關系如圖1所示,則稱類B中的getName()方法是對類 A中的ge
23、tName() 方法的重載(overload )。(F)圖1 getName ()方法之間的關系圖2活動圖6 .如圖2所示,活動 Gesture和Stream audio 可以并發進行。(T)7 . 一個軟件系統,如果只有源代碼,缺乏其他相應的輔助文檔,如缺乏順序圖和類圖,則可以利用Rose進行逆向工程得到順序圖和類圖,但得到的順序圖和類圖會比較簡單。(F)8 . CMM描述了五個級別的軟件過程成熟度,即初始級、可重復級、已定義、已管理級、優化級。(T)9 . UML由用例視圖、物理視圖、組件視圖、進度視圖和配置視圖組成。(F)10 .在設計類圖時,可以不用對類圖中的每個關聯進行命名,但如果需
24、要命名的話,最好用一個“動詞”給關聯命名。(T)11 .適配器模式屬于創建型模式。(F)12 .在設計模式中,“效果”只是指“原因和結果” 。(T)13 .設計模式使代碼編制不能真正工程化。(F)14 .設計模式的兩大主題是系統復用與系統擴展。(T)15 . Fa?ade (外觀)模式不僅可以為方法調用創建更簡單的接口,還可以減少客戶必須處理 的對象數量。(T)16 .外觀模式,當不能采用生成子類的方法進行擴充時,動態地給一個對象添加一些額外的 功能。(F)17 . Fa?ade模式為子系統中的一組接口提供的界面可能不一致。(F)18 . Fa?ade外觀模式只能為方法調用創建更簡單的接口,不
25、能減少客戶必須處理的對象數量。(F)19 .對象適配器模式是合成聚合復用原則的典型應用。(T)20 . Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。(T)21 . Fa?ade模式和Adapter模式是相同類型的包裝器。(F)22 . Adapter模式不是必須針對某個接口進行設計。(F)23 .繼承本質上是“白盒復用”,對父類的修改,不會影響到子類。(F)24 .繼承是一種通過擴展一個已有對象的實現,從而獲得新功能的復用方法。251抽象工廠模式提供了一系列相關或相互依賴對象的接口且必須指定他們具體的類。(F)26. Abstract Factory (抽象工廠)
26、模式確保系統總能根據當前的情況獲得合適的對象。(T)27. 在Abstract Factory (抽象工廠)模式中,客戶對象不需要知道“向誰請求需要的對象”“如何使用這些對象” 。(F)28. Decorator (裝飾)模式的意圖是為一個對象連接附加的職責。(F)29. 每個Decorator對象在被裝飾的功能之前或之后執行自己的附加功能。(T)30. Decorator (裝飾)模式適用性是表示對象的部分-整體層次結構。(F)三、填空題1 .面向對象開發方法一改過去傳統的以(功能分析)為基礎的_(面向過程)_的結構化分析與設計方法,它模擬人們理解和處理客觀世界的方式來分析問題,把系統視為一
27、系列_(對象)_的集合,其_(面向對象的設計又將分析的結果映射到某種面向對象實現工具的 結構上,使映射過程有著比較直接的對應關系,使分析者、設計者和編程者都可使用相同的概念,從而使面向對象的軟件開發能比較自然地模擬客觀世界的活動,使問題描述空間與 解空間在結構上盡可能一致。因此,采用面向對象方法可以更有效地開發大型軟件系統。面向對象方法的封裝、繼承、 多態 等機制不僅支持軟件復用,而且使軟件維護工作可靠有效,可實現軟件系統的柔性制造,更好地克服_軟件危機_。因此,它已成為成熟的廣為采用的軟件開發方法。2 .對象是客觀實體的抽象表示,是由描述對象屬性的數據_和_對這些數據進行的操作行為兩部分組成
28、。而 類是對具有相同屬性和行為的一組對象的抽象描述。因此,它可作為一種用戶自定義類型和創建對象的樣板,而按照這種樣板所創建的一個個具體對象就是類的實例_。通過_繼承關系又可形成一種類層次結構。3 . UML中用于描述系統的靜態建模的視圖稱為靜態視圖,包括_用例圖_、類圖、對象圖、包圖和構件圖。4 . UML從不同的視角為系統架構建模,可產生九種視圖:用例圖_、類圖、_對象圖、配置圖_、組件圖、_協作圖_、活動圖、序列圖、狀態圖 O5 .序列圖 是用來反映若干個對象之間動態協作關系的一種交互圖。它主要反映對象之間已發送消息的先后次序和對象之間的交互過程。 協作圖 是用來描述實現某些服務所涉及的對
29、象及其相互之間的關系(包括消息通信)的動態視圖。建模者可以選擇 協作圖 來反映對象之間的協作關系;如果需要強調時間和序列,最好選 擇 序列圖 ;如果需要強調上下文相關,最好選擇 協作圖 。6 .適配器模式,分為類的適配器和對象的適配器兩種實現。其中類的適配器采用的是繼承關系,而對象適配器采用的是(組合聚合)關系。7 . Adapter模式有兩種類型有 :對象Adapter模式、(類Adapter模式)。8 . UML是一種用來創建(程序模型)的圖像語言。9 .( Adapter適配器)模式使原本接口不兼容而不能一起工作的類可以一起工作。10 .適配器模式,分為類的適配器和對象的適配器兩種實現。
30、其中類的適配器采用的是 (繼承)關系,而對象適配器采用的是組合聚類關系。11 .在存在繼承關系的情況下,方法向超類方向集中,而數據向(子類)方向集中。12 .在進行設計以應對變化的過程中,應該遵循兩條基本策略:找出變化并(封裝變化點); 優先使用對象組合,而不是類繼承。13 .封裝性好的代碼更容易測試,因為它與其他代碼沒有(耦合) 。14 .(抽象工廠)模式提供了一系列相關或相互依賴對象的接口而無需指定他們具體的類。15 .工廠模式分為簡單工廠,工廠方法,(工廠方法)三種類型。四.簡答題1 .簡述面向對象軟件開發方法的優點。面向對象開發方法一改過去傳統的以功能分析和功能分解為基礎的面向過程的結
31、構化分析與設計方法,面向對象開發方法模擬人們理解和處理客觀世界的方式來分析問題,把系統視為一系列對象的集合,其面向對象的設計又將分析的結果映射到某種面向對象實現工具的結 構上,使映射過程有著比較直接的對應關系,使分析者、設計者和編程者都可使用相同的概念,從而使面向對象的軟件開發能比較自然地模擬客觀世界的活動,使問題描述空間與解空間在結構上盡可能一致。因此,采用面向對象方法可以更有效地開發大型軟件系統。面向對象方法的封裝、繼承、多態等機制不僅支持軟件復用,而且使軟件維護工作可靠有效,可實現軟件系統的柔性制造, 更好地克服軟件危機。因此,它已成為成熟的廣為采用的軟件開發方法。到20世紀末,面向對象
32、軟件工程逐漸發展成熟,特別是統一建模語言(UML)標準的形成和廣泛使用,使面向對象軟件開發方法已成為軟件開發的主流技術。 2.簡述面向對象技術的三大機制。答:(1)封裝性(encapsulation)所謂封裝就是把對象的屬性和行為結合成一個獨立的單位,使外界不能直接訪問或修改這些數據和代碼,外界只能通過對象提供的接口函數來改變或獲取對象的屬性數據,這 就實現了消息隱蔽。(2)繼承性如果在一個已定義的類上,增加一些特殊屬性或操作,可以形成一個新的類,這個類不 僅繼承了前一個類的全部特征,而且具有新的特性,因此可看作前一個類的特例,是對前一個類的繼承。前一個類稱為父類, 新產生的類叫做子類。通過繼
33、承關系可形成一種類層次結構,叫做繼承結構。(3)多態性在類層次結構的不同類中,可用相同的函數名實現功能不同的函數。3 .簡述OOA模型的層次結構。答:OOA模型采用五層次結構,它們分別是:(1)對象-類層劃分待開發系統及其環境信息的基本構造單位,標出反映問題域的對象和類,并用符號進行規范的描述,用信息提供者熟悉的術語為對象和類命名。(2)屬性層定義對象和某些結構中的數據單元,繼承結構中所有類的公共屬性可放于通用類中。標識對象類必需的屬性并放在合適的繼承層次上,屬性的特殊限制和實例連接關系也應標識出來。(3)服務層表示對象的服務或行為,即是要定義類上的操作。(4)結構層"整體-部分標識
34、現實世界中對象之間的關系。當一個對象是另一個對象的一部分時,用 ”關系表示;當一個類屬于另一個類時,用類之間繼承關系表示。(5)主題層可將相關類或對象劃分為一個主題。4 .簡述OOD模型的總體結構,并畫圖表示。OOD體系結構的各個部分內容:(1)問題論域部分,在OOA模型的基礎上,細化分析結果,設計一組構成底層應用模型的類和對 象。(2)人機交互部分:設計用戶界面模型,該用戶界面模型中的類和對象提供實現人機交互操作的接口函數。用戶界面設計包括菜單設計、窗口設計、輸入 /輸出界面設計等等。(3)任務管理部分:建立一些類,用以負責處理操作系統級的并發問題、中斷、調度以及 其它與特定平臺有關的問題。
35、(4)數據管理部分:提供數據管理系統中存儲和檢索對象的基本結構,包括對永久性數據 的訪問和管理。數據管理設計包括:數據存放設計:數據存放設計選擇數據存放的方式(文件存放、關系數據庫表格存放或面向對象的數據庫存放)。一設計相應的操作。為每個需要存儲的對象和類增加用于存儲管理的屬性和操作,在類和對象的定義中加以描述。class & object layer(類及對象層)attribute layer(類及對象層)service layer(服務層)問題論域部分人機交互部分任務管理部分數據管理部分. 類邊界.實例邊界實例連接屬性消息struct layer(結構層 )subject laye
36、r(主題層 )圖 1.5 OOD模型的總體結構主題5.分析下面的類圖,畫出新的類圖,將原圖中的多對多關系轉換為1 : M (一對多)關系。顧客 能顧客編號商店 多商店編尋答案:6 .信用卡可能處于“開放”和“關閉”狀態,其中“開放”狀態可以直接進入“關閉”狀態,而從“關閉”狀態必須提供密碼驗證才能進入“開放”狀態。 “開放”狀態又包括“透支”和“正常”狀態之間的變化,當剩余金額少于零、或者使用額度大于剩余金額、或者結算余額小于零時進入透支狀態,反之則為正常狀態。畫出信用卡的狀態圖。(6分).一,y距/內出U Hi化tzTa女冶1正希 一、/席京由gA -: Q2iJ7 .請判斷以下類圖中的類關
37、系是否合適,并說明理由。(1)飛機有機翼、機身、駕駛艙(2)商場里的電器。1臺電器可以是1臺洗衣機,也可以不是;1臺電器可以是1臺電視機,也可以不(3)公司的員工很多,包括程序員、分析員、項目經是;1臺電器可以是1臺空調,也可以不是;(1)飛機有機翼、機身、駕駛艙應改為“組合”(2)商場里的電器。1臺電器可以是1臺洗衣機,也可以不是;1臺電器可以是1臺電視機, 也可以不是;1臺電器可以是1臺空調,也可以不是;應該為“泛化”(3)公司的員工很多,包括程序員、分析員、項目經理應改為“泛化”8.假設你從垃圾堆里撿到這樣一張小紙片(如下圖所示)。根據現有信息盡可能判斷:(1) “小車”類有哪幾個操作?
38、(2) “指揮小車UC類的“執行任務”操作要做哪些工作?(采用偽代碼描述)更需孽蓑中播閭的地oICJbjedL ;目的地 | * 圖時序圖參考答案:(1) “小車”類有哪幾個操作?返回小車當前位置()轉向和前進()(2) “指揮小車UC類的“執行任務”操作要做哪些工作?(采用偽代碼描述)移動任務:更新行走斷表和目的地()移動任務:判斷現有信息足以讓小車行走()小車:放回小車當前位置()小車:驗證小車尚未到達目的地()移動:根據但前位置及斷表信息計算出速度、角度()小車:轉向和前進()9 .簡述統一建模語言 UML的優點。10 .簡述面向對象技術的三大機制。11 .簡述面向對象分析的基本步驟。1
39、2 .簡述OOD模型的總體結構,并畫圖表示。13 .應用UML進行系統分析和設計所需建立視圖有那幾種?14 .簡述“開一閉”原則的基本思想。請舉出一個使用了軟件“開一閉”原則的軟件設計模 式,其中何處體現了 “開一閉”原則。答:“開一閉”原則:軟件實體應當對擴展開放,而對修改關閉,“開 -閉”原則要求 軟件系統能夠在不需要修改原有類的基礎上,通過增加類達到擴展功能的目的。Abstract factory體現了這個原則,如果想增加一類新的products ,只需在 product類體系中增加各個 products ,然后在factory類體系結構中增加一個 concrete factory就可以
40、 了,而不需要對現有類做任何修改,The Open-closed principleocp在不改動過模塊源代碼的情況下擴展模塊的行為。軟件實體(類模塊 函數等)應該是可以擴展的,但是不可以修改的。15 .簡述依賴例轉原則的基本思想。請舉出一個使用了軟件依賴原則的軟件設計模式, 其中何處體現了依賴原則。答:依賴倒置原則的基本思想是: 高層模塊不應該依賴于低層模塊, 二者都應該依賴 于抽象。抽象不應該依賴于細節,細節應該不依賴于抽象。Tomplate method就體現了這 個原則,它定義了一個操作中的算法骨架,而將一些步驟延遲到子類中,template method使得子類不改變一個算法的結構,
41、即可重定義該算法的某些特定步驟。16 .什么是單一職責原則?請舉出一個使用了單一職責原則的軟件設計模式,其中何處 體現了單一職責原則。答:基本思想:SRP使得一個類或一個模塊承擔的責任盡可能的少,使盡可能少的因 素或動機影響該類或該模塊,即增大類或模塊的內聚性,減少其耦合度,SRP是所有原則中最簡單的之一,也是最難正確運用的之一。COMMAND模式體現了 SRP原則,大多數類都是一組方法和相應的一組變量的結合, 而該模式只是封裝了 一個沒有任何變量的函數,它對函數的關注超過了類,將一個請求封裝為一個對象,從而可用不同的請求對客戶進行參數化。17 .軟件復用可采用類的繼承方式和類的聚合方式,比較
42、兩者的優缺點。答:聚合:一個對象擁有另一個對象或對另一個對象負責(即一個對象包含另一個對象或是另一個對象的一部分)并且聚合對象和其所有具有相同的生命周期(即所謂的“同生共死”關系)。聚合復用優點:容器類僅能通過被包含對象的接口來對其進行訪問。“黑盒”復用,因為被包含對象的內部細節對外是不可見。包裝性好。實現上的相互依賴性比較小。 每一個類只專注于一項任務。 通過獲取指定其他的具有相同類型的對象的使用,可以在運行期間動態地定義(對象的)組合。聚合的缺點:導致系統中的對象過多為了能將多個不同的對象作為組合塊來使用,必須仔細地對接口進行定義。類繼承:是一種通過擴展(一個已有對象的)實現,從而獲得新功
43、能的復用方法。繼承的優點:容易進行新的實現,因為其大多數可繼承而來易于修改或擴展那些被復用的實現。繼承的缺點:破壞了封裝性,因為這會將父類的實現細節暴露給子類“白盒”復用,因為父類的內部細節對于子類而言通常是可見的當父類的實現更改時,子類也不得不隨之更改從父類繼承來的實現將不能在運行期間進行改變。18.畫出工廠方法模式的結構圖。什么情況下適合使用工廠方發模式?其中product :為工廠模式所要創建的對象類型定義一個接口。Concrete product: 實現 product 接口。Creator :聲明工廠方法(factory method )返回值為 product的一個對象。Concr
44、ete creator :覆寫 factory Method。,返回值為 concrete product 的一個具體實 例。在下面情況下你可以考慮使用工廠方法模式:1)當客戶程序不需要知道要使用對象的創建過程。2)客戶程序使用的對象存在變動的可能,或者根本就不知道使用哪一個具體的對象。19 .畫出合成模式(Composite )的結構圖。舉例說明一個可以應用合成模式的軟件設 計實例,說明其中各角色的作用。實例:計算機和立體組合音響這樣的設備經常被組裝成一部分整體層次結構或者是容器 層次結構,例如:底盤可以包含驅動裝置和平面板,總線含有多個插件,機柜包括底盤、總 線等。這樣結構很自然的用 co
45、mposite模式進行模擬。Equipment類為在部分整體層次結構中的所有設備定義一個接口。Equipment聲明一些操作返回一個設備的屬性,例如它的能是消耗和價格。子類為指定的設備實現了這些操作,Equipment還聲明了一個Create Iterator操作,該操作為訪問它的零件返回一個Iterator ,這個操作的缺省實現返回一上NullIterator ,它在空集上迭代。Composite Equipment 是包含其它設備的基類,它也是 Equipment的子類。20 .簡述門面模式(Facade )和中介者模式(Mediator )的基本思想,兩者的差異何在? 答:門面模式(fa
46、cade )又稱外觀模式。基本思想:為子系統中的一組接口提供一個一 致的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。“中介者模式”基本思想:Mediator Pattern 中文譯為“中介者模式”、“調停者模式”。 調停者模式的定義是:用一個調停對象來封裝一系列的對象交互。調停者使各對象不需要顯式地相互引用,從而使其耦合松散, 而且可以獨立地改變它們之間的交互。簡單點來說,將原來兩個直接引用或者依賴的對象拆開,在中間加入一個“調停”對象,使得兩頭的對象分別和“調停”對象引用或者依賴。兩者的差異:從目的上看,調停者模式與門面模式有些相似。但是門面模式是介于客戶程
47、序與子系統之間的,而調停者模式是介于子系統與子系統之間的。這也注定了它們有很大的區別:門面模式是將原有的復雜邏輯提取到一個統一的接口,簡化客戶對邏輯的使用。 它是被客戶所感知的,而原有的復雜邏輯則被隱藏了起來。而調停者模式的加入并沒有改變客戶原有的使用習慣,它是隱藏在原有邏輯后面的,使得代碼邏輯更加清晰可用。21 .簡述觀察者模式的基本思想,如何實現當目標對象發生變化時多個觀察者對象的同 步更新?畫出他們之間的協作圖。(1) Observer (觀察者)基本思想:對象間的一種一對多的依賴關系。當一個對象的 狀態發生變化時,所有依賴于它的對象都得到通知并自動更新。(2)協作:當Concrete
48、Subject發生任何可能導到其參觀者與其本身狀態不一致的改變時,它將通知它的各個觀察者。在得到一個具體的目標改變通知后,Concrete Object對象可向目標對象查詢信息,Concrete Object使用這個些信息以使它的狀態與目標對象的狀態一致。(3)協作圖:0)協作圖上22 .舉一適合使用State模式的例子。與不使用該模式相比,有哪些優點? 舉例:抽象狀態類定義了一個抽象方法“寫程序”與不使用該模式相比優點:State模式將特定的狀態相關的行為封裝在一個類中,由于所有狀態相關的代碼都存在于某 個concrete state中,所以通過定義新的子類可以很容易的增加新的狀態和轉換。2
49、3 .有哪些模式的使用可以使得類的復用性增強?說明你的理由。策略模式(strategy )屬于對象行為型模式,主要定義一系列的算法,把這些算法一個個封裝成擁有共同接口的單獨的類,并使他們之間互換,客戶端調用他們的時候互不影響。算法使用和算法分離,即將變化的具體算法封裝起來,降低了代碼的耦合度,算法提取起來,使算法得到重用。中介者模式(mediator )用一個調停對象來封裝一系列的對象交互。調停者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。即, 將原來的兩個直接引用或者依賴的對象拆開,在中間加入一個“調停”對象,使得兩頭的對象分別和“調停”對象引用或者依賴
50、。提高了原有系統的可讀性,將原有系統的多對多轉化 為一對多,提高了代碼的可復用性。適配器(Adapter )模式是的原本由于接口不兼容而不能再一起的那些類可以一起工作。如畫圖程序中,已實現繪制點,直線等功能。為了讓客戶程序在使用的時候不用關心 不同定義,定義個抽象類規范接口,當去實現繪圖時,發現系統其它地方已有制圖實現,但是系統已有的方法與抽象類中規定方法不一樣,這時候用適配器模式可以解決這問題。適配器模式是為了面向接口編程中更好的復用。24 .比較Adapter和Proxy模式使用上的異同之處。適配器模式(Adapter):將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原
51、本由于接口不兼容而不能一起工作的那些類可以一起工作。代理模式有兩個英文名字:Proxy Pattern 和Surrogate Pattern 。代理模式:為其他對象提供一種代理以控制對這個對象的訪問。說白了就是,在一些情況下客戶不想或者不能直接引用一個對象,而代理對象可以在客戶和目標對象之間起到中介作用,去掉客戶不能看到的內容和服務或者增添客戶需要的額外服務。兩者的主要區別在于代理模式應用的情況是不改變接口命名的,而且是對已有接口功能的一種控制;而適配器模式則強調接口轉換。25 .說明Observer模式的基本實現方式。 如果不用該模式,要達到同樣的效果, 你會如 何做?觀察者模式在關于目標角
52、色、觀察者角色通信的具體實現中,有兩個版本。一種情況便是目標角色在發生變化后,僅僅告訴觀察者角色“我變化了";觀察者角色如果想要知道具體的變化細節,則就要自己從目標角色的接口中得到。這種模式被很形象的稱為:拉模式一一就是說變化的信息是觀察者角色主動從目標角色中“拉”出來的。還有一種方法,那就是我目標角色“服務一條龍”,通知你發生變化的同時,通過一個 參數將變化的細節傳遞到觀察者角色中去。這就是“推模式”一一管你要不要,先給你啦。這兩種模式的使用, 取決于系統設計時的需要。 如果目標角色比較復雜, 并且觀察者角 色進行更新時必須得到一些具體變化的信息,則“推模式”比較合適。 如果目標角
53、色比較簡單,則“拉模式”就很合適。如果不使用該模式,可采用策略模式,將不同的情況作為子類封裝在一個類中,模擬observer模式中目標角色的不同狀態, 當外部狀態發生變化時, 可以選擇不同的strategyl、 strategy2改變觀察者角色,從而達到與觀察者模式同樣的效果。26 .請列舉一個使用裝飾模式的例子。畫出你的例子的類圖結構。JUnit中的裝飾模式:在 JUnit中,TestCase是一個很重要的類,允許對其進行功能 擴展。在 junit.extensions 包中,TestDecorator、RepeatedTest 便是對 TestCase 的裝 飾模式擴展。下面我們將它們和上面的角色對號入座。Re peate
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學語文閱讀教學:經典名著解讀與審美能力培養論文
- 小學音樂教育:校園藝術作品展示空間設計對音樂教學效果的提升研究論文
- 艾灸館衛生管理制度
- 苗木生產部管理制度
- 訂單流程自動化技術
- 《春夏秋冬》課件
- 視頻監控施工方案
- 地理(福建)(A3考試版)
- 財務會計學(中級):習題17-2-期末復習題(答案)
- 財務會計實訓心得體會范文10篇
- 2025年北京市海淀區事業單位公開招聘筆試高頻重點提升(共500題)附帶答案詳解
- 主播形體禮儀培訓
- 養豬糞污消納協議書范本
- 開曼群島公司法2024版中文譯本(含2024年修訂主要內容)
- 學術出版中AIGC使用邊界指南2.0
- 《云南省開放口岸》課件
- 【湘藝版必修《音樂鑒賞》第四單元《中國民族民間音樂》單元教學設計】
- 三輪礦產資源規劃匯報
- DB22-T 2786-2017 玄武巖纖維瀝青混合料設計與施工技術規范
- 【MOOC】鐵路行車組織-北京交通大學 中國大學慕課MOOC答案
- 產品圖紙識別培訓
評論
0/150
提交評論