




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一、選擇題
1、關(guān)于微軟的三層架構(gòu),下列說(shuō)法錯(cuò)誤的是:
A、分層的目的是為了實(shí)現(xiàn)“高內(nèi)聚、低耦合”;
B、采用“分而治之”的思想,把任務(wù)劃分成子任務(wù);
C、唯一的缺陷是降低了代碼的可復(fù)用性;
D、易于控制,易于延展,易于多人進(jìn)行項(xiàng)目合作。
2、關(guān)于用戶故事,下列說(shuō)法不恰當(dāng)?shù)氖牵?/p>
A、用戶故事就是正在進(jìn)行的關(guān)于需求談話的助記符;
B、是一個(gè)計(jì)劃工具;
C、用戶故事分解需求,一個(gè)用戶故事就是一個(gè)小的需求模塊;
D、“點(diǎn)數(shù)”能精確其實(shí)現(xiàn)代價(jià)。
3、關(guān)于測(cè)試驅(qū)動(dòng)開發(fā),下述各項(xiàng)正確的是:
A、編寫所有產(chǎn)品代碼的目的都是為了使失敗的單元測(cè)試能夠通過(guò);
B、編寫完代碼后必須馬上編寫單元測(cè)試
C、能夠促使模塊之間加強(qiáng)耦合;
D、防止模塊之間隔離。
4、關(guān)于計(jì)劃游戲,下述說(shuō)法不恰當(dāng)?shù)氖牵?/p>
A、計(jì)劃游戲的本質(zhì)是劃分業(yè)務(wù)人員和開發(fā)人員之間的職責(zé);
B、開發(fā)人員決定選擇哪些用戶故事
C、開發(fā)人員基于上次迭代,為客戶提供一個(gè)“預(yù)算”;
D、跟蹤速度是最為重要的管理手段之一。
5、關(guān)于簡(jiǎn)單設(shè)計(jì),下列說(shuō)法錯(cuò)誤的是:
A、用最簡(jiǎn)單的辦法實(shí)現(xiàn)每個(gè)小需求,前提是按照這些簡(jiǎn)單設(shè)計(jì)開發(fā)出來(lái)的軟件必須
通過(guò)測(cè)試。
B、設(shè)計(jì)只要能滿足系統(tǒng)和客戶在當(dāng)下的需求就可以了,不需要任何畫蛇添足的設(shè)
計(jì),而且所有這些設(shè)計(jì)都將在后續(xù)的開發(fā)過(guò)程中被不斷地重整和優(yōu)化。
C、對(duì)于設(shè)計(jì)結(jié)構(gòu)必須足夠簡(jiǎn)單/靈活,適應(yīng)未來(lái)需求變化;
D、絕不能容忍重復(fù)的代碼。
6、關(guān)于軟件重構(gòu),下列說(shuō)法不恰當(dāng)?shù)氖牵?/p>
A、重構(gòu)是在不改變代碼外在行為的前提下對(duì)代碼做出修改,以改進(jìn)代碼的內(nèi)部結(jié)構(gòu)
的過(guò)程。
B、每個(gè)改造都是微不足道的,但是這些所有的改造迭加在一起,就形成了對(duì)系統(tǒng)設(shè)
計(jì)和架構(gòu)顯著的改進(jìn)。
C、每次重構(gòu)進(jìn)行完后,必須運(yùn)行單元測(cè)試;
D、重構(gòu)耗時(shí)費(fèi)力,不宜頻繁進(jìn)行。
7、關(guān)于軟件設(shè)計(jì)臭味,下列說(shuō)法錯(cuò)誤的是:
A、僵化性是指軟件運(yùn)行性能很差;
B、如果設(shè)計(jì)中包含有當(dāng)前沒(méi)有用的組成部分,它就包含不必要的復(fù)雜性;
C、晦澀性是指模塊難以理解;
D、不能因?yàn)樵O(shè)計(jì)的退化去責(zé)怪需求的變化。
8、關(guān)于依賴倒置原則,下列說(shuō)法不恰當(dāng)?shù)氖牵?/p>
A、高層模塊不應(yīng)該依賴于低層模塊,二者都應(yīng)該依賴于抽象;
B、抽象應(yīng)該依賴于細(xì)節(jié);
C、要針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程;
D、任何變量都不應(yīng)該指向具體類。
9、關(guān)于迪米特法則,下列說(shuō)法錯(cuò)誤的是:
A、一個(gè)對(duì)象應(yīng)當(dāng)對(duì)其他對(duì)象有盡可能少的了解;
B、每一個(gè)軟件單位對(duì)其它的單位都只有最少的知識(shí),而且僅局限于那些與本單位密
切相關(guān)的軟件單位。
C、迪米特法則的核心觀念就是類間解耦,雖然解耦會(huì)部分降低類的復(fù)用性,但是可
以很好的避免僵化性;
D、陌生的類最好不要作為局部變量的形式出現(xiàn)在類的內(nèi)部。
10、關(guān)于職責(zé)鏈模式,下列說(shuō)法不正確的是:
A、職責(zé)鏈可以是一條直線、一個(gè)環(huán)或者一個(gè)樹形結(jié)構(gòu);
B、避免將一個(gè)請(qǐng)求的發(fā)送者與接收者耦合在一起
C、不純的職責(zé)鏈:一個(gè)具體處理者對(duì)象只能在兩個(gè)行為中選擇一個(gè)-要么承擔(dān)全部責(zé)
任,要么將責(zé)任推給下家;
D、職責(zé)鏈模式給對(duì)象職責(zé)的分配帶來(lái)更多的靈活性。
11、為了能成功地實(shí)施XP,XP制定的四個(gè)準(zhǔn)則不包括:
A、文檔B、簡(jiǎn)單C、反饋D、勇氣
12、關(guān)于用戶故事,下列說(shuō)法正確的是:
A、用戶故事就是正在開發(fā)的項(xiàng)目的腳本;
B、是一個(gè)可行性分析工具;
C、用戶故事分解需求,一個(gè)用戶故事就是一個(gè)小的需求模塊;
D、“點(diǎn)數(shù)”能精確其實(shí)現(xiàn)代價(jià)。
13、關(guān)于代碼重構(gòu),下面的敘述錯(cuò)誤的是
A、不斷修改的代碼往往會(huì)退化/腐化,導(dǎo)致難于維護(hù),因此需要重構(gòu)。
B、每個(gè)改造都是微不足道的,但是這些所有的改造迭加在一起,就形成了對(duì)系統(tǒng)設(shè)計(jì)和架
構(gòu)顯著的改進(jìn)。
C、每次重構(gòu)進(jìn)行完后,必須運(yùn)行單元測(cè)試,保證重構(gòu)沒(méi)有造成任何破壞,然后再去做下一
次重構(gòu)。
D、重構(gòu)是對(duì)代碼結(jié)構(gòu)的全面優(yōu)化,每次改動(dòng)往往較大,耗費(fèi)也較大,因此重構(gòu)頻率不宜過(guò)
于頻繁。
14、關(guān)于工廠方法模式,下述觀點(diǎn)中不合適的是:
A、是創(chuàng)建型模式的一種B、核心的工廠類不負(fù)責(zé)創(chuàng)建對(duì)象
C、具體工廠類包含業(yè)務(wù)邏輯D、工廠類與產(chǎn)品類往往具有平行的等級(jí)結(jié)構(gòu)
15、關(guān)于職責(zé)鏈模式,下列說(shuō)法不正確的是:
A、職責(zé)鏈可以是一條直線、一個(gè)環(huán)或者一個(gè)樹形結(jié)構(gòu);
B、避免將一個(gè)請(qǐng)求的發(fā)送者與接收者耦合在一起
C、不純的職責(zé)鏈:一個(gè)具體處理者對(duì)象只能在兩個(gè)行為中選擇一個(gè)-要么承擔(dān)全部責(zé)任,要
么將責(zé)任推給下家;
D、職責(zé)鏈模式給對(duì)象職責(zé)的分配帶來(lái)更多的靈活性。
16、微軟推薦的三層架構(gòu)不包括()
A、業(yè)務(wù)邏輯層B、實(shí)體-聯(lián)系層C、數(shù)據(jù)訪問(wèn)層D、表示層(界面層)
17、為了能成功地實(shí)施XP,XP制定的四個(gè)準(zhǔn)則不包括:()
A、文檔B、簡(jiǎn)單C、反饋D、勇氣
18、在XP項(xiàng)目中,關(guān)于代碼重構(gòu),下面的敘述錯(cuò)誤的是:()
A、不斷修改的代碼往往會(huì)退化/腐化,導(dǎo)致難于維護(hù),因此需要重構(gòu)。
B、每個(gè)改造都是微不足道的,但是這些所有的改造迭加在一起,就形成了對(duì)系統(tǒng)設(shè)計(jì)
和架構(gòu)顯著的改進(jìn)。
C、每次重構(gòu)進(jìn)行完后,必須運(yùn)行單元測(cè)試,保證重構(gòu)沒(méi)有造成任何破壞,然后再去做
下一次重構(gòu)。
D、重構(gòu)是對(duì)代碼結(jié)構(gòu)的全面優(yōu)化,每次改動(dòng)往往較大,耗費(fèi)也較大,因此重構(gòu)頻率不
宜過(guò)于頻繁。
19、關(guān)于單一職責(zé)原則,下述敘述錯(cuò)誤的是:()
A、就一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因。
B、過(guò)多職責(zé)耦合到一起后,一個(gè)職責(zé)的變化可能會(huì)削弱或者抑制這個(gè)類完成其他職責(zé)
的能力。
C、簡(jiǎn)言之,就是加大類之間的耦合,減少類內(nèi)部的內(nèi)聚。
D、軟件設(shè)計(jì)真正要做的許多內(nèi)容,就是發(fā)現(xiàn)職責(zé)并把那些職責(zé)互相分離.
20、關(guān)于替代原則,下述敘述錯(cuò)誤的是:()
A、只有父類能完全替代子類才能保證抽象父類的復(fù)用和擴(kuò)展。
B、替代原則指導(dǎo)繼承,是繼承的基石。
C、對(duì)于LSP的違反常常會(huì)導(dǎo)致以明顯違反OCP。
D、繼承依賴的IS-A關(guān)系是就行為方式而言的。
21、關(guān)于依賴倒置原則,下述敘述錯(cuò)誤的是:()
A、高層模塊不應(yīng)該依賴于低層模塊,二者都應(yīng)該依賴于抽象。
B、抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。
C、要針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程。
D、高層模塊實(shí)現(xiàn)了在低層模塊中聲明并被低層模塊調(diào)用的接口。
22、關(guān)于迪米特法則,下述說(shuō)法中不恰當(dāng)?shù)氖牵海ǎ?/p>
A、一個(gè)對(duì)象應(yīng)當(dāng)對(duì)其他對(duì)象有盡可能少的了解。
B、只與你“直接的朋友們”通信。
C、迪米特法則的核心觀念就是類間解耦。
D、應(yīng)用符合迪米特法則后,類之間就是弱耦合,從而系統(tǒng)的不同模塊之間的通信效率
會(huì)相應(yīng)的提高。
23、關(guān)于工廠方法模式,下述觀點(diǎn)中不合適的是:()
A、是創(chuàng)建型模式的一種
B、核心的工廠類不負(fù)責(zé)創(chuàng)建對(duì)象
C、具體工廠類包含業(yè)務(wù)邏輯
D、工廠類與產(chǎn)品類往往具有平行的等級(jí)結(jié)構(gòu)
24、關(guān)于原型模式,下述觀點(diǎn)不正確的是:()
A、利用.Net中的McmberwiseClone()可以實(shí)現(xiàn)淺表復(fù)制
B、利用序列化和反序列化不能實(shí)現(xiàn)深度復(fù)制
C、允許動(dòng)態(tài)增加或減少產(chǎn)品類,增加新產(chǎn)品對(duì)整個(gè)結(jié)構(gòu)沒(méi)有影響
D、擴(kuò)展功能:可以帶有原型管理器
25、關(guān)于橋接模式,下述說(shuō)法不正確的是:()
A、將抽象部分與實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化
B、將一個(gè)事物中多個(gè)維度的變化分離
C、Implementor的接口必須與Abstraction的接口相同
D、使用“對(duì)象間的組合關(guān)系”解耦了抽象和實(shí)現(xiàn)之間固有的綁定關(guān)系
26、關(guān)于組合模式,下述說(shuō)法不恰當(dāng)?shù)氖牵海ǎ?/p>
A、組合模式中,數(shù)據(jù)之間的關(guān)系是典型的網(wǎng)狀結(jié)構(gòu)
B、所有的節(jié)點(diǎn)可以采用一致的處理方法
C、安全的組合模式中,實(shí)際上違反了接口獨(dú)立原則
D、透明的組合模式,在實(shí)際執(zhí)行過(guò)程中,存在隱患。
27、關(guān)于裝飾模式,下述說(shuō)法不恰當(dāng)?shù)氖牵海ǎ?/p>
A、動(dòng)態(tài)地給一個(gè)對(duì)象增加一些額外的職責(zé)
B、比單純地使用繼承方式更為靈活
C、Decorator和Component的關(guān)系,首先是繼承關(guān)系,然后是組合關(guān)系
D、裝飾模式雖然產(chǎn)生的對(duì)象數(shù)量較少,但是會(huì)生成大量較小的類
28、關(guān)于模板方法模式,下述敘述不恰當(dāng)?shù)氖牵海ǎ?/p>
A、定義一個(gè)操作中的算法的骨架,而將一些步驟的實(shí)現(xiàn)延遲到子類中。
B、強(qiáng)調(diào)使用組合替代繼承
C、將行為盡量移動(dòng)到結(jié)構(gòu)的高端
D、反向控制結(jié)構(gòu)(IoC)是模版方法模式的典型應(yīng)用
29、關(guān)于命令模式,下述說(shuō)法不正確的是:()
A、解決了“行為請(qǐng)求者”與“行為實(shí)現(xiàn)者”之間的緊耦合
B、將一些行為命令化,參數(shù)化
C、可以實(shí)現(xiàn)Undo和Redo
D、可能造成命令執(zhí)行者對(duì)象過(guò)多是該模式的主要缺點(diǎn)
30、關(guān)于觀察者模式,下述說(shuō)法不恰當(dāng)?shù)氖牵海ǎ?/p>
A、解決的是對(duì)象間的一種多對(duì)多的依賴關(guān)系
B、既要保證對(duì)象間的低耦合,又能夠維持行動(dòng)的協(xié)調(diào)一致,保證高度的協(xié)作
C、很好的體現(xiàn)了依賴倒置原則
D、在C#的實(shí)現(xiàn)方式中,委托定義可以充當(dāng)抽象的Observer接口
二、判斷題
1.建造者模式要求復(fù)雜對(duì)象的各個(gè)部分經(jīng)常面臨著劇烈的變化,但是將它們組合在一起的算法卻
相對(duì)穩(wěn)定。()
2.代理模式中,當(dāng)代理對(duì)象將客戶端請(qǐng)求發(fā)送給真實(shí)對(duì)象之前或之后往往會(huì)添加一些額外的操作。
()
3.在享元模式中,外部狀態(tài)可以共享,但是內(nèi)部狀態(tài)不能共享。()
4.外觀模式定義了一個(gè)高層接口,這個(gè)接口使得復(fù)雜子系統(tǒng)更加容易使用。()
5.觀察者模式中,如果在被觀察者之間有循環(huán)依賴,可能導(dǎo)致“死鎖()
6.軟件體系結(jié)構(gòu)設(shè)計(jì)的一個(gè)核心問(wèn)題是“復(fù)用"。()
7.實(shí)體類實(shí)現(xiàn)所謂的對(duì)象關(guān)系映射(簡(jiǎn)稱ORM),是為了解決面向?qū)ο蟮念惻c關(guān)系數(shù)據(jù)庫(kù)的表之
間,存在的不匹配的現(xiàn)象。()
8.合適的工具對(duì)成功來(lái)說(shuō)是重要的,敏捷方法建議選用綜合功能比較全面的工具。()
9.極限編程要求每2周發(fā)布一次軟件,稱為一次發(fā)布周期。()
10.用戶故事的驗(yàn)收測(cè)試是在就要實(shí)現(xiàn)該用戶故事之前或?qū)崿F(xiàn)該用戶故事的同時(shí)進(jìn)行編寫的。
()
11.放置釣鉤(hook)以適應(yīng)將來(lái)的軟件需求變化,是開放-封閉原則的典型應(yīng)用。()
12.繼承依賴的IS-A關(guān)系是就具體的行為方式而言的。()
13.在設(shè)計(jì)類結(jié)構(gòu)時(shí),組合優(yōu)于繼承。()
14.設(shè)計(jì)模式描述了軟件設(shè)計(jì)過(guò)程中某一類常見問(wèn)題的一般性的解決方案。()
15.簡(jiǎn)單工廠模式完全符合開放-封閉原則。()
16.在VS中,一個(gè)Project可以包含多個(gè)Solution。()
17.敏捷開發(fā)認(rèn)為:完備的文檔是保證軟件系統(tǒng)質(zhì)量的重要手段。()
18.XP項(xiàng)目實(shí)施過(guò)程中,每個(gè)人應(yīng)該分工明確,各自簽領(lǐng)自己擅長(zhǎng)的任務(wù)。()
19.在XP中,隱喻通常可以歸結(jié)為一個(gè)名字系統(tǒng)。()
20.在敏捷開發(fā)中,設(shè)計(jì)和構(gòu)架的過(guò)程是持續(xù)不斷的。()
21.在代碼中放置“Hook”是開放/封閉原則實(shí)施的主要手段。()
22.ISP原則認(rèn)為,接口應(yīng)該盡可能簡(jiǎn)單,一個(gè)接口只做一件事情。()
23.為減弱類間耦合,LoD提倡多使用序列化(Serialize)功能。()
24.簡(jiǎn)單工廠模式違反開放/封閉原則,而工廠方法模式符合開放/封閉原則,且完全不需要判
斷工廠的類型。()
25.相比適配器模式,橋接模式實(shí)際上是個(gè)“事后諸葛亮”。()
三、簡(jiǎn)答題
1、簡(jiǎn)述實(shí)體類的概念及其作用。
2、敏捷開發(fā)宣言。
3、簡(jiǎn)述XP的短交付周期的概念。
4、測(cè)試驅(qū)動(dòng)開發(fā)的概念及其積極作用。
5、XP中簡(jiǎn)單設(shè)計(jì)的概念及其指導(dǎo)原則。
6、簡(jiǎn)述常見的設(shè)計(jì)臭味。
7、簡(jiǎn)述開放/封閉原則。
8、簡(jiǎn)述什么是設(shè)計(jì)模式。
9、試給出抽象工廠模式的結(jié)構(gòu)圖及其角色描述。
10、簡(jiǎn)述觀察者模式的定義與結(jié)構(gòu)。
1k軟件體系結(jié)構(gòu)的概念及構(gòu)成。
12、什么是結(jié)對(duì)編程?
13、測(cè)試驅(qū)動(dòng)開發(fā)遵循的3條簡(jiǎn)單的規(guī)則是什么?
14、簡(jiǎn)述適配器模式的定義及對(duì)象適配器的結(jié)構(gòu)。
15、簡(jiǎn)述三層架構(gòu)開發(fā)模式及其優(yōu)點(diǎn)。
16、每個(gè)軟件模塊都應(yīng)該具有的三項(xiàng)職責(zé)是什么?
17、為什么說(shuō)“源代碼就是設(shè)計(jì)!”?
18、簡(jiǎn)述單一職責(zé)原則。
19、簡(jiǎn)述依賴倒置原則。
20、什么是面向?qū)ο蟮娜髾C(jī)制?
21、簡(jiǎn)述簡(jiǎn)單工廠模式的優(yōu)缺點(diǎn)。
22、簡(jiǎn)述XP中的完整團(tuán)隊(duì)概念。
四、設(shè)計(jì)題
1、試給出多線程安全的“懶漢式”和“餓漢式”單件模式的代碼。
2、設(shè)計(jì)一個(gè)命令行狀態(tài)下運(yùn)行的運(yùn)算程序,目前支持加減乘除*,/)等四則運(yùn)算,
將來(lái)還可能添加求余數(shù)(盼運(yùn)算,請(qǐng)以學(xué)過(guò)的設(shè)計(jì)模式設(shè)計(jì)一個(gè)程序結(jié)構(gòu),先畫出類圖,再寫
出代碼。
要求:(1)符合開放/封閉原則:
(2)業(yè)務(wù)邏輯和界面邏輯必須分開;
(3)先設(shè)計(jì)只支持四則運(yùn)算的程序,再說(shuō)明如何升級(jí)程序加上求余數(shù)(%)運(yùn)算。
3、銀行帳戶改動(dòng)通知系統(tǒng):帳戶的余額發(fā)生變化時(shí),需要通過(guò)手機(jī)短信和E-Mail的方式
通知到用戶本人,試用所學(xué)過(guò)的設(shè)計(jì)模式實(shí)現(xiàn)該系統(tǒng)。
要求:(1)指出使用的設(shè)計(jì)模式的名稱;
(2)畫出該設(shè)計(jì)模式的類結(jié)構(gòu)圖;
(3)給出系統(tǒng)模擬實(shí)現(xiàn)的代碼;
(4)設(shè)計(jì)符合開放/封閉原則。
4.最簡(jiǎn)單的手機(jī)(SimplePhone)在接收到來(lái)電的時(shí)候,會(huì)發(fā)出聲音提醒主人,現(xiàn)在需要為
該手機(jī)添加一項(xiàng)功能,即在接收到來(lái)電的時(shí)候,除了有聲音還能產(chǎn)生震動(dòng)(JarPhone),還
可以得到更高級(jí)的手機(jī)(ComplexPhone),來(lái)電的時(shí)候,它不僅能夠發(fā)聲,產(chǎn)生震動(dòng),而
且有燈光閃爍提示。試用學(xué)過(guò)的設(shè)計(jì)模式實(shí)現(xiàn)該系統(tǒng)。
要求:給出設(shè)計(jì)模式的名稱及系統(tǒng)結(jié)構(gòu)的類圖。
5、什么是開放封閉原則?簡(jiǎn)要說(shuō)明如何實(shí)現(xiàn)該原則。分別討論三種工廠模式(簡(jiǎn)單工廠、
工廠方法和抽象工廠)在不使用反射技術(shù)時(shí),是否支持開放封閉原則。
6、在某系統(tǒng)的圖表處理模塊中,需要將圖表(Chart)顯示和圖表數(shù)據(jù)采集
(DataCollection)分離,系統(tǒng)可支持多種圖表(如柱狀圖BarChart,餅狀圖PieChart等),
也提供了多種數(shù)據(jù)采集方式,例如可以從文本文件中讀取數(shù)據(jù)(TxtDataCollection),也可
以從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)(DBDataCoIlection),還可以從Excel文件中獲取數(shù)據(jù)
(ExcelDataCollection),如果需要從Excel文件中獲取數(shù)據(jù),則需要調(diào)用與Excel相關(guān)的
APL例如讀取Excel文件的ExcelReader類,而這個(gè)API是現(xiàn)有系統(tǒng)所不具備的。試用學(xué)
過(guò)的2種設(shè)計(jì)模式來(lái)實(shí)現(xiàn)該系統(tǒng)。
要求:給出設(shè)計(jì)模式的名稱及系統(tǒng)結(jié)構(gòu)的類圖。
一、選擇題
CDABCDABCCACDCCBADCADDCBCADBDA
二、判斷題
VVXVVVVxXVXVVVxXXXXVVXVXXX
三、簡(jiǎn)答題
1、簡(jiǎn)述實(shí)體類的概念及其作用。
實(shí)體類實(shí)現(xiàn)所謂的對(duì)象關(guān)系映射(ObjectRelationalMapping,簡(jiǎn)稱ORM),是
為了解決面向?qū)ο蟮念惻c關(guān)系數(shù)據(jù)庫(kù)的表之間,存在的不匹配的現(xiàn)象,通過(guò)使
用描述對(duì)象和關(guān)系之間映射的元數(shù)據(jù),在程序中的類對(duì)象,與關(guān)系數(shù)據(jù)庫(kù)的表
之間建立持久的關(guān)系,用于在程序中描述數(shù)據(jù)庫(kù)表。本質(zhì)上就是將數(shù)據(jù)從一種
形式轉(zhuǎn)換到另外一種形式。
簡(jiǎn)單地說(shuō),就是描述一個(gè)業(yè)務(wù)實(shí)體的類。實(shí)體類對(duì)象是現(xiàn)實(shí)世界中實(shí)體對(duì)象在
計(jì)算機(jī)中的表示,在層與層之間以及層內(nèi)模塊間進(jìn)行數(shù)據(jù)傳輸。
2、敏捷開發(fā)宣言。
我們正在通過(guò)親身實(shí)踐以及幫助他人實(shí)踐,揭示更好的軟件開發(fā)方法,通過(guò)這
項(xiàng)工作,我們認(rèn)為:
個(gè)體和交互勝過(guò)過(guò)程和工具
可以工作的軟件勝過(guò)面面俱到的文檔
客戶合作勝過(guò)合同談判
響應(yīng)變化勝過(guò)遵循計(jì)劃
雖然右項(xiàng)也有其價(jià)值,但我們認(rèn)為左項(xiàng)更加重要。
3、簡(jiǎn)述XP的短交付周期的概念。
迭代計(jì)戈U:XP項(xiàng)目每?jī)芍芙桓兑淮慰梢怨ぷ鞯能浖C績(jī)芍艿牡紝?shí)現(xiàn)了利
益相關(guān)者的一些需求,在每次迭代結(jié)束時(shí),會(huì)給利益相關(guān)者演示迭代生成的系
統(tǒng),以得到他們的反饋。迭代是一次較小的交付,可能會(huì)被加入到產(chǎn)品中,也
可能不會(huì)。每個(gè)周期(Iteration)開發(fā)的需求都是用戶最需要的東西。
發(fā)布計(jì)劃:XP團(tuán)隊(duì)通常會(huì)創(chuàng)建一個(gè)計(jì)劃來(lái)規(guī)劃隨后大約6次迭代的內(nèi)容。一次
發(fā)布通常需要2-3個(gè)月的工作。它表示了一次較大的交付,通常此次交付會(huì)被
加入到產(chǎn)品中。發(fā)布計(jì)劃不是一成不變的,客戶可以隨時(shí)改變計(jì)劃的內(nèi)容,他
可以取消用戶故事,編寫新的用戶故事,或者改變用戶故事的優(yōu)先級(jí)別。但是
客戶應(yīng)該更改后面迭代的內(nèi)容,盡量不要更改下一次迭代。
4、測(cè)試驅(qū)動(dòng)開發(fā)的概念及其積極作用。
編寫所有產(chǎn)品代碼的目的都是為了使失敗的單元測(cè)試能夠通過(guò)。首先編寫一個(gè)
單元測(cè)試,由于它要測(cè)試的功能還不存在,因此它會(huì)運(yùn)行失敗,然后,編寫代
碼使測(cè)試通過(guò)。編寫測(cè)試用例和代碼之間的更迭速度是很快的,基本上在幾分
鐘左右。
積極的影響:
(1)程序中的每一項(xiàng)功能都有測(cè)試來(lái)驗(yàn)證它的操作的正確性。
(2)首先編寫測(cè)試可以迫使我們使用不同的觀察點(diǎn)一程序調(diào)用者的角度,
可以設(shè)計(jì)出便于調(diào)用的軟件
(3)通過(guò)首先編寫測(cè)試,可以迫使自己把程序設(shè)計(jì)為可測(cè)試的,迫使我們
解除軟件中的耦合(forceustodecouplethesoftware)
(4)測(cè)試可以作為一種無(wú)價(jià)的文檔形式,而且可以提供范例
5、XP中簡(jiǎn)單設(shè)計(jì)的概念及其指導(dǎo)原則。
XP團(tuán)隊(duì)使他們的設(shè)計(jì)盡可能地簡(jiǎn)單、具有表現(xiàn)力(expressive)。此外,他們僅
僅關(guān)注于計(jì)劃在本次迭代中要完成的用戶故事。他們不會(huì)考慮那些未來(lái)的用戶
故事。
XP要求用最簡(jiǎn)單的辦法實(shí)現(xiàn)每個(gè)小需求,前提是按照這些簡(jiǎn)單設(shè)計(jì)開發(fā)出
來(lái)的軟件必須通過(guò)測(cè)試。這些設(shè)計(jì)只要能滿足系統(tǒng)和客戶在當(dāng)下的需求就可以
了,不需要任何畫蛇添足的設(shè)計(jì),而且所有這些設(shè)計(jì)都將在后續(xù)的開發(fā)過(guò)程中
被不斷地重整和優(yōu)化。
3條XP指導(dǎo)原則:
(1)考慮能工作的最簡(jiǎn)單的事情
盡量考慮最簡(jiǎn)單的方法實(shí)現(xiàn)當(dāng)前的用戶故事。
(2)你不需要它
將來(lái)會(huì)用到,現(xiàn)在不考慮,不得不用時(shí)再添加;
(3)一次,并且只有一次
極限編程者絕不能容忍重復(fù)的代碼
6、簡(jiǎn)述常見的設(shè)計(jì)臭味。
僵化性是指難以對(duì)軟件進(jìn)行改動(dòng),即使簡(jiǎn)單的改動(dòng);脆弱性是指,在進(jìn)行一個(gè)
改動(dòng)時(shí),程序的許多地方就可能出現(xiàn)問(wèn)題;牢固性是指,設(shè)計(jì)中包含了對(duì)其他
系統(tǒng)有用的部分,但是要把這些部分從系統(tǒng)中分離出來(lái)所需要的努力和風(fēng)險(xiǎn)是
巨大的;軟件的粘滯性和環(huán)境的粘滯性:當(dāng)那些可以保持系統(tǒng)設(shè)計(jì)的方法比那
些拼湊手法更難應(yīng)用的時(shí)候,就表明設(shè)計(jì)具有高的粘滯性,當(dāng)開發(fā)環(huán)境遲鈍、
低效時(shí),就會(huì)產(chǎn)生環(huán)境的粘滯性;如果設(shè)計(jì)中包含有當(dāng)前沒(méi)有用的組成部分,
它就包含不必要的復(fù)雜性;不必要的重復(fù),剪切和粘貼也許是有用的文本編輯
操作,但是它們卻是災(zāi)難性的代碼編輯操作;晦澀性是指模塊難以理解。
7、簡(jiǎn)述開放/封閉原則。
開放-封閉原則:軟件實(shí)體(類、模塊、函數(shù)等)應(yīng)該是可以擴(kuò)展的,但是不可
修改。
(1)對(duì)于擴(kuò)展是開放的-這意味著模塊的行為是可擴(kuò)展的。我們可以根據(jù)需求
的變化來(lái)改變模塊的功能
(2)對(duì)于修改是封閉的-對(duì)模塊行為進(jìn)行擴(kuò)展時(shí),不必改動(dòng)模塊的源代碼或二
進(jìn)制代碼(需要重新編譯即為修改)
把一個(gè)功能的通用部分和實(shí)現(xiàn)細(xì)節(jié)清晰的分離開來(lái);通過(guò)派生來(lái)擴(kuò)展功能。
8、簡(jiǎn)述什么是設(shè)計(jì)模式。
每一個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問(wèn)題,以及該問(wèn)題的解決方
案的核心。
設(shè)計(jì)模式描述了軟件設(shè)計(jì)過(guò)程中某一類常見問(wèn)題的一般性的解決方案。-經(jīng)驗(yàn)
性的好的方案
面向?qū)ο笤O(shè)計(jì)模式描述了面向?qū)ο笤O(shè)計(jì)過(guò)程中、特定場(chǎng)景下、類與相互通信的
對(duì)象之間常見的組織關(guān)系。
9、試給出抽象工廠模式的結(jié)構(gòu)圖及其角色描述。
所謂的抽象工廠是指一個(gè)工廠等級(jí)結(jié)構(gòu)
可以創(chuàng)建出分屬于不同產(chǎn)品等級(jí)結(jié)構(gòu)的
一個(gè)產(chǎn)品族中的所有對(duì)象。
抽象工廠(AbstractFactory)角色:擔(dān)
任這個(gè)角色的是工廠方法模式的核心,
它是與應(yīng)用系統(tǒng)商業(yè)邏輯無(wú)關(guān)的(給出
創(chuàng)建對(duì)象的幾個(gè)方法的說(shuō)明)。
具體工廠(ConcreteFactory)角色:這
個(gè)角色直接在客戶端的調(diào)用下創(chuàng)建多個(gè)
具體產(chǎn)品的實(shí)例。這個(gè)角色含有選擇合
適的產(chǎn)品對(duì)象的邏輯,而這個(gè)邏輯是與
應(yīng)用系統(tǒng)的商業(yè)邏輯緊密相關(guān)的(實(shí)現(xiàn)
具體的創(chuàng)建方法)。
抽象產(chǎn)品(AbstractProduct)角色:擔(dān)
任這個(gè)角色的類是工廠方法模式所創(chuàng)建
的具體對(duì)象的父類,或它們共同擁有的
接口一給出產(chǎn)品對(duì)象業(yè)務(wù)上的共同點(diǎn)。
具體產(chǎn)品(ConcreteProduct)角色:抽象工廠模式所創(chuàng)建的任何產(chǎn)品對(duì)象都是
某一個(gè)具體產(chǎn)品類的實(shí)例。這是客戶端最終需要的東西,其內(nèi)部一定充滿了應(yīng)
用系統(tǒng)的商業(yè)邏輯。
10、簡(jiǎn)述觀察者模式的
結(jié)構(gòu)。
定義對(duì)象間的一種一對(duì)
多的依賴關(guān)系,以便當(dāng)
一個(gè)對(duì)象的狀態(tài)發(fā)生改
變時(shí),所有依賴于它的
對(duì)象都得到通知并自動(dòng)
更新。
抽象主題(Subject)角
色:抽象主題角色把所
有對(duì)觀察考對(duì)象的引用
保存在一個(gè)聚集里,每
個(gè)主題都可以有任何數(shù)
量的觀察者。抽象主題
提供一個(gè)接口,可以增
加和刪除觀察者對(duì)象,
主題角色又叫做抽象被觀察者(Observable)角色,一般用一個(gè)抽象類或者一個(gè)
接口實(shí)現(xiàn)。
抽象觀察者(Observer)角色:為所有的具體觀察者定義一個(gè)接口,在得到主
題的通知時(shí)更新自己。這個(gè)接口叫做更新接口。抽象觀察者角色一般用一個(gè)抽
象類或者一個(gè)接口實(shí)現(xiàn)。在這個(gè)示意性的實(shí)現(xiàn)中,更新接口只包含一個(gè)方法
(即Update。方法),這個(gè)方法叫做更新方法。
具體主題(ConcreteSubject)角色:將有關(guān)狀態(tài)存入具體現(xiàn)察者對(duì)象;在具體
主題的內(nèi)部狀態(tài)改變時(shí),給所有登記過(guò)的觀察者發(fā)出通知。具體主題角色又叫
做具體被觀察者角色(ConcreteObservable)。具體主題角色通常用一個(gè)具體子
類實(shí)現(xiàn)。
具體觀察者(ConcreteObserver)角色:存儲(chǔ)與主題的狀態(tài)自恰的狀態(tài)。具體現(xiàn)
察者角色實(shí)現(xiàn)抽象觀察者角色所要求的更新接口,以便使本身的狀態(tài)與主題的
狀態(tài)相協(xié)調(diào)。如果需要,具體現(xiàn)察者角色可以保存一個(gè)指向具體主題對(duì)象的引
用。具體觀察者角色通常用一個(gè)具體子類實(shí)現(xiàn)。
11、軟件體系結(jié)構(gòu)的概念及構(gòu)成。
答案:軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包括處理
構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。處理構(gòu)件負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行加工;數(shù)據(jù)構(gòu)件是被加
工的信息;連接構(gòu)件把體系結(jié)構(gòu)的不同部分組合連接起來(lái)。
12、什么是結(jié)對(duì)編程?
答案:所有產(chǎn)品(production)代碼都是由結(jié)對(duì)的程序員使用同一臺(tái)電腦共同完
成的,結(jié)對(duì)人員中的一位控制鍵盤并輸入代碼,另一位觀察輸入的代碼并尋找
著代碼中的錯(cuò)誤和可以改進(jìn)的地方。兩人頻繁互換角色,結(jié)對(duì)的關(guān)系每天至少
改變一次,以便于每個(gè)程序員在一天中可以在兩個(gè)不同的結(jié)對(duì)中工作,“業(yè)務(wù)
領(lǐng)域?qū)<摇币残枰c團(tuán)隊(duì)中的其他所有成員結(jié)對(duì)。
13、測(cè)試驅(qū)動(dòng)開發(fā)遵循的3條簡(jiǎn)單的規(guī)則是什么?
答案:除非已經(jīng)編寫了一個(gè)不能通過(guò)的單元測(cè)試,否則不編寫任何產(chǎn)品代碼;
只要編寫能夠正好導(dǎo)致測(cè)試不通過(guò)或者編譯失敗的單元測(cè)試就夠了,無(wú)需再
多;
只要編寫能夠正好使失敗的單元測(cè)試通過(guò)的產(chǎn)品代碼就夠了,無(wú)需再多。
遵循上述原則,以非常短的周期(1-2分鐘)迭代;
14、簡(jiǎn)述適配器模式的定義及對(duì)象適配器的結(jié)構(gòu)。
答案:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。Adapter模式使得原本由
于接口不兼容而不能一起工作的那些類可以一起工作。
15、簡(jiǎn)述三層架構(gòu)開發(fā)模式及其優(yōu)點(diǎn)。
微軟推薦的三層結(jié)構(gòu)通常是指數(shù)據(jù)訪問(wèn)層(DAL)、業(yè)務(wù)邏輯層(BLL)和表示
層(UI)o
與網(wǎng)絡(luò)協(xié)議的分層一樣,軟件設(shè)計(jì)也要進(jìn)行分層,分層的目的是為了實(shí)現(xiàn)“高
內(nèi)聚、低耦合”,采用“分而治之”的思想,把任務(wù)劃分成子任務(wù),逐個(gè)解決,
易于控制,易于延展,易于多人進(jìn)行項(xiàng)目合作。
優(yōu)點(diǎn):
不必為了業(yè)務(wù)邏輯上的微小變化而導(dǎo)至整個(gè)程序的修改,只需要修改商業(yè)邏輯
層中的一個(gè)函數(shù)或一個(gè)過(guò)程一靈活,適應(yīng)多變的需求;增強(qiáng)了代碼的可重用
性;便于不同層次的開發(fā)人員之間的合作,只要遵循一定的接口標(biāo)準(zhǔn)就可以進(jìn)
行并行開發(fā)了,最終只要將各個(gè)部分拼接到一起構(gòu)成最終的應(yīng)用程序。
16、每個(gè)軟件模塊都應(yīng)該具有的三項(xiàng)職責(zé)是什么?
它運(yùn)行起來(lái)所完成的功能,這也是該模塊得以完成的原因。
它要應(yīng)對(duì)變化,幾乎所有的模塊在它們的生命周期中都要變化。開發(fā)者有責(zé)任
保證這種改變應(yīng)該盡可能地簡(jiǎn)單。
它要和閱讀它的人進(jìn)行溝通。對(duì)該模塊不熟悉的開發(fā)人員應(yīng)該能夠比較容易地
閱讀并理解它。
17、為什么說(shuō)“源代碼就是設(shè)計(jì)!”?
軟件項(xiàng)目的設(shè)計(jì)是一個(gè)抽象的概念,它和程序的概觀、結(jié)構(gòu)以及每一個(gè)模塊、
類和方法的詳情和結(jié)構(gòu)有關(guān),可以使用許多不同的媒介描繪設(shè)計(jì),但是最終的
體現(xiàn)為源代碼。
Reeves認(rèn)為:
軟件系統(tǒng)的源代碼是它的主要設(shè)計(jì)文檔。
用來(lái)描繪源代碼的圖示只是設(shè)計(jì)的附屬物而不是設(shè)計(jì)本身。
從根本上講,源代碼就是設(shè)計(jì)!
18、簡(jiǎn)述單一職責(zé)原則。
就一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因。
在SRP中,我們把職責(zé)定義為“變化的原因"(areasonforchange)0
軟件設(shè)計(jì)真正要做的許多內(nèi)容,就是發(fā)現(xiàn)職責(zé)并把那些職責(zé)互相分離(找到變化
點(diǎn),并封裝之)。事實(shí)上,我們將要論述的其余原則都會(huì)以這樣或那樣的方式回到
這個(gè)問(wèn)題上。
19、簡(jiǎn)述依賴倒置原則。
高層模塊不應(yīng)該依賴于低層模塊,二者都應(yīng)該依賴于抽象。
抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。
要針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程。
20、什么是面向?qū)ο蟮娜髾C(jī)制?
各種面向?qū)ο缶幊陶Z(yǔ)言相互有別,但都能看到它們對(duì)面向?qū)ο笕髾C(jī)制的支
持,即:“封裝、繼承、多態(tài)”
封裝,隱藏內(nèi)部實(shí)現(xiàn)
繼承,復(fù)用現(xiàn)有代碼,擴(kuò)展已有的行為
多態(tài),改寫已有的行為
21、簡(jiǎn)述簡(jiǎn)單工廠模式的優(yōu)缺點(diǎn)。
優(yōu)點(diǎn):
工廠類含有必要的判斷邏輯,可以決定在什么時(shí)候創(chuàng)建哪一個(gè)產(chǎn)品類的實(shí)例,
客戶端可以免除直接創(chuàng)建產(chǎn)品對(duì)象的責(zé)任,而僅僅"消費(fèi)"產(chǎn)品。簡(jiǎn)單工廠模式
通過(guò)這種做法實(shí)現(xiàn)了對(duì)責(zé)任的分割。
缺點(diǎn):
當(dāng)產(chǎn)品有復(fù)雜的多層等級(jí)結(jié)構(gòu)時(shí),工廠類只有自己,以不變應(yīng)萬(wàn)變,就是模式
的缺點(diǎn)。因?yàn)楣S類集中了所有產(chǎn)品創(chuàng)建邏輯,一旦不能正常工作,整個(gè)系統(tǒng)
都要受到影響。
違反開放/封閉原則:系統(tǒng)擴(kuò)展困難,一旦添加新產(chǎn)品就不得不修改工廠邏輯,
有可能造成工廠邏輯過(guò)于復(fù)雜。
另外,簡(jiǎn)單工廠模式通常使用靜態(tài)工廠方法,這使得無(wú)法由子類繼承,造成工
廠角色無(wú)法形成基于繼承的等級(jí)結(jié)構(gòu)。
22.簡(jiǎn)述XP中的完整團(tuán)隊(duì)概念。
答案:客戶、管理者和開發(fā)人員應(yīng)該緊密地工作在一起,以便彼此知曉對(duì)方所面
臨的問(wèn)題,并共同去解決這些問(wèn)題。XP團(tuán)隊(duì)中的客戶是指定義產(chǎn)品的特性并排
列這些特性優(yōu)先級(jí)的人或者團(tuán)體。最好的情況是客戶和開發(fā)人員在同一個(gè)房間
中工作,次一點(diǎn)的情況是客戶和開發(fā)人員之間的距離在100米內(nèi)。如果確實(shí)無(wú)
法和客戶在一起工作,那么就去尋找能夠在一起工作、愿意并能夠代替真正客
戶的人。
四、設(shè)計(jì)題
1、試給出多線程安全的“懶漢式”和“餓漢式”單件模式的代碼。
publicclassSingleton〃懶漢式
(
〃唯一的實(shí)例對(duì)象,每次訪問(wèn)時(shí)重新讀取instance變量的值
privatestaticvolatileSingletoninstance=null;
privatestaticreadonlyobjectlockHelper=newobject。;“輔助加鎖對(duì)象
privateSingleton?!ㄋ接袠?gòu)造函數(shù),防止外部應(yīng)用使用new方法創(chuàng)建新
的實(shí)例
publicstaticSingletonGetlnstance。//獲取唯一的實(shí)例對(duì)象
{
if(instance==null)//先判斷對(duì)象是否存在-這樣做能夠保證執(zhí)行效
率!
(
lock(lockHelper)//加鎖--創(chuàng)建臨界區(qū)
(
if(instance==null)//加鎖后二次判斷,只允許一個(gè)線程
判斷
instance=newSingleton();
returninstance;
publicclassSingleton〃餓漢式
{
//公共靜態(tài)只讀屬性-依靠系統(tǒng)在加載時(shí)進(jìn)行初始化,對(duì)于多線程環(huán)境
也是安全的
publicstaticreadonlySingletoninstance=newSingleton();
privateSingleton()〃私有構(gòu)造函數(shù),防止外部應(yīng)用使用new方法創(chuàng)建
新的實(shí)例
()
2、設(shè)計(jì)一個(gè)命令行狀態(tài)下運(yùn)行的運(yùn)算程序,目前支持加減乘除*,/)
等四則運(yùn)算,將來(lái)還可能添加求余數(shù)(%)運(yùn)算,請(qǐng)以學(xué)過(guò)的設(shè)計(jì)模式設(shè)計(jì)一個(gè)
程序結(jié)構(gòu),先畫出類圖,再寫出代碼。
要求:(1)符合開放/封閉原則;
(2)業(yè)務(wù)邏輯和界面邏輯必須分開;
(3)先設(shè)計(jì)只支持四則運(yùn)算的程序,再說(shuō)明如何升級(jí)程序加上求余數(shù)
(%)運(yùn)算。
類圖:
代碼:
Operation.es:
///<summary>
///抽象的運(yùn)算基類
///</summary>
publicclassOperation
(
〃二個(gè)運(yùn)算對(duì)象
privatedouble_nuiTiberA;
privatedouble_numberB;
///<summary>
///運(yùn)算數(shù)A
///</summary>
publicdoubleNumberA
(
get{return_numberA;}
set{_numberA=value;}
)
III<summary>
III運(yùn)算數(shù)B
III</summary>
publicdoubleNumberB
get{return_numberB;}
set{_numberB=value;}
)
〃獲取運(yùn)算結(jié)果,此處為虛方法,子類必須重寫
publicvirtualdoubleGetResult()
(
doubleresult=0;
returnresult;
)
)
OperationAdd.es:
///<summary>
〃/加法類,派生自運(yùn)算類,在GetResult方法中具體實(shí)現(xiàn)加法運(yùn)算
III</summary>
publicclassOperationAdd:Operation
(
publicoverridedoubleGetResult。//實(shí)現(xiàn)具體的加法運(yùn)算
(
doubleresult=0;
result=NumberA+NumberB;
returnresult;
)
)
與上面的OperationAdd類似有OperationSub>OperationMuI和OperationDiv
OperationFactory.es:
///<summary>
///運(yùn)算對(duì)象工廠類
///</summary>
publicclassOperationFactory
(
publicstaticOperationCreateOperate(stringoperate)〃根據(jù)傳進(jìn)來(lái)的運(yùn)算
符來(lái)決定創(chuàng)建什么樣的對(duì)象
(
return(Operation)Assembly.Load("程序集名稱”).Createlnstance(轉(zhuǎn)
換運(yùn)算符為類名稱(operate));
)
主程序:
classProgram
{
staticvoidMain(string[]args)
〃輸入運(yùn)算對(duì)象和運(yùn)算符
Console.Write。請(qǐng)輸入數(shù)字A:n);
stringstrNumberA=Console.ReadLine();
Console.Write(”請(qǐng)輸入運(yùn)算符*,/,%):n);
stringstrOperate=Console.ReadLine();
Console.Write("請(qǐng)輸入數(shù)字B:n);
stringstrNumberB=Console.ReadLine();
〃由工廠創(chuàng)建運(yùn)算對(duì)象
Operationoperate=OperationFactory.CreateOperate(strOperate);
〃設(shè)置要運(yùn)算的數(shù)據(jù)
operate.NumberA=Convert.ToDouble(strNumberA);
operate.NumberB=Convert.ToDouble(strNumberB);
〃具體作運(yùn)算-動(dòng)態(tài)決定調(diào)用哪個(gè)子類的GetResult()方法
doubleresult=operate.GetResult();
〃顯示運(yùn)算結(jié)果
Console.WriteLine(strNumberA+strOperate+strNumberB+”=
+result);
Console.ReadLine();
)
catch(Exceptionex)
Console.WriteLine("您輸入的數(shù)據(jù)有錯(cuò)誤!n+ex.ToStringO);
Console.ReadLine();
擴(kuò)展程序功能:
仿照前面的OperationAdd添加支持新運(yùn)算的類OperationMod,對(duì)運(yùn)算符(%)
轉(zhuǎn)換為類名OperationMod作設(shè)置改變,重新編譯系統(tǒng)即可。
3、銀行帳戶改動(dòng)通知系統(tǒng):帳戶的余額發(fā)生變化時(shí),需要通過(guò)手機(jī)短信和E-
Mail的方式通知到用戶本人,試用所學(xué)過(guò)的設(shè)計(jì)模式實(shí)現(xiàn)該系統(tǒng)。
要求:(1)指出使用的設(shè)計(jì)模式的名稱;
(2)畫出該設(shè)計(jì)模式的類結(jié)構(gòu)圖;
(3)給出系統(tǒng)模擬實(shí)現(xiàn)的代碼;
(4)設(shè)計(jì)符合開放/封閉原則。
答案:
使用觀察者模式。
代碼:
///<summary>
///Observer一抽象觀察者接口
///</summary>
publicinterfaceAccountUpdated
///<summary>
///觀察者接收/處理通知的方法
///</summary>
///<paramname="val">帳戶余額</param>
voidBalanceUpdated(doubleval);
)
///<summary>
///具體觀察者一帳戶余額發(fā)生變化時(shí),發(fā)送Email通知用戶
///</summary>
classEmai1:AccountUpdated
!
///<summary>
///接收郵件通知的E-Mail地址
///</summary>
privatestringEmailAddress;
publicEmail(stringaddress)
|
EmailAddress=address;
)
///<summary>
///發(fā)送Email通知操作
///</summary>
///<paramname=余額數(shù)值</param>
publicvoidBalanceUpdated(doubleval)
Console.WriteLine("發(fā)送郵件到{0},余額為{1}.M,
EmailAddress,val);
}
〃其他操作相關(guān)的屬性和方法
)
///<summary>
///具體觀察者一帳戶余額發(fā)生變化時(shí),通過(guò)手機(jī)發(fā)送短信通知用戶
///</summary>
classMobile:AccountUpdated
(
///<summary>
///接收短信通知的電話號(hào)碼
///</summary>
privatestringPhoneNumber;
publicMobile(stringphone)
(
PhoneNumber=phone;
)
///<summary>
///發(fā)送短信通知
///</summary>
///<paramname="val">余額數(shù)值</param>
publicvoidBalanceUpdated(doubleval)
ConsoleWriteLine("發(fā)送短信至手機(jī){0},余額為{1}.
PhoneNumber,val);
)
〃其他操作相關(guān)的屬性和方法
)
///<summary>
///ConcreteSubject具體主題--銀行帳戶
///</summary>
classBankAccount:Subject
(
///<summary>
///帳戶余額--subjectState
///</summary>
privatedoublebalance=0;
///<summary>
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南農(nóng)業(yè)大學(xué)《數(shù)字軟件設(shè)計(jì)1》2023-2024學(xué)年第一學(xué)期期末試卷
- 西安培華學(xué)院《免疫學(xué)及病原生物學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海體育大學(xué)《土建概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 六安職業(yè)技術(shù)學(xué)院《快題表現(xiàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 吉林工商學(xué)院《英語(yǔ)學(xué)習(xí)策略2(強(qiáng)化)》2023-2024學(xué)年第二學(xué)期期末試卷
- 嘉興職業(yè)技術(shù)學(xué)院《工程項(xiàng)目招投標(biāo)與合同管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 沈陽(yáng)體育學(xué)院《導(dǎo)游日語(yǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 技術(shù)人員職務(wù)聘用合同
- 合同協(xié)議內(nèi)容變更協(xié)議
- 擔(dān)保公司抵押借款合同
- 醫(yī)學(xué)會(huì)議準(zhǔn)備流程
- 臨床生化檢驗(yàn)項(xiàng)目及意義
- 藥劑學(xué)練習(xí)試卷24(題后含答案及解析)
- 2025年上海新徐匯集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 公司年度經(jīng)營(yíng)目標(biāo)及公司各部門年度經(jīng)營(yíng)計(jì)劃
- 生物技術(shù)測(cè)試題+參考答案
- 大學(xué)英語(yǔ)(西安石油大學(xué))知到智慧樹章節(jié)測(cè)試課后答案2024年秋西安石油大學(xué)
- 《市域智慧共享中藥房建設(shè)指南》
- 不穩(wěn)定型心絞痛和非ST段抬高心肌梗死治療指南解讀
- 民宿的經(jīng)營(yíng)成本分析報(bào)告
- 2025 預(yù)應(yīng)力混凝土鋼管桁架疊合板
評(píng)論
0/150
提交評(píng)論