




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、面向?qū)ο蠓治雠c及設計習題及答案、單項選擇題1 .到20世紀末,面向?qū)ο筌浖こ桃呀?jīng)逐漸發(fā)展成熟,特別是(D)的形成和廣泛使用,采用面向?qū)ο蠓治雠c編程的軟件開發(fā)方法已成為軟件開發(fā)的主流方法。A. Simula67 語言B. Smalltalk 語言C. Java語言D.統(tǒng)一建模語言(UML)的標準2 .面向?qū)ο蟮倪\動產(chǎn)生了多種面向?qū)ο蟮恼Z言,其中(C)是一種混合性面向?qū)ο笳Z言,既支持面向過程的程序設計方法,又支持面向?qū)ο蟮某绦蛟O計方法,有廣泛應用的基礎和豐富開發(fā)環(huán)境的支持,因而使面向?qū)ο蟮某绦蛟O計能得到很快普及。A. Smalltalk B. EiffelC. C+D. Java3 .下列不屬于
2、面向?qū)ο蠹夹g的基本特征的是( B)。A.封裝性 B.模塊性 C.多態(tài)性D.繼承性4 .面向?qū)ο蟪绦蛟O計將描述事物的數(shù)據(jù)與(C)封裝在一起,作為一個相互依存、不可分割的整體來處理。A.信息 B.數(shù)據(jù)隱藏 C.對數(shù)據(jù)的操作D.數(shù)據(jù)抽象5 .關于面向?qū)ο蠓椒ǖ膬?yōu)點,下列不正確的敘述是(C)。A.與人類習慣的思維方法比較一致B.可重用性好C.以數(shù)據(jù)操作為中心D.可維護性好6 . (D)是從用戶使用系統(tǒng)的角度描述系統(tǒng)功能的圖形表達方法。A.類圖B.對象圖C.序列圖D.用例圖7 . (C)是表達系統(tǒng)類及其相互聯(lián)系的圖示,它是面向?qū)ο笤O計的核心,建立狀態(tài)圖、協(xié)作圖和其他圖的基礎。A.對象圖 B.組件圖C.類
3、圖D.配置圖8 . (D)描述了一組交互對象間的動態(tài)協(xié)作關系,它表示完成某項行為的對象和這些對象之 間傳遞消息的時間順序。A.對象圖 B.協(xié)作圖C.狀態(tài)圖D.序列圖9 . (D)就是用于表示構(gòu)成分布式系統(tǒng)的節(jié)點集和節(jié)點之間的聯(lián)系的圖示,它可以表示系統(tǒng) 中軟件和硬件的物理架構(gòu)。A.組件圖B.協(xié)作圖C.狀態(tài)圖D.配置圖10 .使用UML進行關系數(shù)據(jù)庫的( 并把它們映射成為關系數(shù)據(jù)庫表(A.業(yè)務Use Case模型設計C.物理數(shù)據(jù)模型設計B)時,需要設計出表達持久數(shù)據(jù)的實體類及其聯(lián)系, Table)、視圖(View)等。B.邏輯數(shù)據(jù)模型設計C.物理實現(xiàn)設計11 .一個設計得好的 OO系統(tǒng)具有(B)A
4、.低內(nèi)聚、低耦合的特征C.高內(nèi)聚、高耦合的特征B.高內(nèi)聚、低耦合的特征D.低內(nèi)聚、高耦合的特征12.下面()不是UMLI勺基本構(gòu)成元素。(A)A.控制語言B.基本構(gòu)造塊C.規(guī)則D.公共機制13 .面向?qū)ο蟮奶攸c主要概括為(C)。A.可分解性、可組合性、可分類性C.抽象性、繼承性、封裝性、多態(tài)性14 .構(gòu)成對象的兩個主要因素是(A)。A.屬性和服務B.標識和內(nèi)容B.繼承性、封裝性、多態(tài)性D.封裝性、易維護性、可擴展性、可重用性C.繼承和多態(tài) D.消息和封裝15 .下列關于面向?qū)ο蠓椒ㄖ忻枋鲋绣e誤的是(C)。A.使用設計模式有助于在軟件開發(fā)中應用面向?qū)ο蠹夹gB.選擇面向?qū)ο蟪绦蛟O計語言時需要考慮開
5、發(fā)人員對其的熟悉程度C. UML作為一種可視化建模語言需要與RUP開發(fā)過程同時使用D.目前在軟件生命周期的分析、設計、實現(xiàn)和測試中均可以應用面向?qū)ο蠓椒?6 .順序圖主要可以為設計人員提供(A)信息。A.消息發(fā)送的順序B.某個方法的執(zhí)行流程C.類之間關聯(lián)關系的多重性D.某個對象在不同狀態(tài)之間的轉(zhuǎn)移17 .類和接口的關系類似于下面哪種類型的關系(D)。A.關聯(lián) a association)和聚集(aggregation)B.關聯(lián) a association)和組合(composition )C.腳本(scenario)和用例(use caseD.包(Package)和子系統(tǒng)(subsystem)
6、18 .在類圖中,那個類圖中的類Order所生成的代碼具有Public class OrderPublic Customer recipient;的形式? ( A)C)19.下面那個圖符表示UML中的實現(xiàn)關系?D.0 1A.C.D)20 . 一個銀行業(yè)務系統(tǒng)采用如圖瑣事的配置圖,則錯誤的是(B?ShcHB |F嬴同A即 Database 曲1 Server I TCp SefVerA.與GUI有關的類應該部署在Branch Client上B.這個圖表示一個三層的體系結(jié)構(gòu),不管Branch Client、Financial App Server、DatabaseServer是運行在同一臺機器上還
7、是在不同機器上C.為了系統(tǒng)的可伸縮性(scalability),與業(yè)務邏輯有關的對象應該部署在Financial AppServer 上D.為了系統(tǒng)的可伸縮性,與業(yè)務邏輯有關的對象應該部署在Branch Client上21 .關于用例與類的對比中(D)是錯誤的。A都屬于模型結(jié)構(gòu)元素B都存在繼承關系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莫型以各種圖形格式導出,如JPEG格式、BMP<式、GIF格式等。在導出時,會根據(jù)不同
8、的算法來生成相應的圖形文件,這些算法很復雜。為了描述這些算法,在下面這些圖中,那個是最適合的?(A)(注:活動圖可以用來描述細節(jié))A.活動圖B.狀態(tài)圖 C.類圖D.用例圖23 .計算機(Computer)由中央處理器、內(nèi)存、軟盤、硬盤、顯示器、鍵盤、鼠標等組成。那么 Computer 類和其他類(CPU RAM FloppyDrive 、HardDisk、Monitor、Keyboard > Mouse)之間的關系是:(D)A.泛化關系(Generalization) B.實現(xiàn)關系(Realization )C.包含關系(Inclusion )D.聚集關系(Aggregation )24
9、 .在狀態(tài)圖中不能表示下面那些概念? (D)A.動作(action) B.事件(event) C.轉(zhuǎn)移(transition) D.類(class)25 .在數(shù)據(jù)庫設計的C 階段開始考慮具體的數(shù)據(jù)庫管理系統(tǒng)( DBMS的特性。(0A.需求分析 B.概念設計C.邏輯設計.D物理設計26 .在UML中,有3種基本構(gòu)造塊,分別是(A)A.事物、關系和圖B.注釋、關系和圖C. 事物、關系和結(jié)構(gòu)D.注釋、關系和結(jié)構(gòu)27 .在UML中,有四種關系,下面哪個不是(B)A.依賴關系 B.繼承關系C.泛化關系D.實現(xiàn)關系28 .下面哪個不是 UML中的靜態(tài)視圖(B)A.狀態(tài)圖B.用例圖C. 對象圖 D. 類圖2
10、9 .在用例之間,會有三種不同的關系,下列哪個不是它們之間可能的關系(D )A. 包含(include )B.擴展(extend )C. 泛化(generalization )D.關聯(lián)(connect )30.用例(Use-case)用來描述系統(tǒng)在事件做出響應時所采取的行動。用例之間是具有相關 性的。在一個“訂單輸入子系統(tǒng)”中,創(chuàng)建新訂單和更新訂單都需要檢查用戶帳號是否正確。 那么,用例“創(chuàng)建新訂單”、“更新訂單”與用例“檢查用戶帳號”之間是(B)關系A. 擴展(extend )B.包含(include )C. 分類(classification ) D. 聚集(aggregation )31
11、 . UML中類的有三種,下面哪個不是其中之一( B)A.實體類 B. 抽象類 C. 控制類 D. 邊界類32 .閱讀圖例,判斷下列哪個說法是錯誤的。( c)<<include»讀者、還書、一圖書查詢交納罰金A.讀者可以使用系統(tǒng)的還書用例B.每次執(zhí)行還書用例都要執(zhí)行圖書查詢用例C.每次執(zhí)行還書用例都要執(zhí)行交納罰金用例D.執(zhí)行還書用例有可能既執(zhí)行圖書查詢用例,又執(zhí)行交納罰金用例33 .關于協(xié)作圖的描述,下列哪個不正確(B)A.協(xié)作圖作為一種交互圖,強調(diào)的是參加交互的對象的組織;B.協(xié)作圖是順序圖的一種特例C.協(xié)作圖中有消息流的順序號;D.在ROSE:具中,協(xié)作圖可在順序圖的
12、基礎上按“F5”鍵自動生成;34 .設計模式具有的優(yōu)點(a)。A.適應需求變化B.程序易于理解C.減少開發(fā)過程中的代碼開發(fā)工作量D.簡化軟件系統(tǒng)的設計35 .設計模式一般用來解決什么樣的問題(a)。A.同一問題的不同表相B不同問題的同一表相C.不同問題的不同表相D.以上都不是36 .設計模式的兩大主題是(d)。A.系統(tǒng)的維護與開發(fā)B對象組合與類的繼承C.系統(tǒng)架構(gòu)與系統(tǒng)開發(fā)D.系統(tǒng)復用與系統(tǒng)擴展37 .以下哪些問題通過應用設計模式不能夠解決。(c)A)指定對象的接口B)針對接口編程C)確定軟件的功能都正確實現(xiàn)D)設計應支持變化38 .外觀模式的作用是(b)。A.當不能采用生成子類的方法進行擴充時
13、,動態(tài)地給一個對象添加一些額外的功能。B.為了系統(tǒng)中的一組功能調(diào)用提供一個一致的接口,這個接口使得這一子系統(tǒng)更加容易 使用。C.保證一個類僅有一個實例,并提供一個訪問他的全局訪問點。D.在方法中定義算法的框架,而將算法中的一些操作步驟延遲到子類中實現(xiàn)。39 . Fa?ade (外觀)模式的意圖是(a)。A.希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B.將一個無法控制的現(xiàn)有對象與一個特定借口相匹配。C.將一組實現(xiàn)部分從另一組使用它們的對象中分離出來。D.你需要為特定的客戶(或情況)提供特定系列的對象。40 . Adapter (適配器)模式的意圖是(B)。A.希望簡化現(xiàn)有系統(tǒng)的使用方法。
14、你需要定義自己的接口。B.將一個無法控制的現(xiàn)有對象與一個特定接口相匹配。C.將一組實現(xiàn)部分從另一組使用它們的對象中分離出來。D.你需要為特定的客戶(或情況)提供特定系列的對象。41 .下面不屬于創(chuàng)建型模式的有(C)。A .抽象工廠模式( Abstract Factory )B.工廠方法模式(Factory Method )C.適配器模式(Adapter)D.單例 模式 (Singleton)42.將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口。這句話是對下列哪種模式的描述(C)。A.策略模式(Strategies)B.橋接模式(Bridge)C.適配器模式(Adapter)D. 單例模式(Singl
15、eton)43 .以下關于結(jié)構(gòu)型模式說法不正確的是。(B)A)結(jié)構(gòu)型模式可以在不破壞類封裝性的基礎上,實現(xiàn)新的功能。B)結(jié)構(gòu)型模式主要用于創(chuàng)建一組對象。C)結(jié)構(gòu)型模式可以創(chuàng)建一組類的統(tǒng)一訪問接口。D)結(jié)構(gòu)型模式可以在不破壞類封裝性的基礎上,使得類可以同不曾估計到的系統(tǒng)進行交互。44 .關于繼承表述 錯誤的是:(D)。A.繼承是一種通過擴展一個已有對象的實現(xiàn),從而獲得新功能的復用方法。B.泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。特殊類(子類)則通過附加 屬性和方法來進行實現(xiàn)的擴展。C.在一定意義上說破壞了封裝性,因為這會將父類的實現(xiàn)細節(jié)暴露給子類。D.繼承本質(zhì)上是“白盒復用”,對父類的
16、修改,不會影響到子類。45 .在不破壞類封裝性的基礎上,使得類可以同不曾估計到的系統(tǒng)進行交互。主要體現(xiàn)在(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.希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B.將一個無法控制的現(xiàn)有對象與一個特定借口相匹配。C.將一組實現(xiàn)部分從另一組使用它們的對象中分離出來。D.你
19、需要為特定的客戶(或情況)提供特定系列的對象。49 .靜態(tài)工廠的核心角色是(A)。A.抽象產(chǎn)品B.具體產(chǎn)品C.靜態(tài)工廠D.消費者50 .以下屬于創(chuàng)建型模式的是(A)。B裝飾模式(Decorator)D橋接模式(Bridge)A抽象工廠模式(Abstract Factory)C外觀模式(Facade)52. Abstract Factory (抽象工廠)模式的意圖是(D)。A.希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B.將一個無法控制的現(xiàn)有對象與一個特定借口相匹配。C.將一組實現(xiàn)部分從另一組使用它們的對象中分離出來。D.提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而無需指定它們具體的類
20、 53.在根據(jù)不同的機器選擇設備驅(qū)動程序的案例中,以下敘述 不準確的是(D)。A.可以使用switch語句選擇驅(qū)動程序.B.可以使用繼承來實現(xiàn)選擇驅(qū)動程序,但它可能會產(chǎn)生類組合爆炸問題.C.可以選擇抽象工廠模式實現(xiàn),且能避免組合爆炸問題.D.使用繼承的解決方案要比 switch語句有更多的優(yōu)勢.55 .當我們想創(chuàng)建一個具體的對象而又不希望指定具體的類時,可以使用( A)模式。A.創(chuàng)建型 B.結(jié)構(gòu)型 C行為型 D.以上都可以56 .在觀察者模式中,表述 錯誤的是(C)。A.觀察者角色的更新是被動的。B.被觀察者可以通知觀察者進行更新C.觀察者可以改變被觀察者的狀態(tài)再由被觀察者通知所有觀察者依據(jù)被
21、觀察者的狀態(tài)進行。D.以上表述全部錯誤。58 .當我們想創(chuàng)建一個具體的對象而又不希望指定具體的類時,可以使用( A)模式。A.創(chuàng)建型B.結(jié)構(gòu)型C行為型D.以上都可以59 .下列模式中,屬于行為模式的是(B)。A.工廠模式B觀察者C適配器D 以上都是60 . Observer模式不適用于(D)。A當一個抽象模型存在兩個方面,其中一個方面依賴于另一方面,將這二者封裝在獨立對象中以使它們可以各自獨立的改變和復用。B當對一個對象的改變需要同時改變其他對象,而不知道具體有多少個對象有待改變C當一個對象必須通知其它對象,而它又不能假定其它對象是誰,也就是說你不希望這些 對象是緊耦合的。D 一個對象結(jié)構(gòu)包含
22、很多類對象,它們有不同的接口, 而想對這些對象實施一些依賴于其具體類的操作。二、判斷題1 . 一個狀態(tài)圖最多只能由一個初態(tài)和一個終態(tài)。(F)2 .協(xié)作圖中的消息必須要有消息順序號。(T)3 .兩個參與者(actor )之間可以有包含(include )關系、擴展(extend )關系或泛化(generalization )關系,而包含關系和擴展關系是依賴( dependency)關系的版型。(F)4 .參與者(actor )和用例(use case )之間的關系是關聯(lián)(association )關系。(T)5.類A和類B之間的關系如圖1所示,則稱類B中的getName()方法是對類 A中的ge
23、tName() 方法的重載(overload )。(F)圖1 getName ()方法之間的關系圖2活動圖6 .如圖2所示,活動 Gesture和Stream audio 可以并發(fā)進行。(T)7 . 一個軟件系統(tǒng),如果只有源代碼,缺乏其他相應的輔助文檔,如缺乏順序圖和類圖,則可以利用Rose進行逆向工程得到順序圖和類圖,但得到的順序圖和類圖會比較簡單。(F)8 . CMM描述了五個級別的軟件過程成熟度,即初始級、可重復級、已定義、已管理級、優(yōu)化級。(T)9 . UML由用例視圖、物理視圖、組件視圖、進度視圖和配置視圖組成。(F)10 .在設計類圖時,可以不用對類圖中的每個關聯(lián)進行命名,但如果需
24、要命名的話,最好用一個“動詞”給關聯(lián)命名。(T)11 .適配器模式屬于創(chuàng)建型模式。(F)12 .在設計模式中,“效果”只是指“原因和結(jié)果” 。(T)13 .設計模式使代碼編制不能真正工程化。(F)14 .設計模式的兩大主題是系統(tǒng)復用與系統(tǒng)擴展。(T)15 . Fa?ade (外觀)模式不僅可以為方法調(diào)用創(chuàng)建更簡單的接口,還可以減少客戶必須處理 的對象數(shù)量。(T)16 .外觀模式,當不能采用生成子類的方法進行擴充時,動態(tài)地給一個對象添加一些額外的 功能。(F)17 . Fa?ade模式為子系統(tǒng)中的一組接口提供的界面可能不一致。(F)18 . Fa?ade外觀模式只能為方法調(diào)用創(chuàng)建更簡單的接口,不
25、能減少客戶必須處理的對象數(shù)量。(F)19 .對象適配器模式是合成聚合復用原則的典型應用。(T)20 . Adapter模式使原本由于接口不兼容而不能一起工作的那些類可以一起工作。(T)21 . Fa?ade模式和Adapter模式是相同類型的包裝器。(F)22 . Adapter模式不是必須針對某個接口進行設計。(F)23 .繼承本質(zhì)上是“白盒復用”,對父類的修改,不會影響到子類。(F)24 .繼承是一種通過擴展一個已有對象的實現(xiàn),從而獲得新功能的復用方法。251抽象工廠模式提供了一系列相關或相互依賴對象的接口且必須指定他們具體的類。(F)26. Abstract Factory (抽象工廠)
26、模式確保系統(tǒng)總能根據(jù)當前的情況獲得合適的對象。(T)27. 在Abstract Factory (抽象工廠)模式中,客戶對象不需要知道“向誰請求需要的對象”“如何使用這些對象” 。(F)28. Decorator (裝飾)模式的意圖是為一個對象連接附加的職責。(F)29. 每個Decorator對象在被裝飾的功能之前或之后執(zhí)行自己的附加功能。(T)30. Decorator (裝飾)模式適用性是表示對象的部分-整體層次結(jié)構(gòu)。(F)三、填空題1 .面向?qū)ο箝_發(fā)方法一改過去傳統(tǒng)的以(功能分析)為基礎的_(面向過程)_的結(jié)構(gòu)化分析與設計方法,它模擬人們理解和處理客觀世界的方式來分析問題,把系統(tǒng)視為一
27、系列_(對象)_的集合,其_(面向?qū)ο蟮脑O計又將分析的結(jié)果映射到某種面向?qū)ο髮崿F(xiàn)工具的 結(jié)構(gòu)上,使映射過程有著比較直接的對應關系,使分析者、設計者和編程者都可使用相同的概念,從而使面向?qū)ο蟮能浖_發(fā)能比較自然地模擬客觀世界的活動,使問題描述空間與 解空間在結(jié)構(gòu)上盡可能一致。因此,采用面向?qū)ο蠓椒梢愿行У亻_發(fā)大型軟件系統(tǒng)。面向?qū)ο蠓椒ǖ姆庋b、繼承、 多態(tài) 等機制不僅支持軟件復用,而且使軟件維護工作可靠有效,可實現(xiàn)軟件系統(tǒng)的柔性制造,更好地克服_軟件危機_。因此,它已成為成熟的廣為采用的軟件開發(fā)方法。2 .對象是客觀實體的抽象表示,是由描述對象屬性的數(shù)據(jù)_和_對這些數(shù)據(jù)進行的操作行為兩部分組成
28、。而 類是對具有相同屬性和行為的一組對象的抽象描述。因此,它可作為一種用戶自定義類型和創(chuàng)建對象的樣板,而按照這種樣板所創(chuàng)建的一個個具體對象就是類的實例_。通過_繼承關系又可形成一種類層次結(jié)構(gòu)。3 . UML中用于描述系統(tǒng)的靜態(tài)建模的視圖稱為靜態(tài)視圖,包括_用例圖_、類圖、對象圖、包圖和構(gòu)件圖。4 . UML從不同的視角為系統(tǒng)架構(gòu)建模,可產(chǎn)生九種視圖:用例圖_、類圖、_對象圖、配置圖_、組件圖、_協(xié)作圖_、活動圖、序列圖、狀態(tài)圖 O5 .序列圖 是用來反映若干個對象之間動態(tài)協(xié)作關系的一種交互圖。它主要反映對象之間已發(fā)送消息的先后次序和對象之間的交互過程。 協(xié)作圖 是用來描述實現(xiàn)某些服務所涉及的對
29、象及其相互之間的關系(包括消息通信)的動態(tài)視圖。建模者可以選擇 協(xié)作圖 來反映對象之間的協(xié)作關系;如果需要強調(diào)時間和序列,最好選 擇 序列圖 ;如果需要強調(diào)上下文相關,最好選擇 協(xié)作圖 。6 .適配器模式,分為類的適配器和對象的適配器兩種實現(xiàn)。其中類的適配器采用的是繼承關系,而對象適配器采用的是(組合聚合)關系。7 . Adapter模式有兩種類型有 :對象Adapter模式、(類Adapter模式)。8 . UML是一種用來創(chuàng)建(程序模型)的圖像語言。9 .( Adapter適配器)模式使原本接口不兼容而不能一起工作的類可以一起工作。10 .適配器模式,分為類的適配器和對象的適配器兩種實現(xiàn)。
30、其中類的適配器采用的是 (繼承)關系,而對象適配器采用的是組合聚類關系。11 .在存在繼承關系的情況下,方法向超類方向集中,而數(shù)據(jù)向(子類)方向集中。12 .在進行設計以應對變化的過程中,應該遵循兩條基本策略:找出變化并(封裝變化點); 優(yōu)先使用對象組合,而不是類繼承。13 .封裝性好的代碼更容易測試,因為它與其他代碼沒有(耦合) 。14 .(抽象工廠)模式提供了一系列相關或相互依賴對象的接口而無需指定他們具體的類。15 .工廠模式分為簡單工廠,工廠方法,(工廠方法)三種類型。四.簡答題1 .簡述面向?qū)ο筌浖_發(fā)方法的優(yōu)點。面向?qū)ο箝_發(fā)方法一改過去傳統(tǒng)的以功能分析和功能分解為基礎的面向過程的結(jié)
31、構(gòu)化分析與設計方法,面向?qū)ο箝_發(fā)方法模擬人們理解和處理客觀世界的方式來分析問題,把系統(tǒng)視為一系列對象的集合,其面向?qū)ο蟮脑O計又將分析的結(jié)果映射到某種面向?qū)ο髮崿F(xiàn)工具的結(jié) 構(gòu)上,使映射過程有著比較直接的對應關系,使分析者、設計者和編程者都可使用相同的概念,從而使面向?qū)ο蟮能浖_發(fā)能比較自然地模擬客觀世界的活動,使問題描述空間與解空間在結(jié)構(gòu)上盡可能一致。因此,采用面向?qū)ο蠓椒梢愿行У亻_發(fā)大型軟件系統(tǒng)。面向?qū)ο蠓椒ǖ姆庋b、繼承、多態(tài)等機制不僅支持軟件復用,而且使軟件維護工作可靠有效,可實現(xiàn)軟件系統(tǒng)的柔性制造, 更好地克服軟件危機。因此,它已成為成熟的廣為采用的軟件開發(fā)方法。到20世紀末,面向?qū)ο?/p>
32、軟件工程逐漸發(fā)展成熟,特別是統(tǒng)一建模語言(UML)標準的形成和廣泛使用,使面向?qū)ο筌浖_發(fā)方法已成為軟件開發(fā)的主流技術。 2.簡述面向?qū)ο蠹夹g的三大機制。答:(1)封裝性(encapsulation)所謂封裝就是把對象的屬性和行為結(jié)合成一個獨立的單位,使外界不能直接訪問或修改這些數(shù)據(jù)和代碼,外界只能通過對象提供的接口函數(shù)來改變或獲取對象的屬性數(shù)據(jù),這 就實現(xiàn)了消息隱蔽。(2)繼承性如果在一個已定義的類上,增加一些特殊屬性或操作,可以形成一個新的類,這個類不 僅繼承了前一個類的全部特征,而且具有新的特性,因此可看作前一個類的特例,是對前一個類的繼承。前一個類稱為父類, 新產(chǎn)生的類叫做子類。通過繼
33、承關系可形成一種類層次結(jié)構(gòu),叫做繼承結(jié)構(gòu)。(3)多態(tài)性在類層次結(jié)構(gòu)的不同類中,可用相同的函數(shù)名實現(xiàn)功能不同的函數(shù)。3 .簡述OOA模型的層次結(jié)構(gòu)。答:OOA模型采用五層次結(jié)構(gòu),它們分別是:(1)對象-類層劃分待開發(fā)系統(tǒng)及其環(huán)境信息的基本構(gòu)造單位,標出反映問題域的對象和類,并用符號進行規(guī)范的描述,用信息提供者熟悉的術語為對象和類命名。(2)屬性層定義對象和某些結(jié)構(gòu)中的數(shù)據(jù)單元,繼承結(jié)構(gòu)中所有類的公共屬性可放于通用類中。標識對象類必需的屬性并放在合適的繼承層次上,屬性的特殊限制和實例連接關系也應標識出來。(3)服務層表示對象的服務或行為,即是要定義類上的操作。(4)結(jié)構(gòu)層"整體-部分標識
34、現(xiàn)實世界中對象之間的關系。當一個對象是另一個對象的一部分時,用 ”關系表示;當一個類屬于另一個類時,用類之間繼承關系表示。(5)主題層可將相關類或?qū)ο髣澐譃橐粋€主題。4 .簡述OOD模型的總體結(jié)構(gòu),并畫圖表示。OOD體系結(jié)構(gòu)的各個部分內(nèi)容:(1)問題論域部分,在OOA模型的基礎上,細化分析結(jié)果,設計一組構(gòu)成底層應用模型的類和對 象。(2)人機交互部分:設計用戶界面模型,該用戶界面模型中的類和對象提供實現(xiàn)人機交互操作的接口函數(shù)。用戶界面設計包括菜單設計、窗口設計、輸入 /輸出界面設計等等。(3)任務管理部分:建立一些類,用以負責處理操作系統(tǒng)級的并發(fā)問題、中斷、調(diào)度以及 其它與特定平臺有關的問題。
35、(4)數(shù)據(jù)管理部分:提供數(shù)據(jù)管理系統(tǒng)中存儲和檢索對象的基本結(jié)構(gòu),包括對永久性數(shù)據(jù) 的訪問和管理。數(shù)據(jù)管理設計包括:數(shù)據(jù)存放設計:數(shù)據(jù)存放設計選擇數(shù)據(jù)存放的方式(文件存放、關系數(shù)據(jù)庫表格存放或面向?qū)ο蟮臄?shù)據(jù)庫存放)。一設計相應的操作。為每個需要存儲的對象和類增加用于存儲管理的屬性和操作,在類和對象的定義中加以描述。class & object layer(類及對象層)attribute layer(類及對象層)service layer(服務層)問題論域部分人機交互部分任務管理部分數(shù)據(jù)管理部分. 類邊界.實例邊界實例連接屬性消息struct layer(結(jié)構(gòu)層 )subject laye
36、r(主題層 )圖 1.5 OOD模型的總體結(jié)構(gòu)主題5.分析下面的類圖,畫出新的類圖,將原圖中的多對多關系轉(zhuǎn)換為1 : M (一對多)關系。顧客 能顧客編號商店 多商店編尋答案:6 .信用卡可能處于“開放”和“關閉”狀態(tài),其中“開放”狀態(tài)可以直接進入“關閉”狀態(tài),而從“關閉”狀態(tài)必須提供密碼驗證才能進入“開放”狀態(tài)。 “開放”狀態(tài)又包括“透支”和“正?!睜顟B(tài)之間的變化,當剩余金額少于零、或者使用額度大于剩余金額、或者結(jié)算余額小于零時進入透支狀態(tài),反之則為正常狀態(tài)。畫出信用卡的狀態(tài)圖。(6分).一,y距/內(nèi)出U Hi化tzTa女冶1正希 一、/席京由gA -: Q2iJ7 .請判斷以下類圖中的類關
37、系是否合適,并說明理由。(1)飛機有機翼、機身、駕駛艙(2)商場里的電器。1臺電器可以是1臺洗衣機,也可以不是;1臺電器可以是1臺電視機,也可以不(3)公司的員工很多,包括程序員、分析員、項目經(jīng)是;1臺電器可以是1臺空調(diào),也可以不是;(1)飛機有機翼、機身、駕駛艙應改為“組合”(2)商場里的電器。1臺電器可以是1臺洗衣機,也可以不是;1臺電器可以是1臺電視機, 也可以不是;1臺電器可以是1臺空調(diào),也可以不是;應該為“泛化”(3)公司的員工很多,包括程序員、分析員、項目經(jīng)理應改為“泛化”8.假設你從垃圾堆里撿到這樣一張小紙片(如下圖所示)。根據(jù)現(xiàn)有信息盡可能判斷:(1) “小車”類有哪幾個操作?
38、(2) “指揮小車UC類的“執(zhí)行任務”操作要做哪些工作?(采用偽代碼描述)更需孽蓑中播閭的地oICJbjedL ;目的地 | * 圖時序圖參考答案:(1) “小車”類有哪幾個操作?返回小車當前位置()轉(zhuǎn)向和前進()(2) “指揮小車UC類的“執(zhí)行任務”操作要做哪些工作?(采用偽代碼描述)移動任務:更新行走斷表和目的地()移動任務:判斷現(xiàn)有信息足以讓小車行走()小車:放回小車當前位置()小車:驗證小車尚未到達目的地()移動:根據(jù)但前位置及斷表信息計算出速度、角度()小車:轉(zhuǎn)向和前進()9 .簡述統(tǒng)一建模語言 UML的優(yōu)點。10 .簡述面向?qū)ο蠹夹g的三大機制。11 .簡述面向?qū)ο蠓治龅幕静襟E。1
39、2 .簡述OOD模型的總體結(jié)構(gòu),并畫圖表示。13 .應用UML進行系統(tǒng)分析和設計所需建立視圖有那幾種?14 .簡述“開一閉”原則的基本思想。請舉出一個使用了軟件“開一閉”原則的軟件設計模 式,其中何處體現(xiàn)了 “開一閉”原則。答:“開一閉”原則:軟件實體應當對擴展開放,而對修改關閉,“開 -閉”原則要求 軟件系統(tǒng)能夠在不需要修改原有類的基礎上,通過增加類達到擴展功能的目的。Abstract factory體現(xiàn)了這個原則,如果想增加一類新的products ,只需在 product類體系中增加各個 products ,然后在factory類體系結(jié)構(gòu)中增加一個 concrete factory就可以
40、 了,而不需要對現(xiàn)有類做任何修改,The Open-closed principleocp在不改動過模塊源代碼的情況下擴展模塊的行為。軟件實體(類模塊 函數(shù)等)應該是可以擴展的,但是不可以修改的。15 .簡述依賴例轉(zhuǎn)原則的基本思想。請舉出一個使用了軟件依賴原則的軟件設計模式, 其中何處體現(xiàn)了依賴原則。答:依賴倒置原則的基本思想是: 高層模塊不應該依賴于低層模塊, 二者都應該依賴 于抽象。抽象不應該依賴于細節(jié),細節(jié)應該不依賴于抽象。Tomplate method就體現(xiàn)了這 個原則,它定義了一個操作中的算法骨架,而將一些步驟延遲到子類中,template method使得子類不改變一個算法的結(jié)構(gòu),
41、即可重定義該算法的某些特定步驟。16 .什么是單一職責原則?請舉出一個使用了單一職責原則的軟件設計模式,其中何處 體現(xiàn)了單一職責原則。答:基本思想:SRP使得一個類或一個模塊承擔的責任盡可能的少,使盡可能少的因 素或動機影響該類或該模塊,即增大類或模塊的內(nèi)聚性,減少其耦合度,SRP是所有原則中最簡單的之一,也是最難正確運用的之一。COMMAND模式體現(xiàn)了 SRP原則,大多數(shù)類都是一組方法和相應的一組變量的結(jié)合, 而該模式只是封裝了 一個沒有任何變量的函數(shù),它對函數(shù)的關注超過了類,將一個請求封裝為一個對象,從而可用不同的請求對客戶進行參數(shù)化。17 .軟件復用可采用類的繼承方式和類的聚合方式,比較
42、兩者的優(yōu)缺點。答:聚合:一個對象擁有另一個對象或?qū)α硪粋€對象負責(即一個對象包含另一個對象或是另一個對象的一部分)并且聚合對象和其所有具有相同的生命周期(即所謂的“同生共死”關系)。聚合復用優(yōu)點:容器類僅能通過被包含對象的接口來對其進行訪問。“黑盒”復用,因為被包含對象的內(nèi)部細節(jié)對外是不可見。包裝性好。實現(xiàn)上的相互依賴性比較小。 每一個類只專注于一項任務。 通過獲取指定其他的具有相同類型的對象的使用,可以在運行期間動態(tài)地定義(對象的)組合。聚合的缺點:導致系統(tǒng)中的對象過多為了能將多個不同的對象作為組合塊來使用,必須仔細地對接口進行定義。類繼承:是一種通過擴展(一個已有對象的)實現(xiàn),從而獲得新功
43、能的復用方法。繼承的優(yōu)點:容易進行新的實現(xiàn),因為其大多數(shù)可繼承而來易于修改或擴展那些被復用的實現(xiàn)。繼承的缺點:破壞了封裝性,因為這會將父類的實現(xiàn)細節(jié)暴露給子類“白盒”復用,因為父類的內(nèi)部細節(jié)對于子類而言通常是可見的當父類的實現(xiàn)更改時,子類也不得不隨之更改從父類繼承來的實現(xiàn)將不能在運行期間進行改變。18.畫出工廠方法模式的結(jié)構(gòu)圖。什么情況下適合使用工廠方發(fā)模式?其中product :為工廠模式所要創(chuàng)建的對象類型定義一個接口。Concrete product: 實現(xiàn) product 接口。Creator :聲明工廠方法(factory method )返回值為 product的一個對象。Concr
44、ete creator :覆寫 factory Method。,返回值為 concrete product 的一個具體實 例。在下面情況下你可以考慮使用工廠方法模式:1)當客戶程序不需要知道要使用對象的創(chuàng)建過程。2)客戶程序使用的對象存在變動的可能,或者根本就不知道使用哪一個具體的對象。19 .畫出合成模式(Composite )的結(jié)構(gòu)圖。舉例說明一個可以應用合成模式的軟件設 計實例,說明其中各角色的作用。實例:計算機和立體組合音響這樣的設備經(jīng)常被組裝成一部分整體層次結(jié)構(gòu)或者是容器 層次結(jié)構(gòu),例如:底盤可以包含驅(qū)動裝置和平面板,總線含有多個插件,機柜包括底盤、總 線等。這樣結(jié)構(gòu)很自然的用 co
45、mposite模式進行模擬。Equipment類為在部分整體層次結(jié)構(gòu)中的所有設備定義一個接口。Equipment聲明一些操作返回一個設備的屬性,例如它的能是消耗和價格。子類為指定的設備實現(xiàn)了這些操作,Equipment還聲明了一個Create Iterator操作,該操作為訪問它的零件返回一個Iterator ,這個操作的缺省實現(xiàn)返回一上NullIterator ,它在空集上迭代。Composite Equipment 是包含其它設備的基類,它也是 Equipment的子類。20 .簡述門面模式(Facade )和中介者模式(Mediator )的基本思想,兩者的差異何在? 答:門面模式(fa
46、cade )又稱外觀模式?;舅枷耄簽樽酉到y(tǒng)中的一組接口提供一個一 致的界面,F(xiàn)acade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用?!爸薪檎吣J健被舅枷耄篗ediator Pattern 中文譯為“中介者模式”、“調(diào)停者模式”。 調(diào)停者模式的定義是:用一個調(diào)停對象來封裝一系列的對象交互。調(diào)停者使各對象不需要顯式地相互引用,從而使其耦合松散, 而且可以獨立地改變它們之間的交互。簡單點來說,將原來兩個直接引用或者依賴的對象拆開,在中間加入一個“調(diào)?!睂ο螅沟脙深^的對象分別和“調(diào)?!睂ο笠没蛘咭蕾?。兩者的差異:從目的上看,調(diào)停者模式與門面模式有些相似。但是門面模式是介于客戶程
47、序與子系統(tǒng)之間的,而調(diào)停者模式是介于子系統(tǒng)與子系統(tǒng)之間的。這也注定了它們有很大的區(qū)別:門面模式是將原有的復雜邏輯提取到一個統(tǒng)一的接口,簡化客戶對邏輯的使用。 它是被客戶所感知的,而原有的復雜邏輯則被隱藏了起來。而調(diào)停者模式的加入并沒有改變客戶原有的使用習慣,它是隱藏在原有邏輯后面的,使得代碼邏輯更加清晰可用。21 .簡述觀察者模式的基本思想,如何實現(xiàn)當目標對象發(fā)生變化時多個觀察者對象的同 步更新?畫出他們之間的協(xié)作圖。(1) Observer (觀察者)基本思想:對象間的一種一對多的依賴關系。當一個對象的 狀態(tài)發(fā)生變化時,所有依賴于它的對象都得到通知并自動更新。(2)協(xié)作:當Concrete
48、Subject發(fā)生任何可能導到其參觀者與其本身狀態(tài)不一致的改變時,它將通知它的各個觀察者。在得到一個具體的目標改變通知后,Concrete Object對象可向目標對象查詢信息,Concrete Object使用這個些信息以使它的狀態(tài)與目標對象的狀態(tài)一致。(3)協(xié)作圖:0)協(xié)作圖上22 .舉一適合使用State模式的例子。與不使用該模式相比,有哪些優(yōu)點? 舉例:抽象狀態(tài)類定義了一個抽象方法“寫程序”與不使用該模式相比優(yōu)點:State模式將特定的狀態(tài)相關的行為封裝在一個類中,由于所有狀態(tài)相關的代碼都存在于某 個concrete state中,所以通過定義新的子類可以很容易的增加新的狀態(tài)和轉(zhuǎn)換。2
49、3 .有哪些模式的使用可以使得類的復用性增強?說明你的理由。策略模式(strategy )屬于對象行為型模式,主要定義一系列的算法,把這些算法一個個封裝成擁有共同接口的單獨的類,并使他們之間互換,客戶端調(diào)用他們的時候互不影響。算法使用和算法分離,即將變化的具體算法封裝起來,降低了代碼的耦合度,算法提取起來,使算法得到重用。中介者模式(mediator )用一個調(diào)停對象來封裝一系列的對象交互。調(diào)停者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。即, 將原來的兩個直接引用或者依賴的對象拆開,在中間加入一個“調(diào)?!睂ο?,使得兩頭的對象分別和“調(diào)?!睂ο笠没蛘咭蕾?/p>
50、。提高了原有系統(tǒng)的可讀性,將原有系統(tǒng)的多對多轉(zhuǎn)化 為一對多,提高了代碼的可復用性。適配器(Adapter )模式是的原本由于接口不兼容而不能再一起的那些類可以一起工作。如畫圖程序中,已實現(xiàn)繪制點,直線等功能。為了讓客戶程序在使用的時候不用關心 不同定義,定義個抽象類規(guī)范接口,當去實現(xiàn)繪圖時,發(fā)現(xiàn)系統(tǒng)其它地方已有制圖實現(xiàn),但是系統(tǒng)已有的方法與抽象類中規(guī)定方法不一樣,這時候用適配器模式可以解決這問題。適配器模式是為了面向接口編程中更好的復用。24 .比較Adapter和Proxy模式使用上的異同之處。適配器模式(Adapter):將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。Adapter模式使得原
51、本由于接口不兼容而不能一起工作的那些類可以一起工作。代理模式有兩個英文名字:Proxy Pattern 和Surrogate Pattern 。代理模式:為其他對象提供一種代理以控制對這個對象的訪問。說白了就是,在一些情況下客戶不想或者不能直接引用一個對象,而代理對象可以在客戶和目標對象之間起到中介作用,去掉客戶不能看到的內(nèi)容和服務或者增添客戶需要的額外服務。兩者的主要區(qū)別在于代理模式應用的情況是不改變接口命名的,而且是對已有接口功能的一種控制;而適配器模式則強調(diào)接口轉(zhuǎn)換。25 .說明Observer模式的基本實現(xiàn)方式。 如果不用該模式,要達到同樣的效果, 你會如 何做?觀察者模式在關于目標角
52、色、觀察者角色通信的具體實現(xiàn)中,有兩個版本。一種情況便是目標角色在發(fā)生變化后,僅僅告訴觀察者角色“我變化了";觀察者角色如果想要知道具體的變化細節(jié),則就要自己從目標角色的接口中得到。這種模式被很形象的稱為:拉模式一一就是說變化的信息是觀察者角色主動從目標角色中“拉”出來的。還有一種方法,那就是我目標角色“服務一條龍”,通知你發(fā)生變化的同時,通過一個 參數(shù)將變化的細節(jié)傳遞到觀察者角色中去。這就是“推模式”一一管你要不要,先給你啦。這兩種模式的使用, 取決于系統(tǒng)設計時的需要。 如果目標角色比較復雜, 并且觀察者角 色進行更新時必須得到一些具體變化的信息,則“推模式”比較合適。 如果目標角
53、色比較簡單,則“拉模式”就很合適。如果不使用該模式,可采用策略模式,將不同的情況作為子類封裝在一個類中,模擬observer模式中目標角色的不同狀態(tài), 當外部狀態(tài)發(fā)生變化時, 可以選擇不同的strategyl、 strategy2改變觀察者角色,從而達到與觀察者模式同樣的效果。26 .請列舉一個使用裝飾模式的例子。畫出你的例子的類圖結(jié)構(gòu)。JUnit中的裝飾模式:在 JUnit中,TestCase是一個很重要的類,允許對其進行功能 擴展。在 junit.extensions 包中,TestDecorator、RepeatedTest 便是對 TestCase 的裝 飾模式擴展。下面我們將它們和上面的角色對號入座。Re peate
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2260-2025搖擺式生物反應器性能參數(shù)校準規(guī)范
- 城市教育均衡發(fā)展-洞察及研究
- 醫(yī)療教育中用戶體驗的情感化界面設計研究
- 牙齦腫瘤護理策略優(yōu)化-洞察闡釋
- 智慧城市公共服務的智能化服務窗口
- 物聯(lián)網(wǎng)設備的數(shù)據(jù)加密與隱私保護-洞察闡釋
- 工地試驗室安全應急預案
- 金門非物質(zhì)文化遺產(chǎn)的國際傳播與交流研究-洞察闡釋
- 電焊工安全管理制度
- 應急防控方案和應急預案
- 水泥場地改造方案(3篇)
- 資材部安全生產(chǎn)責任制
- 既有建筑節(jié)能綜合改造項目可行性研究報告
- 貴州省銅仁市萬山區(qū)2024-2025學年部編版七年級下學期6月期末歷史試題(含答案)
- 2025年工程管理基礎知識考試試卷及答案
- 礦山生態(tài)修復方案
- 開曼群島公司法2024版中文譯本(含2024年修訂主要內(nèi)容)
- GB/T 19741-2005液體食品包裝用塑料復合膜、袋
- 礦相學課程設計 -個舊錫礦
- 征信查詢委托書(共4篇)
- 勞動防護用品配備標準(國標)
評論
0/150
提交評論