


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)逐漸開(kāi)展成熟,特別是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)用的根底和豐富 開(kāi)發(fā)環(huán)境的支持,因而使面向?qū)ο蟮某绦蛟O(shè)計(jì)能得到很快普及。A. Smalltalk B. EiffelC. C+D. Java3以下不屬于面向?qū)?/p>
2、象技術(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),以下不正確的表達(dá)是 C。A. 與人類習(xí)慣的思維方法比擬一致B. 可重用性好C.以數(shù)據(jù)操作為中心D.可維護(hù)性好6. D 是從用戶使用系統(tǒng)的角度描述系統(tǒng)功能的圖形表達(dá)方法。A. 類圖B. 對(duì)象圖7. C 是表達(dá)系統(tǒng)類及其相互聯(lián)系的圖示 和其他圖的根底。A.對(duì)象圖B.組件圖C. 序列圖D. 用例圖,它是面向?qū)ο笤O(shè)計(jì)的核心,建立狀態(tài)圖、
3、協(xié)作圖C. 類圖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é)作圖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ì)11. 一個(gè)設(shè)計(jì)得好的 00系統(tǒng)具有BA. 低內(nèi)聚、低耦合的特征C. 高內(nèi)聚、高耦合的特征C. 狀態(tài)圖D. 配置圖B時(shí),需要設(shè)計(jì)出表達(dá)持久數(shù)據(jù)的實(shí)體類及其聯(lián)系,Tab
4、le) 、視圖 (View) 等。B. 邏輯數(shù)據(jù)模型設(shè)計(jì)C. 物理實(shí)現(xiàn)設(shè)計(jì)B. 高內(nèi)聚、低耦合的特征D. 低內(nèi)聚、高耦合的特征12. 下面不是UML的根本構(gòu)成元素。A. 控制語(yǔ)言B. 根本構(gòu)造塊A)C. 規(guī)那么D. 公共機(jī)制13. 面向?qū)ο蟮奶攸c(diǎn)主要概括為C。A. 可分解性、可組合性、可分類性C.抽象性、繼承性、封裝性、多態(tài)性14構(gòu)成對(duì)象的兩個(gè)主要因素是A。A.屬性和效勞 B.標(biāo)識(shí)和內(nèi)容B. 繼承性、封裝性、多態(tài)性D.封裝性、易維護(hù)性、可擴(kuò)展性、可重用性C. 繼承和多態(tài)D.消息和封裝15.以下關(guān)于面向?qū)ο蠓椒ㄖ忻枋鲋绣e(cuò)誤的選項(xiàng)是C。A. 使用設(shè)計(jì)模式有助于在軟件開(kāi)發(fā)中應(yīng)用面向?qū)ο蠹夹g(shù)B. 選擇
5、面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言時(shí)需要考慮開(kāi)發(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.類之間關(guān)聯(lián)關(guān)系的多重性D.某個(gè)對(duì)象在不同狀態(tài)之間的轉(zhuǎn)移17. 類和接口的關(guān)系類似于下面哪種類型的關(guān)系D。A. 關(guān)聯(lián)association和聚集aggregationB. 關(guān)聯(lián)association和組合composition C. 腳本scenario和用例use caseD. 包Package和子系統(tǒng)subsystem18.
6、在類圖中,那個(gè)類圖中的類Order所生成的代碼具有Public class OrderPublic Customer recipie nt;的形式? AA.C."Ode-Cuslotrie-thC.sUiriei1Oder |_B.D.19.下面那個(gè)圖符表示 UML中的實(shí)現(xiàn)關(guān)系?0.1nA.C.I>(C)D)20. 一個(gè)銀行業(yè)務(wù)系統(tǒng)采用如圖瑣事的配置圖,那么錯(cuò)誤的選項(xiàng)是A.與GUI有關(guān)的類應(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)于用例與類的比照中D是錯(cuò)誤的。A都屬于模型結(jié)構(gòu)元素B都存在繼承關(guān)系C 類描述系統(tǒng)的局部靜態(tài)視圖,用例描述系統(tǒng)動(dòng)態(tài)的行為視圖D類描述的是系統(tǒng)的內(nèi)部構(gòu)成,用例也可以描述系統(tǒng)的內(nèi)部構(gòu)成22. Innovation 公司正在為 Rose開(kāi)發(fā)插入件,使得 Rose可以把00A 00D莫型以各種圖形格式導(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.類圖D.用例圖23. 計(jì)算機(jī)Computer由中央處理器、內(nèi)存、軟盤、硬盤、顯示器、鍵盤、鼠標(biāo)等組成。那么 Computer 類和其他類CPU RAM FloppyDrive、HardDisk、Monitor、Keyboard、Mouse 之間的關(guān)系是:DA. 泛化關(guān)系GeneralizationB.實(shí)現(xiàn)關(guān)系RealizationC.包含關(guān)系Inclusion D.聚集關(guān)系A(chǔ)ggregation24. 在狀態(tài)圖中不能表示下面那些概念?DA.動(dòng)作actio
9、n B.事件event C.轉(zhuǎn)移transition D.類class25. 在數(shù)據(jù)庫(kù)設(shè)計(jì)的C階段開(kāi)始考慮具體的數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS的特性。CA.需求分析B.概念設(shè)計(jì)C.邏輯設(shè)計(jì).D物理設(shè)計(jì)26.在UML中,有3種根本構(gòu)造塊,分別是AA.C.事物、關(guān)系和圖事物、關(guān)系和結(jié)構(gòu)B.D.注釋、關(guān)系和圖注釋、關(guān)系和結(jié)構(gòu)27.在UM沖,有四種關(guān)系,下面哪個(gè)不是:B)A.依賴關(guān)系B.繼承關(guān)系C.泛化關(guān)系D.實(shí)現(xiàn)關(guān)系28. 下面哪個(gè)不是 UML中的靜態(tài)視圖BA.狀態(tài)圖B.用例圖C. 對(duì)象圖 D. 類圖29. 在用例之間,會(huì)有三種不同的關(guān)系,以下哪個(gè)不是它們之間可能的關(guān)系D A. 包含in elude B.擴(kuò)
10、展exte ndC. 泛化generalization D.關(guān)聯(lián)connect30. 用例Use-case用來(lái)描述系統(tǒng)在事件做出響應(yīng)時(shí)所采取的行動(dòng)。用例之間是具有相關(guān)性的。在一個(gè)“訂單輸入子系統(tǒng)中,創(chuàng)立新訂單和更新訂單都需要檢查用戶帳號(hào)是否正確。 那么,用例“創(chuàng)立新訂單、“更新訂單與用例“檢查用戶帳號(hào)之間是B關(guān)系A(chǔ). 擴(kuò)展extend B.包含include C. 分類classification D.聚集aggregation 31. UML中類的有三種,下面哪個(gè)不是其中之一BA.實(shí)體類 B. 抽象類 C. 控制類 D. 邊界類32閱讀圖例,判斷以下哪個(gè)說(shuō)法是錯(cuò)誤的。c述書A.B.C.D.讀
11、者可以使用系統(tǒng)的還書用例每次執(zhí)行還書用例都要執(zhí)行圖書查詢用例 每次執(zhí)行還書用例都要執(zhí)行交納罰金用例 執(zhí)行還書用例有可能既執(zhí)行圖書查詢用例,又執(zhí)行交納罰金用例33 .關(guān)于協(xié)作圖的描述,以下哪個(gè)不正確BA.協(xié)作圖作為一種交互圖,強(qiáng)調(diào)的是參加交互的對(duì)象的組織;B. 協(xié)作圖是順序圖的一種特例C. 協(xié)作圖中有消息流的順序號(hào);D. 在ROSE工具中,協(xié)作圖可在順序圖的根底上按“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.不
12、同問(wèn)題的不同表相D.以上都不是36. 設(shè)計(jì)模式的兩大主題是 A. 系統(tǒng)的維護(hù)與開(kāi)發(fā)C.系統(tǒng)架構(gòu)與系統(tǒng)開(kāi)發(fā)(d)。B 對(duì)象組合與類的繼承D. 系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展37. 以下哪些問(wèn)題通過(guò)應(yīng)用設(shè)計(jì)模式不能夠解決。(C)A)指定對(duì)象的接口C)確定軟件的功能都正確實(shí)現(xiàn)B )針對(duì)接口編程D)設(shè)計(jì)應(yīng)支持變化38. 外觀模式的作用是( b)。A 當(dāng)不能采用生成子類的方法進(jìn)行擴(kuò)充時(shí),動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的功能。B 為了系統(tǒng)中的一組功能調(diào)用提供一個(gè)一致的接口,這個(gè)接口使得這一子系統(tǒng)更加容易 使用。C.保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)他的全局訪問(wèn)點(diǎn)。D 在方法中定義算法的框架,而將算法中的一些操作步驟
13、延遲到子類中實(shí)現(xiàn)。39. Fa?ade (外觀)模式的意圖是(a)。A. 希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的借口。B .將一個(gè)無(wú)法控制的現(xiàn)有對(duì)象與一個(gè)特定借口相匹配。C. 將一組實(shí)現(xiàn)局部從另一組使用它們的對(duì)象中別離出來(lái)。D .你需要為特定的客戶(或情況)提供特定系列的對(duì)象。40. Adapter (適配器)模式的意圖是(B )。A. 希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的接口。B .將一個(gè)無(wú)法控制的現(xiàn)有對(duì)象與一個(gè)特定接口相匹配。C. 將一組實(shí)現(xiàn)局部從另一組使用它們的對(duì)象中別離出來(lái)。D .你需要為特定的客戶(或情況)提供特定系列的對(duì)象。41. 下面不屬于創(chuàng)立型模式的有( C)。A
14、 .抽象工廠模式( AbstraCt FaCtory )B .工廠方法模式(Factory Method )C.適配器模式(Adapter)D .單 例 模式 ( Singleton )42. 將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。這句話是對(duì)以下哪種模式的描述(C)。A. 策略模式( Strategies)B .橋接模式(Bridge)C. 適配器模式(Adapter)D. 單例模式( Singleton)43. 以下關(guān)于結(jié)構(gòu)型模式說(shuō)法不正確的選項(xiàng)是。(B)A)結(jié)構(gòu)型模式可以在不破壞類封裝性的根底上,實(shí)現(xiàn)新的功能。B )結(jié)構(gòu)型模式主要用于創(chuàng)立一組對(duì)象。C)結(jié)構(gòu)型模式可以創(chuàng)立一組類的統(tǒng)一訪問(wèn)
15、接口。D結(jié)構(gòu)型模式可以在不破壞類封裝性的根底上, 使得類可以同不曾估計(jì)到的系統(tǒng)進(jìn)行交互。44. 關(guān)于繼承表述 錯(cuò)誤的選項(xiàng)是:D 。A. 繼承是一種通過(guò)擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn),從而獲得新功能的復(fù)用方法。B. 泛化類超類可以顯式地捕獲那些公共的屬性和方法。特殊類子類那么通過(guò)附加 屬性和方法來(lái)進(jìn)行實(shí)現(xiàn)的擴(kuò)展。C. 在一定意義上說(shuō)破壞了封裝性,因?yàn)檫@會(huì)將父類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類。D. 繼承本質(zhì)上是“白盒復(fù)用,對(duì)父類的修改,不會(huì)影響到子類。45在不破壞類封裝性的根底上, 使得類可以同不曾估計(jì)到的系統(tǒng)進(jìn)行交互。主要表達(dá)在D。A外觀模式FacadeB裝飾模式(Decorator)C 策略模式Strategi
16、esD橋接模式BridgeA )。46.行為類模式使用B在類間分派行為。A接口 B繼承機(jī)制C對(duì)象組合D委托A抽象工廠模式Abstract Factory B觀祭者模式ObserverC 策略模式StrategiesD橋接模式BridgeD。47.下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?A抽象工廠模式B觀察者模式C策略模式D橋接模式51.下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?57. 下面的類圖表示的是哪個(gè)設(shè)計(jì)模式?D 。A 策略模式StrategiesB 裝飾模式DecoratorC橋接模式BridgeD觀察者模式Observer48. Bridge 橋接模式的意圖是C。A.希望簡(jiǎn)化現(xiàn)有系統(tǒng)的使用方法。你需要
17、定義自己的借口。B .將一個(gè)無(wú)法控制的現(xiàn)有對(duì)象與一個(gè)特定借口相匹配。C.將一組實(shí)現(xiàn)局部從另一組使用它們的對(duì)象中別離出來(lái)。D .你需要為特疋的客戶或情況提供特疋系列的對(duì)象。49.靜態(tài)工廠的核心角色是A 。A.抽象產(chǎn)品B.具體產(chǎn)品C.靜態(tài)工廠D.消費(fèi)者50.以下屬于創(chuàng)立型模式的是A 。A抽象工廠模式Abstract Factory B 裝飾模式DecoratorC外觀模式FacadeD橋接模式BridgeA.希望簡(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)或相互依賴
18、對(duì)象的接口,而無(wú)需指定它們具體的類 53.在根據(jù)不同的機(jī)器選擇設(shè)備驅(qū)動(dòng)程序的案例中,以下表達(dá) 不準(zhǔn)確的是D。A. 可以使用switch語(yǔ)句選擇驅(qū)動(dòng)程序.B. 可以使用繼承來(lái)實(shí)現(xiàn)選擇驅(qū)動(dòng)程序,但它可能會(huì)產(chǎn)生類組合爆炸問(wèn)題.C. 可以選擇抽象工廠模式實(shí)現(xiàn),且能防止組合爆炸問(wèn)題.D. 使用繼承的解決方案要比switch語(yǔ)句有更多的優(yōu)勢(shì).54.應(yīng)用設(shè)計(jì)模式的一個(gè)優(yōu)點(diǎn)是 A 。A .適應(yīng)需求變化B.程序易于理解C.減少開(kāi)發(fā)過(guò)程中的代碼開(kāi)發(fā)工作量D.簡(jiǎn)化軟件系統(tǒng)的設(shè)計(jì)55. 當(dāng)我們想創(chuàng)立一個(gè)具體的對(duì)象而又不希望指定具體的類時(shí),可以使用A模式。A.創(chuàng)立型 B.結(jié)構(gòu)型 C行為型 D.以上都可以56. 在觀察者
19、模式中,表述 錯(cuò)誤的選項(xiàng)是C。A. 觀察者角色的更新是被動(dòng)的。B. 被觀察者可以通知觀察者進(jìn)行更新C. 觀察者可以改變被觀察者的狀態(tài)再由被觀察者通知所有觀察者依據(jù)被觀察者的狀態(tài)進(jìn)行。D. 以上表述全部錯(cuò)誤。58. 當(dāng)我們想創(chuàng)立一個(gè)具體的對(duì)象而又不希望指定具體的類時(shí),可以使用A模式。A.創(chuàng)立型B.結(jié)構(gòu)型C行為型D.以上都可以59. 以下模式中,屬于行為模式的是B。A.工廠模式B觀察者C適配器D 以上都是60. Observer模式不適用于D。A當(dāng)一個(gè)抽象模型存在兩個(gè)方面,其中一個(gè)方面依賴于另一方面,將這二者封裝在獨(dú)立的對(duì)象中以使它們可以各自獨(dú)立的改變和復(fù)用。B當(dāng)對(duì)一個(gè)對(duì)象的改變需要同時(shí)改變其他對(duì)
20、象,而不知道具體有多少個(gè)對(duì)象有待改變C當(dāng)一個(gè)對(duì)象必須通知其它對(duì)象,而它又不能假定其它對(duì)象是誰(shuí),也就是說(shuō)你不希望這些對(duì)象是緊耦合的。D 一個(gè)對(duì)象結(jié)構(gòu)包含很多類對(duì)象,它們有不同的接口, 而想對(duì)這些對(duì)象實(shí)施一些依賴于其具體類的操作。、判斷題1. 一個(gè)狀態(tài)圖最多只能由一個(gè)初態(tài)和一個(gè)終態(tài)。F2. 協(xié)作圖中的消息必須要有消息順序號(hào)。T3. 兩個(gè)參與者actor 之間可以有包含in elude 關(guān)系、擴(kuò)展exte nd 關(guān)系或泛化ge neralizatio n關(guān)系,而包含關(guān)系和擴(kuò)展關(guān)系是依賴depe ndency關(guān)系的版型。F4.參與者actor 和用例use case 之間的關(guān)系是關(guān)聯(lián)associati
21、on關(guān)系。T5.類A和類B之間的關(guān)系如圖1所示,那么稱類B中的getName方法是對(duì)類A中的 getName()方法的重載overload 。 F String6.可以并發(fā)進(jìn)行。T圖2活動(dòng)圖疚七 (z SlpTEh 寸礎(chǔ)ppi 機(jī)閒7. 一個(gè)軟件系統(tǒng),如果只有源代碼,缺乏其他相應(yīng)的輔助文檔,如缺乏順序圖和類圖,那么(F)可以利用Rose進(jìn)行逆向工程得到順序圖和類圖,但得到的順序圖和類圖會(huì)比擬簡(jiǎn)單。8. CMM描述了五個(gè)級(jí)別的軟件過(guò)程成熟度,即初始級(jí)、可重復(fù)級(jí)、已定義、已管理級(jí)、優(yōu)化級(jí)。T9. UML由用例視圖、物理視圖、組件視圖、進(jìn)度視圖和配置視圖組成。F10. 在設(shè)計(jì)類圖時(shí),可以不用對(duì)類圖中
22、的每個(gè)關(guān)聯(lián)進(jìn)行命名,但如果需要命名的話, 最好用一個(gè)“動(dòng)詞給關(guān)聯(lián)命名。T11. 適配器模式屬于創(chuàng)立型模式。F12. 在設(shè)計(jì)模式中,“效果只是指“原因和結(jié)果。T13. 設(shè)計(jì)模式使代碼編制不能真正工程化。F14. 設(shè)計(jì)模式的兩大主題是系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展。T15. Fa?ade 外觀模式不僅可以為方法調(diào)用創(chuàng)立更簡(jiǎn)單的接口,還可以減少客戶必須處理 的對(duì)象數(shù)量。T16. 外觀模式,當(dāng)不能采用生成子類的方法進(jìn)行擴(kuò)充時(shí),動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的 功能。F17. Fa?ade模式為子系統(tǒng)中的一組接口提供的界面可能不一致。F19. 對(duì)象適配器模式是合成聚合復(fù)用原那么的典型應(yīng)用。T20. Adapter模式
23、使原本由于接口不兼容而不能一起工作的那些類可以一起工作。T21. Fa?ade模式和Adapter模式是相同類型的包裝器。F22. Adapter模式不是必須針對(duì)某個(gè)接口進(jìn)行設(shè)計(jì)。F23. 繼承本質(zhì)上是“白盒復(fù)用,對(duì)父類的修改,不會(huì)影響到子類。F24. 繼承是一種通過(guò)擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn),從而獲得新功能的復(fù)用方法。25|抽象工廠模式提供了一系列相關(guān)或相互依賴對(duì)象的接口且必須指定他們具體的類。F26. Abstract Factory 抽象工廠模式確保系統(tǒng)總能根據(jù)當(dāng)前的情況獲得適宜的對(duì)象。T27. 在Abstract Factory 抽象工廠模式中,客戶對(duì)象不需要知道“向誰(shuí)請(qǐng)求需要的對(duì)象“如何
24、使用這些對(duì)象 。F28. Decorator 裝飾模式的意圖是為一個(gè)對(duì)象連接附加的職責(zé)。F29. 每個(gè)Decorator對(duì)象在被裝飾的功能之前或之后執(zhí)行自己的附加功能。T30. Decorator 裝飾模式適用性是表示對(duì)象的局部-整體層次結(jié)構(gòu)。F三、填空題1. 面向?qū)ο箝_(kāi)發(fā)方法一改正去傳統(tǒng)的以 功能分析為根底的_面向過(guò)程_的結(jié)構(gòu)化分析與設(shè)計(jì)方法,它模擬人們理解和處理客觀世界的方式來(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ā)能比
25、擬自然地模擬客觀世界的活動(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ì)象是客觀實(shí)體的抽象表示,是由描述對(duì)象屬性的數(shù)據(jù) _和_對(duì)這些數(shù)據(jù)進(jìn)行的操作行為兩局部組成。而_類_是對(duì)具有相同屬性和行為的一組對(duì)象的抽象描述。因此,它可 作為一種用戶自定義類型和創(chuàng)立對(duì)象的樣板,而按照這種樣板所創(chuàng)立的一個(gè)個(gè)具體對(duì)象就是類的實(shí)例_。通過(guò)_繼承關(guān)系又可形成一種類層次
26、結(jié)構(gòu)。3. UML中用于描述系統(tǒng)的靜態(tài)建模的視圖稱為靜態(tài)視圖,包括_用例圖_、類圖、_對(duì)象圖_、包圖和構(gòu)件圖_。4. UML從不同的視角為系統(tǒng)架構(gòu)建模,可產(chǎn)生九種視圖:用例圖、類圖、對(duì)象圖、 配置圖、組件圖、_協(xié)作圖、 活動(dòng)圖、序列圖、狀態(tài)圖。5. 序列圖 是用來(lái)反映假設(shè)干個(gè)對(duì)象之間動(dòng)態(tài)協(xié)作關(guān)系的一種交互圖。它主要反映對(duì)象之間已發(fā)送消息的先后次序和對(duì)象之間的交互過(guò)程。 協(xié)作圖是用來(lái)描述實(shí)現(xiàn)某些效勞所涉及的對(duì)象及其相互之間的關(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.
27、適配器模式,分為類的適配器和對(duì)象的適配器兩種實(shí)現(xiàn)。其中類的適配器采用的是繼承關(guān)系,而對(duì)象適配器采用的是組合聚合關(guān)系。7. Adapter模式有兩種類型有 :對(duì)象Adapter模式、類Adapter模式。8. UML是一種用來(lái)創(chuàng)立程序模型的圖像語(yǔ)言。9. Adapter適配器模式使原本接口不兼容而不能一起工作的類可以一起工作。10. 適配器模式,分為類的適配器和對(duì)象的適配器兩種實(shí)現(xiàn)。其中類的適配器采用的是繼承關(guān)系,而對(duì)象適配器采用的是組合聚類關(guān)系。11. 在存在繼承關(guān)系的情況下,方法向超類方向集中,而數(shù)據(jù)向子類方向集中。12. 在進(jìn)行設(shè)計(jì)以應(yīng)對(duì)變化的過(guò)程中,應(yīng)該遵循兩條根本策略:找出變化并封裝變
28、化點(diǎn); 優(yōu)先使用對(duì)象組合,而不是類繼承。13. 封裝性好的代碼更容易測(cè)試,因?yàn)樗c其他代碼沒(méi)有耦合 。14. 抽象工廠模式提供了一系列相關(guān)或相互依賴對(duì)象的接口而無(wú)需指定他們具體的類。15. 工廠模式分為簡(jiǎn)單工廠 ,工廠方法 , 工廠方法 三種類型。四. 簡(jiǎn)答題1. 簡(jiǎn)述面向?qū)ο筌浖_(kāi)發(fā)方法的優(yōu)點(diǎn)。面向?qū)ο箝_(kāi)發(fā)方法一改正去傳統(tǒng)的以功能分析和功能分解為根底的面向過(guò)程的結(jié)構(gòu)化分析 與設(shè)計(jì)方法, 面向?qū)ο箝_(kāi)發(fā)方法模擬人們理解和處理客觀世界的方式來(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)系, 使分析者
29、、 設(shè)計(jì)者和編程者都可使用相同的概 念,從而使面向?qū)ο蟮能浖_(kāi)發(fā)能比擬自然地模擬客觀世界的活動(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ū)ο筌浖こ讨饾u開(kāi)展成熟,特別是統(tǒng)一建模語(yǔ)言 UML 標(biāo)準(zhǔn)的 形成和廣泛使用,使面向?qū)ο筌浖_(kāi)發(fā)方法已成為軟件開(kāi)發(fā)的主流技術(shù)。2. 簡(jiǎn)述面向?qū)ο蠹夹g(shù)的三大機(jī)制。答: 1封裝性 encapsula
30、tion 所謂封裝就是把對(duì)象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位, 使外界不能直接訪問(wèn)或修改 這些數(shù)據(jù)和代碼,外界只能通過(guò)對(duì)象提供的接口函數(shù)來(lái)改變或獲取對(duì)象的屬性數(shù)據(jù),這 就實(shí)現(xiàn)了消息隱蔽。2繼承性 如果在一個(gè)已定義的類上,增加一些特殊屬性或操作,可以形成一個(gè)新的類,這個(gè)類不 僅繼承了前一個(gè)類的全部特征, 而且具有新的特性, 因此可看作前一個(gè)類的特例, 是對(duì)前 一個(gè)類的繼承。 前一個(gè)類稱為父類, 新產(chǎn)生的類叫做子類。 通過(guò)繼承關(guān)系可形成一種類層 次結(jié)構(gòu),叫做繼承結(jié)構(gòu)。 3多態(tài)性在類層次結(jié)構(gòu)的不同類中,可用相同的函數(shù)名實(shí)現(xiàn)功能不同的函數(shù)。3. 簡(jiǎn)述 OOA 模型的層次結(jié)構(gòu)。答:00A模型采用五層次結(jié)
31、構(gòu),它們分別是:1對(duì)象 - 類層劃分待開(kāi)發(fā)系統(tǒng)及其環(huán)境信息的根本構(gòu)造單位, 標(biāo)出反映問(wèn)題域的對(duì)象和類, 并用符號(hào) 進(jìn)行標(biāo)準(zhǔn)的描述,用信息提供者熟悉的術(shù)語(yǔ)為對(duì)象和類命名。2屬性層定義對(duì)象和某些結(jié)構(gòu)中的數(shù)據(jù)單元, 繼承結(jié)構(gòu)中所有類的公共屬性可放于通用類中。 標(biāo) 識(shí)對(duì)象類必需的屬性并放在適宜的繼承層次上, 屬性的特殊限制和實(shí)例連接關(guān)系也應(yīng)標(biāo)識(shí)出 來(lái)。3效勞層表示對(duì)象的效勞或行為,即是要定義類上的操作。4結(jié)構(gòu)層"整體-局部標(biāo)識(shí)現(xiàn)實(shí)世界中對(duì)象之間的關(guān)系。當(dāng)一個(gè)對(duì)象是另一個(gè)對(duì)象的一局部時(shí),用 "關(guān)系表示;當(dāng)一個(gè)類屬于另一個(gè)類時(shí),用類之間繼承關(guān)系表示。5主題層可將相關(guān)類或?qū)ο髣澐譃橐粋€(gè)主
32、題。4. 簡(jiǎn)述00D模型的總體結(jié)構(gòu),并畫圖表示。00D體系結(jié)構(gòu)的各個(gè)局部?jī)?nèi)容:1問(wèn)題論域局部,在00A模型的根底上,細(xì)化分析結(jié)果,設(shè)計(jì)一組構(gòu)成底層應(yīng)用模型的類和對(duì) 象。2人機(jī)交互局部:設(shè)計(jì)用戶界面模型 ,該用戶界面模型中的類和對(duì)象提供實(shí)現(xiàn)人機(jī)交互操作的接口函數(shù)。用戶界面設(shè)計(jì)包括菜單設(shè)計(jì)、窗口設(shè)計(jì)、輸入 /輸出界面設(shè)計(jì)等等。3任務(wù)管理局部:建立一些類,用以負(fù)責(zé)處理操作系統(tǒng)級(jí)的并發(fā)問(wèn)題、中斷、調(diào)度以及 其它與特定平臺(tái)有關(guān)的問(wèn)題。4 數(shù)據(jù)管理局部:提供數(shù)據(jù)管理系統(tǒng)中存儲(chǔ)和檢索對(duì)象的根本結(jié)構(gòu),包括對(duì)永久性數(shù)據(jù) 的訪問(wèn)和管理。數(shù)據(jù)管理設(shè)計(jì)包括:數(shù)據(jù)存放設(shè)計(jì):數(shù)據(jù)存放設(shè)計(jì)選擇數(shù)據(jù)存放的方式文件存放、關(guān)系數(shù)
33、據(jù)庫(kù)表格存放或面向?qū)ο蟮臄?shù)據(jù)庫(kù)存放。設(shè)計(jì)相應(yīng)的操作。為每個(gè)需要存儲(chǔ)的對(duì)象和類增加用于存儲(chǔ)管理的屬性和操作,類和對(duì)象的定義中加以描述。class & object layer類及對(duì)象層attribute layer類及對(duì)象層service layer效勞層struct layer結(jié)構(gòu)層subject layer主題層問(wèn)題論域局部人 機(jī) 交 互 部 分任 務(wù) 管 理 部 分?jǐn)?shù) 據(jù) 管 理 部 分M«1.5 00D 模型的總體結(jié)構(gòu)類邊界實(shí)例連接屬性實(shí)例邊界效勞 口主題 口1 : M 一對(duì)多關(guān)系。5.分析下面的類圖,畫出新的類圖,將原圖中的多對(duì)多關(guān)系轉(zhuǎn)換為答案:6信用卡可能處于“開(kāi)放
34、和“關(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)又包括“透支和“正常狀態(tài)之間的變化,當(dāng)剩余金額少于零、或者使用額度大于剩余金額、或者結(jié)算余額小于零時(shí)進(jìn)入透支狀態(tài),反之那么為正常狀態(tài)。畫出信用卡的狀態(tài)圖。6分JIM-1廠、JU_J正常®亍插、工1廠rIj7. 請(qǐng)判斷以下類圖中的類關(guān)系是否適宜,并說(shuō)明理由。1飛機(jī)有機(jī)翼、機(jī)身、駕駛艙崔I*3 公司的員工很多,包括程序員、分析員、工程經(jī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),也1飛機(jī)
35、有機(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 公司的員工很多,包括程序員、分析員、工程經(jīng)理應(yīng)改為“泛化8. 假設(shè)你從垃圾堆里撿到這樣一張小紙片如以下圖所示。根據(jù)現(xiàn)有信息盡可能判斷:1“小車類有哪幾個(gè)操作?2“指揮小車UC類的“執(zhí)行任務(wù)操作要做哪些工作?采用偽代碼描述 Or屮竹HlL丄ib .赫斛:mm曄1師息討也坨尿夠円愕嶗事£>圖時(shí)序圖2 :匚舊闞參考答案:1“小車類有哪幾個(gè)操作?返回小車當(dāng)前位置轉(zhuǎn)向和前進(jìn)2 “指揮小車UC類的“執(zhí)行任務(wù)操作要做
36、哪些工作?采用偽代碼描述 移動(dòng)任務(wù):更新行走斷表和目的地移動(dòng)任務(wù):判斷現(xiàn)有信息足以讓小車行走小車:放回小車當(dāng)前位置小車:驗(yàn)證小車尚未到達(dá)目的地移動(dòng):根據(jù)但前位置及斷表信息計(jì)算出速度、角度小車:轉(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。12. 簡(jiǎn)述 OOD 模型的總體結(jié)構(gòu),并畫圖表示。13. 應(yīng)用 UML 進(jìn)行系統(tǒng)分析和設(shè)計(jì)所需建立視圖有那幾種?14. 簡(jiǎn)述“開(kāi)閉原那么的根本思想。請(qǐng)舉出一個(gè)使用了軟件“開(kāi)閉原那么的軟件設(shè)計(jì)模 式,其中何處表達(dá)了“開(kāi)閉原那么。答:“開(kāi)閉原那么:軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,而對(duì)修改關(guān)閉,“開(kāi)
37、 - 閉原那么要求 軟件系統(tǒng)能夠在不需要修改原有類的根底上,通過(guò)增加類到達(dá)擴(kuò)展功能的目的。Abstract factory 表達(dá)了這個(gè)原那么,如果想增加一類新的 products ,只需在 product 類 體系中增加各個(gè) products ,然后在 factory 類體系結(jié)構(gòu)中增加一個(gè) concrete factory 就可以 了,而不需要對(duì)現(xiàn)有類做任何修改, The Open-closed principleocp 在不改動(dòng)過(guò)模塊源代碼 的情況下擴(kuò)展模塊的行為。軟件實(shí)體類模塊 函數(shù)等應(yīng)該是可以擴(kuò)展的,但是不可以修改的。15. 簡(jiǎn)述依賴?yán)D(zhuǎn)原那么的根本思想。請(qǐng)舉出一個(gè)使用了軟件依賴原那么的
38、軟件設(shè)計(jì)模式, 其中何處表達(dá)了依賴原那么。答:依賴倒置原那么的根本思想是: 高層模塊不應(yīng)該依賴于低層模塊, 二者都應(yīng)該依賴 于抽象。 抽象不應(yīng)該依賴于細(xì)節(jié), 細(xì)節(jié)應(yīng)該不依賴于抽象。 Tomplate method 就表達(dá)了這 個(gè)原那么,它定義了一個(gè)操作中的算法骨架,而將一些步驟延遲到子類中, template method 使得子類不改變一個(gè)算法的結(jié)構(gòu),即可重定義該算法的某些特定步驟。16. 什么是單一職責(zé)原那么?請(qǐng)舉出一個(gè)使用了單一職責(zé)原那么的軟件設(shè)計(jì)模式,其中何處 表達(dá)了單一職責(zé)原那么。答:根本思想: SRP 使得一個(gè)類或一個(gè)模塊承當(dāng)?shù)呢?zé)任盡可能的少,使盡可能少的因 素或動(dòng)機(jī)影響該類或該模
39、塊,即增大類或模塊的內(nèi)聚性,減少其耦合度, SRP 是所有原那么 中最簡(jiǎn)單的之一,也是最難正確運(yùn)用的之一。COMMAND 模式表達(dá)了 SRP 原那么,大多數(shù)類都是一組方法和相應(yīng)的一組變量的結(jié)合, 而該模式只是封裝了一個(gè)沒(méi)有任何變量的函數(shù), 它對(duì)函數(shù)的關(guān)注超過(guò)了類, 將一個(gè)請(qǐng)求封裝 為一個(gè)對(duì)象,從而可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。17. 軟件復(fù)用可采用類的繼承方式和類的聚合方式,比擬兩者的優(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): 容器類僅能通過(guò)被包
40、含對(duì)象的接口來(lái)對(duì)其進(jìn)行訪問(wèn)。 “黑盒 復(fù)用, 因?yàn)楸话瑢?duì)象的內(nèi)部細(xì)節(jié)對(duì)外是不可見(jiàn)。 包裝性好。 實(shí)現(xiàn)上的相互依賴性比擬小。 每一個(gè)類只專注于一項(xiàng)任務(wù)。 通過(guò)獲取指定其他的具有相同類型的對(duì)象的使用, 可以在運(yùn) 行期間動(dòng)態(tài)地定義對(duì)象的組合。聚合的缺點(diǎn): 導(dǎo)致系統(tǒng)中的對(duì)象過(guò)多 為了能將多個(gè)不同的對(duì)象作為組合塊來(lái)使用, 必須仔細(xì)地對(duì)接口進(jìn)行定義。類繼承:是一種通過(guò)擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn),從而獲得新功能的復(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ì)將父類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類“白盒復(fù)用,因?yàn)楦割惖膬?nèi)部細(xì)節(jié)對(duì)于子類而言通常
41、是可見(jiàn)的當(dāng)父類的實(shí)現(xiàn)更改時(shí),子類也不得不隨之更改從父類繼承來(lái)的實(shí)現(xiàn)將不能在運(yùn)行期間進(jìn)行改變。18. 畫出工廠方法模式的結(jié)構(gòu)圖。什么情況下適合使用工廠方發(fā)模式?mun nc' I'MCTtrMrtwdf)其中product :為工廠模式所要?jiǎng)?chuàng)立的對(duì)象類型定義一個(gè)接口。Concrete product: 實(shí)現(xiàn) product 接口。Creator :聲明工廠方法(factory method )返回值為 product的一個(gè)對(duì)象。Concrete creator :覆寫 factory Method(),返回值為 concrete product 的一個(gè)具體實(shí) 例。在下面情況下你可
42、以考慮使用工廠方法模式:1) 當(dāng)客戶程序不需要知道要使用對(duì)象的創(chuàng)立過(guò)程。2) 客戶程序使用的對(duì)象存在變動(dòng)的可能,或者根本就不知道使用哪一個(gè)具體的對(duì)象。19. 畫出合成模式(Composite )的結(jié)構(gòu)圖。舉例說(shuō)明一個(gè)可以應(yīng)用合成模式的軟件設(shè) 計(jì)實(shí)例,說(shuō)明其中各角色的作用。實(shí)例:計(jì)算機(jī)和立體組合音響這樣的設(shè)備經(jīng)常被組裝成一局部整體層次結(jié)構(gòu)或者是容器 層次結(jié)構(gòu),例如:底盤可以包含驅(qū)動(dòng)裝置和平面板,總線含有多個(gè)插件,機(jī)柜包括底盤、總 線等。這樣結(jié)構(gòu)很自然的用 composite模式進(jìn)行模擬。Equipme nt類為在局部整體層次結(jié)構(gòu)中的所有設(shè)備定義一個(gè)接口。Equipme nt聲明一些操作返回一個(gè)設(shè)
43、備的屬性,例如它的能是消耗和價(jià)格。子類為指定的設(shè)備實(shí)現(xiàn)了這些操作,Equipment還聲明了一個(gè) Create Iterator操作,該操作為訪問(wèn)它的零件返回一個(gè) Iterator ,這個(gè)操作的缺省實(shí)現(xiàn)返回一上Nulllterator,它在空集上迭代。Composite Equipment 是包含其它設(shè)備的基類,它也是 Equipment的子類。20. 簡(jiǎn)述門面模式Facade 和中介者模式Mediator 的根本思想,兩者的差異何在? 答:門面模式facade 又稱外觀模式。根本思想:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,F(xiàn)acade模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使
44、用。"中介者模式根本思想:Mediator 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è)直接引用或者依賴的對(duì)象拆開(kāi),在中間參加一個(gè)“調(diào)停對(duì)象,使得兩頭的對(duì)象分別和“調(diào)停對(duì)象引用或者依賴。兩者的差異:從目的上看,調(diào)停者模式與門面模式有些相似。但是門面模式是介于客戶程序與子系統(tǒng)之間的,而調(diào)停者模式是介于子系統(tǒng)與子系統(tǒng)之間的。這也注定了它們有很大的區(qū)別:門面模式是將原有的復(fù)雜邏輯提取到一個(gè)統(tǒng)一
45、的接口,簡(jiǎn)化客戶對(duì)邏輯的使用。 它是被客戶所感知的,而原有的復(fù)雜邏輯那么被隱藏了起來(lái)。而調(diào)停者模式的參加并沒(méi)有改變客戶原有的使用習(xí)慣,它是隱藏在原有邏輯后面的,使得代碼邏輯更加清晰可用。21. 簡(jiǎn)述觀察者模式的根本思想,如何實(shí)現(xiàn)當(dāng)目標(biāo)對(duì)象發(fā)生變化時(shí)多個(gè)觀察者對(duì)象的同 步更新?畫出他們之間的協(xié)作圖。1Observer 觀察者根本思想:對(duì)象間的一種一對(duì)多的依賴關(guān)系。當(dāng)一個(gè)對(duì)象的 狀態(tài)發(fā)生變化時(shí),所有依賴于它的對(duì)象都得到通知并自動(dòng)更新。2 協(xié)作:當(dāng)Concrete Subject發(fā)生任何可能導(dǎo)到其參觀者與其本身狀態(tài)不一致的改變時(shí),它將通知它的各個(gè)觀察者。在得到一個(gè)具體的目標(biāo)改變通知后,Con cre
46、te Object對(duì)象可向目標(biāo)對(duì)象查詢信息,Con crete Object使用這個(gè)些信息以使它的狀態(tài)與目標(biāo)對(duì)象的狀態(tài)一致。3 協(xié)作圖:3協(xié)作團(tuán)匸.Get State22. 舉一適合使用State模式的例子。與不使用該模式相比,有哪些優(yōu)點(diǎn)? 舉例:抽象狀態(tài)類定義了一個(gè)抽象方法“寫程序工柞噂直:double 仃齊龍盛;ir鮭1十斗秤呼in;1fl)yn序(In : OK» J flW 5 l.ft)ir : 1 ft耳用x : 丁料卜+ HIT1 in wEll)與不使用該模式相比優(yōu)點(diǎn):State模式將特定的狀態(tài)相關(guān)的行為封裝在一個(gè)類中,由于所有狀態(tài)相關(guān)的代碼都存在于某 個(gè)concre
47、te state中,所以通過(guò)定義新的子類可以很容易的增加新的狀態(tài)和轉(zhuǎn)換。23. 有哪些模式的使用可以使得類的復(fù)用性增強(qiáng)?說(shuō)明你的理由。策略模式strategy屬于對(duì)象行為型模式,主要定義一系列的算法,把這些算法一個(gè)個(gè)封裝成擁有共同接口的單獨(dú)的類,并使他們之間互換,客戶端調(diào)用他們的時(shí)候互不影響。算法使用和算法別離,即將變化的具體算法封裝起來(lái),降低了代碼的耦合度,算法提取起來(lái),使算法得到重用。中介者模式mediator用一個(gè)調(diào)停對(duì)象來(lái)封裝一系列的對(duì)象交互。調(diào)停者使各對(duì)象不需要顯式地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。即, 將原來(lái)的兩個(gè)直接引用或者依賴的對(duì)象拆開(kāi),在中間參加
48、一個(gè)“調(diào)停對(duì)象,使得兩頭的對(duì)象分別和“調(diào)停對(duì)象引用或者依賴。提高了原有系統(tǒng)的可讀性,將原有系統(tǒng)的多對(duì)多轉(zhuǎn)化 為一對(duì)多,提高了代碼的可復(fù)用性。適配器Adapter 模式是的原本由于接口不兼容而不能再一起的那些類可以一起工作。如畫圖程序中,已實(shí)現(xiàn)繪制點(diǎn),直線等功能。為了讓客戶程序在使用的時(shí)候不用關(guān)心 不同定義,定義個(gè)抽象類標(biāo)準(zhǔn)接口,當(dāng)去實(shí)現(xiàn)繪圖時(shí),發(fā)現(xiàn)系統(tǒng)其它地方已有制圖實(shí)現(xiàn),但是系統(tǒng)已有的方法與抽象類中規(guī)定方法不一樣,這時(shí)候用適配器模式可以解決這問(wèn)題。適配器模式是為了面向接口編程中更好的復(fù)用。24. 比擬Adapter和Proxy模式使用上的異同之處。適配器模式Adapter:將一個(gè)類的接口轉(zhuǎn)換
49、成客戶希望的另外一個(gè)接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。代理模式有兩個(gè)英文名字:Proxy Pattern 和Surrogate Pattern 。代理模式:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。說(shuō)白了就是,在一些情況下客戶不想或者不能直接引用一個(gè)對(duì)象,而代理對(duì)象可以在客戶和目標(biāo)對(duì)象之間起到中介作用,去掉客戶不能看到的內(nèi)容和效勞或者增添客戶需要的額外效勞。兩者的主要區(qū)別在于代理模式應(yīng)用的情況是不改變接口命名的,而且是對(duì)已有接口功能的一種控制;而適配器模式那么強(qiáng)調(diào)接口轉(zhuǎn)換。25. 說(shuō)明Observer模式的根本實(shí)現(xiàn)方式。 如果不用該模式,要到
50、達(dá)同樣的效果, 你會(huì)如 何做?觀察者模式在關(guān)于目標(biāo)角色、觀察者角色通信的具體實(shí)現(xiàn)中,有兩個(gè)版本。一種情況便是目標(biāo)角色在發(fā)生變化后,僅僅告訴觀察者角色“我變化了;觀察者角色如果想要知道具體的變化細(xì)節(jié),那么就要自己從目標(biāo)角色的接口中得到。這種模式被很形象的稱為:拉模式一一就是說(shuō)變化的信息是觀察者角色主動(dòng)從目標(biāo)角色中“拉出來(lái)的。還有一種方法,那就是我目標(biāo)角色“效勞一條龍,通知你發(fā)生變化的同時(shí),通過(guò)一個(gè) 參數(shù)將變化的細(xì)節(jié)傳遞到觀察者角色中去。這就是“推模式一一管你要不要,先給你啦。這兩種模式的使用, 取決于系統(tǒng)設(shè)計(jì)時(shí)的需要。 如果目標(biāo)角色比擬復(fù)雜, 并且觀察者角 色進(jìn)行更新時(shí)必須得到一些具體變化的信息
51、,那么“推模式比擬適宜。 如果目標(biāo)角色比擬簡(jiǎn)單,那么“拉模式就很適宜。如果不使用該模式,可采用策略模式,將不同的情況作為子類封裝在一個(gè)類中,模擬observer模式中目標(biāo)角色的不同狀態(tài), 當(dāng)外部狀態(tài)發(fā)生變化時(shí), 可以選擇不同的strategyl、 strategy2改變觀察者角色,從而到達(dá)與觀察者模式同樣的效果。26. 請(qǐng)列舉一個(gè)使用裝飾模式的例子。畫出你的例子的類圖結(jié)構(gòu)。JUnit中的裝飾模式:在 JUnit中,TestCase是一個(gè)很重要的類,允許對(duì)其進(jìn)行功能 擴(kuò)展。在 junit.extensions 包中,TestDecorator、RepeatedTest 便是對(duì) TestCase 的裝 飾模式擴(kuò)展。下面我們將它們和上
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)學(xué)科研課題申報(bào)書
- 2025年注冊(cè)會(huì)計(jì)師備考的資源利用與試題及答案
- 銀行從業(yè)資格證考試切入點(diǎn)分析試題及答案
- 精心準(zhǔn)備2025年特許金融分析師考試試題及答案
- 項(xiàng)目管理考試的心理素質(zhì)要求試題及答案
- 財(cái)務(wù)與審計(jì)的關(guān)聯(lián)與差異試題及答案
- 項(xiàng)目目標(biāo)驗(yàn)證與跟蹤機(jī)制的構(gòu)建試題及答案
- 注冊(cè)會(huì)計(jì)師計(jì)算題試題及答案解析
- 教師課題研申報(bào)書
- 理財(cái)師與投資者的信任關(guān)系2025年國(guó)際金融理財(cái)師考試試題及答案
- 注冊(cè)會(huì)計(jì)師財(cái)務(wù)成本管理章節(jié)練習(xí)題三
- 第十一單元課題1化學(xué)與人體健康-2024-2025學(xué)年九年級(jí)化學(xué)人教版(2024)下冊(cè)
- 《子宮內(nèi)膜異位》課件
- 文旅場(chǎng)所安全培訓(xùn)課件
- 《商標(biāo)侵權(quán)案例分析》課件
- 腦梗死的護(hù)理查房
- 導(dǎo)游講解的常用技巧教案
- 算法設(shè)計(jì)與分析 課件 6.3-貪心法應(yīng)用-活動(dòng)安排問(wèn)題
- 車位租賃協(xié)議
- 肺結(jié)節(jié)診治中國(guó)專家共識(shí)(2024年版)解讀
- 地震監(jiān)測(cè)設(shè)備使用安全檢查表
評(píng)論
0/150
提交評(píng)論