




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