2011(下半年)試題及答案(下午)資料_第1頁
2011(下半年)試題及答案(下午)資料_第2頁
2011(下半年)試題及答案(下午)資料_第3頁
2011(下半年)試題及答案(下午)資料_第4頁
2011(下半年)試題及答案(下午)資料_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第8章軟件設(shè)計師下午試題分析與解答試題一閱讀下列說明和圖,回答問題1至問題4,將解答填入答 題紙的對應(yīng)欄內(nèi)。說明某公司欲開發(fā)招聘系統(tǒng)以提高招聘效率,其主要功能如下:(1) 接受申請驗證應(yīng)聘者所提供的自身信息是否完整,是否說明了應(yīng) 聘職位,受理驗證合格的申請,給應(yīng)聘者發(fā)送致謝信息。(2) 評估應(yīng)聘者根據(jù)部門經(jīng)理設(shè)置的職位要求,審查已經(jīng)受理的申請; 對未被錄用的應(yīng)聘者進行謝絕處理,將未被錄用的應(yīng)聘者信 息存入未錄用的應(yīng)聘者表,并給其發(fā)送謝絕決策;對錄用的 應(yīng)聘者進行職位安排評價,將評價結(jié)果存入評價結(jié)果表,并 給其發(fā)送錄用決策,發(fā)送錄用職位和錄用者信息給工資系 統(tǒng)。現(xiàn)采用結(jié)構(gòu)化方法對招聘系統(tǒng)進行分析

2、與設(shè)計,獲得如 圖1-1所示的頂層數(shù)據(jù)流圖、圖1-2所示0層數(shù)據(jù)流圖和圖 1-3所示1層數(shù)據(jù)流圖。0b2 OgMiJlH、勉咁后處錄用i巴問題1答問題2D1D2所對應(yīng)的數(shù)據(jù)存儲錄用的使用說明中的術(shù)語,給出圖中使用說明中的術(shù)語,給出圖中111 H- r M.E3:工資系統(tǒng)巳乜理-* 的申請耒錄用的應(yīng)聘者稱。的屮Id 、PI_丿E1:應(yīng)聘者E2: 部門經(jīng)理T 71答:D1:未錄用的應(yīng)聘者表D2:評價結(jié)果表問題3使用說明和圖中的術(shù)語,給出圖1-3中加工P1P3的名 稱。答:P1:驗證申請 P2:審查申請P3:職位安排評價問題4解釋說明圖1-2和圖1-3是否保持平衡,若不平衡請按 如下格式補充圖1-3

3、中數(shù)據(jù)流的名稱以及數(shù)據(jù)流的起點或終 點,使其平衡(使用說明中的術(shù)語或圖中符號)數(shù)據(jù)流名稱起點錄用職位P3或2.3職位安排評價已受理的申請1.2受理申請謝絕決策2.2謝絕應(yīng)聘者試題二閱讀下列說明,回答問題 1 至問題 3,將解答填入答題紙 的對應(yīng)欄內(nèi)。 說明 某物流公司為了整合上游供應(yīng)商與下游客戶,縮短物流 過程,降低產(chǎn)品庫存,需要構(gòu)建一個信息系統(tǒng)以方便管理其 業(yè)務(wù)運作活動。 需求分析結(jié)果 (1) 物流公司包含若干部門,部門信息包括部門號、部門 名稱、經(jīng)理、電話和郵箱。一個部門可以有多名員工處理部 門的日常事務(wù),每名員工只能在一個部門工作。每個部門有 一名經(jīng)理,只需負責管理本部門的事務(wù)和人員。(

4、2) 員工信息包括員工號、姓名、職位、電話號碼和工 資;其中,職位包括:經(jīng)理、業(yè)務(wù)員等。業(yè)務(wù)員根據(jù)托運申 請負責安排承運貨物事宜,例如:裝貨時間、到達時間等。 一個業(yè)務(wù)員可以安排多個托運申請,但一個托運申請只由一 個業(yè)務(wù)員處理。(3) 客戶信息包括客戶號、單位名稱、通信地址、所屬省 份、聯(lián)系人、聯(lián)系電話、銀行賬號,其中,客戶號唯一標識 客戶信息的每一個元組。每當客戶要進行貨物托運時,先要提出貨物托運申請。托運申請信息包括申請?zhí)?、客戶號、?物名稱、數(shù)量、運費、出發(fā)地、目的地。其中,一個申請?zhí)枌?yīng)唯一的一個托運申請;一個客戶可以有多個貨物托運申 請,但一個托運申請對應(yīng)唯一的一個客戶號。概念模型設(shè)

5、計根據(jù)需求階段收集的信息,設(shè)計的實體聯(lián)系圖和關(guān)系模 式(不完整)如圖2-1所示。部門托運申請客戶田2-1實休聯(lián)系圖關(guān)系模式設(shè)計部門(部門號,部門名稱,經(jīng)理,電話,郵箱)員工(員工號,姓名,職位,電話號碼,工資,_(a)_部 門號J客戶(b),單位名稱,通信地址,所屬省份,聯(lián)系 人,聯(lián)系電話,銀行賬號)托運申請(c),貨物名稱,數(shù)量,運費,出發(fā)地,目 的地)申請?zhí)?、客戶號、貨物名稱、數(shù)量、運費、出發(fā)地、 目的地安排承運(d),裝貨時間,到達時間,業(yè)務(wù)員)問題1根據(jù)問題描述,補充四個聯(lián)系、聯(lián)系的類型,以及實體與子實體的聯(lián)系,完善圖2-1所示的實體聯(lián)系圖。問題2根據(jù)實體聯(lián)系圖,將關(guān)系模式中的空(a)

6、(d)補充完整。分別指出部門、員工和安排承運關(guān)系模式的主鍵和外鍵。答:(1)a: 部門號b:客戶號c:申請?zhí)?、客戶?d:申請?zhí)?2)部門:主鍵:部門號夕卜鍵:無員工:主鍵:員工號 外鍵:部門號安排承運:主鍵:申請?zhí)柾怄I:無問題3若系統(tǒng)新增需求描述如下:為了數(shù)據(jù)庫信息的安全性,公司要求對數(shù)據(jù)庫操作設(shè)置 權(quán)限管理功能,當員工登錄系統(tǒng)時,系統(tǒng)需要檢查員工的權(quán) 限。權(quán)限的設(shè)置人是部門經(jīng)理。為滿足上述需要,應(yīng)如何修 改(或補充)圖2-1所示的實體聯(lián)系圖,請給出修改后的實體 聯(lián)系圖和關(guān)系模式。試題二分析本題考查數(shù)據(jù)庫系統(tǒng)中實體聯(lián)系模型 (E-R 模型) 和關(guān)系模 式設(shè)計方面的應(yīng)用知識。 問題 1 兩個實

7、體集之間的聯(lián)系類型分為三類:一對一 (1:1) 聯(lián) 系、一對多 (1:n) 聯(lián)系和多對多 (m:n) 聯(lián)系。根據(jù)題意,每名員工只能在一個部門工作,所以部門和 員工之間有一個 1:n 的“所屬”聯(lián)系;由于每個部門有一名 經(jīng)理,只需負責管理本部門的事務(wù)和人員,因此部門和經(jīng)理 之間有一個 1:1 的“管理”聯(lián)系;由于一個業(yè)務(wù)員可以安排 多個托運申請,但一個托運申請只由一個業(yè)務(wù)員處理,故業(yè) 務(wù)員和托運申請之間有一個 1:n 的“托運”聯(lián)系;又由于一 個客戶可以有多個貨物托運申請,但一個托運申請對應(yīng)唯一 的一個客戶號,故客戶和托運申請之間有一個 1:n 的“申 請”聯(lián)系。根據(jù)上述分析,完善圖 2-1 所

8、示的實體聯(lián)系圖可參見參 考答案。 問題 2根據(jù)題意,部門和員工之間有一個 1:n 的“所屬”聯(lián)系 需要將一端的碼并入多端,故員工關(guān)系模式中的空 (a) 應(yīng)填寫 部門號;在客戶關(guān)系模式中,客戶號為主鍵,故空 (b) 應(yīng)填寫 客戶號;在托運申請關(guān)系模式中,申請?zhí)枴⒖蛻籼枮橹麈I, 故空 (c) 應(yīng)填寫申請?zhí)枴⒖蛻籼?;又由于一個業(yè)務(wù)員可以安排 多個托運申請,但一個托運申請只由一個業(yè)務(wù)員處理,因此 在安排承運關(guān)系模式中,申請?zhí)枮橹麈I,故空 (d) 應(yīng)填寫申請 號。部門關(guān)系模式中的部門號為主鍵,經(jīng)理為外鍵;因為經(jīng) 理來自員工關(guān)系。員工關(guān)系模式中的員工號為主鍵,部門號 為外鍵,因為部門號來自部門關(guān)系。安排承

9、運關(guān)系模式中的 申請?zhí)枮橹麈I,業(yè)務(wù)員為外鍵,因為業(yè)務(wù)員來自員工關(guān)系。 問題 3 根據(jù)題意,權(quán)限的設(shè)置人是部門經(jīng)理,因此,需要建立 一個權(quán)限關(guān)系模式,以及經(jīng)理到權(quán)限之間的 1:n 的“設(shè)置” 聯(lián)系。修改后的實體聯(lián)系圖和關(guān)系模式參見參考答案。參考答案 問題 1問題2(a) 部門號(b) 客戶號(c) 申請?zhí)?,客戶?d) 申請?zhí)栔麈I:部外鍵:經(jīng)部門門號理主鍵:員外鍵:部員工工號門號安排主鍵:申外鍵:業(yè)承運 請?zhí)杽?wù)員問題3關(guān)系模式:權(quán)限(員工號,權(quán)限,設(shè)置人)或權(quán)限(員工號,權(quán)限,部門經(jīng)理)試題三閱讀下列說明和圖,回答問題1至問題3,將解答填入答 題紙的對應(yīng)欄內(nèi)。說明Pay&Drive系統(tǒng)(開多少付

10、多少)能夠根據(jù)駕駛里程自動計 算應(yīng)付的費用。系統(tǒng)中存儲了特定區(qū)域的道路交通網(wǎng)的信息。道路交通 網(wǎng)由若干個路段(RoadSegment胸成,每個路段由兩個地理坐 標點(Node)標定,其里程數(shù)(Distanee)是已知的。在某些地 理坐標點上安裝了訪問控制(Access Control) 設(shè)備,可以自 動掃描行駛卡(Card) o行程仃rajeetory)由一組連續(xù)的路段 構(gòu)成。行程的起點(Entry)和終點(Exit)都裝有訪問控制設(shè) 備。系統(tǒng)提供了 3 種行駛卡。常規(guī)卡 (Regular Card) 有效期 (Valid Period) 為一年,可以在整個道路交通網(wǎng)內(nèi)使用。季 卡(Seaso

11、n Card)有效期為三個月,可以在整個道路交通網(wǎng)內(nèi) 使用。單次卡 (Minitrip Card) 在指定的行程內(nèi)使用,且只能 使用一次。其中,季卡和單次卡都是預付卡 (Prepaid Card) ,需要客戶 (Customer) 預存一定的費用。系統(tǒng)的主要功能有:客戶注冊、申請行駛卡、使用行駛 卡行駛等。使用常規(guī)卡行駛,在進入行程起點時,系統(tǒng)記錄行程起 點、進入時間 (Date Of Entry) 等信息。在到達行程終點時, 系統(tǒng)根據(jù)行駛的里程數(shù)和所持卡的里程單價 (Unit Price) 計 算應(yīng)付費用,并打印費用單 (Invoice) 。季卡的使用流程與常規(guī)卡類似,但是不需要打印費用 單

12、,系統(tǒng)自動從卡中扣除應(yīng)付費用。單次卡的使用流程與季卡類似,但還需要在行程的起點 和終點上檢查行駛路線是否符合該卡所規(guī)定的行駛路線。現(xiàn)采用面向?qū)ο蠓椒ㄩ_發(fā)該系統(tǒng),使用UML進行建模。構(gòu)建出的用例圖和類圖分別如圖 3-1 和圖 3-2 所示問題1根據(jù)說明中的描述,給出圖3-1中U1和U2所對應(yīng)的用 例,以及所對應(yīng)的關(guān)系。U1:使用常規(guī)卡行駛U2:使用單次卡行駛(1): extend+beiginIAeecuC.on frolNode疋七e*ex n-1) /*得到問題解*/bestW=cw;bestC=cp;for(j=0; j v n; j+)(1) ;bestXj=xjreturn 1;if

13、(cp v =cc)(/* 有解 */foun d=1;for(j=0; j)jm/*第i個部件從第j個供應(yīng)商購買*/(31lxi=jcw=cw+wi j;cp=cp+ci j;if (cp v =cc& (4) )/*深度搜索,擴展當前結(jié)點*/cw= bestWif (backtrack(i+1) found -1;)/*回溯*/ cw=cw - wi j;(5K/ cp=cp-ci jreturn found;試題四分析本題考查算法的設(shè)計和分析技術(shù)中的回溯法?;厮莘ㄊ且环N系統(tǒng)搜索問題解的方法,在包含問題所有 解的解空間樹中,按照深度優(yōu)先的策略,從根結(jié)點出發(fā)搜索 解空間樹。算法在到達解空間樹

14、的任一結(jié)點時,總是先判斷 該結(jié)點是否肯定不包含問題的解。若肯定不包含,則跳過對 以該結(jié)點為根的子樹的系統(tǒng)搜索,逐層向其祖先結(jié)點回溯; 否則進入該子樹,繼續(xù)按深度優(yōu)先的策略進行搜索?;厮莘?在求問題的最優(yōu)解時,要回溯到根,且根結(jié)點的所有子樹都 已經(jīng)被搜索遍才結(jié)束。根據(jù)上述思想和題干說明,對實例:部件數(shù) n=3,廠商數(shù) m=3具體的重量和價格如表4-1所示。tlI23W|C|Cl壯1 1II2233m23i 3-3. |2I1322222構(gòu)造該實例的解空間樹如圖4-1所示締6:6肚時 砒 時軸4:4 4:45:5 5:5 5:5圖4-1中結(jié)點編號表示生成該結(jié)點的順序。邊上的編號 表示哪個部件選擇哪

15、個廠商,如x(2)=1,表示第2個部件來自廠商1。結(jié)點旁邊的兩個數(shù)字表示當前解或部分解對應(yīng)的重 量和價格,如2:2表示重量為2,價格為2。從圖4-1可以看 出,最優(yōu)解是結(jié)點20表示的解,即x(1)=1,x(2)=3, x(3)=1,即第1個部件來自廠商1,第2個部件來自廠商3, 第3個部件來自廠商1,總的價格和重量分別為4和4。當 然,本實例的最優(yōu)解還可以是x(1)=1,x(2)=3,x(3)=2和x(1)=1 ,x(2)=3 ,x(3)=3 ,分別對應(yīng)解空間樹上的 21號和 22 號結(jié)點。代碼中的空 (1) 處是得到問題解之后,將搜索過程中產(chǎn)生 的重量cw、價格cp和解x放到最終重量best

16、W 價格bestC 和解 bestX 中,因此空格 (1) 處填寫 bestXj=xj???(2) 處的 for 循環(huán)是考慮第 i 個部件選擇哪個廠商,因此 j 從 0 到 m-1依次檢查,此處應(yīng)填j v m。對搜索過程中產(chǎn)生的重量 cw、價格cp和解x的值進行設(shè)置,因此空(3)處應(yīng)填 xi=j ,表示第 i 個部件選擇廠商 j 。空(4) 是判斷當前結(jié)點 是否要擴展,若當前獲得的價格比目前最優(yōu)解更優(yōu),且重量 沒有超過當前得到的最優(yōu)重量,即cp v =cc且cwv bestW?則擴展當前結(jié)點,否則回溯。在回溯過程中,需要把原來選擇 的部件的價格和重量從搜索過程中產(chǎn)生的重量cw和價格cp中去掉,

17、因此空 (5) 應(yīng)填 cp=cp=cij 。參考答案(1) bestXj=xj (2)j vm (3)xi=j(4) cw v bestW (5) cp=cp-cij試題五閱讀下列說明和C+弋碼,將應(yīng)填入(n)處的字句寫在答 題紙的對應(yīng)欄內(nèi)。說明某大型商場內(nèi)安裝了多個簡易的紙巾售賣機,自動出售2元錢一包的紙巾,且每次僅售出一包紙巾。紙巾售賣機的狀 態(tài)圖如圖5-1所示。2所示的類圖。其中類State為抽象類,定義了投幣、退幣、出紙巾等方法接口。類 SoldState、SoldOutState、NoQuarterState 禾口 HasQuarterState 分別對應(yīng)圖 5-1 中紙巾售賣機的4

18、種狀態(tài):售出紙巾、紙巾售完、沒有投幣、有2元錢。C+代碼#inelude using n amespace std;/以下為類的定義部分class TissueMachi ne; / 類的提前引用class State public :投幣退幣按下“出紙巾”按鈕出紙巾virtual void in sertQuarter()=O; /virtual void ejectQuarter()=0; / virtual void turnCran k()=0; /virtual void dispe nse()=0; / ;/* 類 SoldOutState 、 NoQuarterState 、 H

19、asQuarterState 、 SoldState 的定義省略,每個類中均定義 了私有數(shù)據(jù)成員 TissueMachine*tissueMachine;*/class TissueMachineprivate :(1)*soldOutState,*noQuarterState,*hasQuarterState ,*soldState , *state; /(1) Stateint count; / 紙巾數(shù)public :TissueMachine(int numbers);void setState(State* state);State* getHasQuarterState();Stat

20、e* getNoQuarterState();State* getSoldState();State* getSoldOutState();int getCount();/ 其余代碼省略;/ 以下為類的實現(xiàn)部分void NoQuarterState :insertQuarter() tissueMachine-setState( (2) ); /(2)tissueMachine- getHasQuarterState()void HasQuarterState :ejectQuarter() tissueMachine-setState( (3) );/(3) tissueMachine- g

21、etNoQuarterState()void SoldState :dispense() if(tissueMachine-getCount()0) tissueMachine-setState( (4) );) /(4)tissueMachine- getNoQuarterState() elsetissueMachine-setState( (5) );) /(5)tissueMachine- getSoldOutState() / 其余代碼省略(1) State(2) tissueMachine- getHasQuarterState()(3) tissueMachine- getNoQ

22、uarterState()(4) tissueMachi ne- getNoQuarterState()(5) tissueMachi ne- getSoldoutState()試題五分析本題考查狀態(tài)(State)模式的概念及應(yīng)用。狀態(tài)模式是一種對象的行為型模式,允許一個對象在其 內(nèi)部狀態(tài)改變時改變它的行為,對象看起來似乎修改了它的 類。狀態(tài)模式的類圖如下所示:ConcreleStatelCone reteSt at e2Cone reteState3*handleAQhandleAO A *handleAQ!狀態(tài)模式主要解決的是控制一個對象轉(zhuǎn)換的條件表達式 過于復雜的情況。把狀態(tài)的判斷邏輯轉(zhuǎn)

23、移到表示不同狀態(tài)的 一系列類當中,可以把復雜的判斷邏輯簡化。狀態(tài)模式的好 處是將與特定狀態(tài)相關(guān)的行為局部化,并且將不同狀態(tài)的行 為分割開來。題目利用狀態(tài)模式來實現(xiàn)一個簡易的紙巾售賣機。售賣機的狀態(tài)轉(zhuǎn)換圖已經(jīng)在題目中給出,類SOIdState、SoldoutState 、 NoQuarterState 和 HasQuaerState 分別用來 表示售賣機的 4 種不同狀態(tài),對應(yīng)于狀態(tài)模式中的ConcreteState1 , .ConcreteStateN 。題目所設(shè)置的填空, 主要集中在狀態(tài)轉(zhuǎn)換上。因此解答該題時,要求在理解狀態(tài) 模式內(nèi)涵的基礎(chǔ)上,依據(jù)紙巾售賣機的狀態(tài)轉(zhuǎn)換原則,給出 正確的狀態(tài)設(shè)

24、置???(1) 出現(xiàn)在類 TissueMachine 的數(shù)據(jù)成員定義部分。狀 態(tài)模式封裝了狀態(tài)的轉(zhuǎn)換過程,但是它需要枚舉可能的狀 態(tài),因此需要確定狀態(tài)種類。因此在類 TissueMachine 中需 定義出所有可能的狀態(tài)對象。根據(jù)所給出的對象名稱及說明 中的描述,可知 (1) 處應(yīng)填入的類名為 State ???2)(5)都是與狀態(tài)轉(zhuǎn)換相關(guān)的,要求填寫類TissueMachine 中的方法 setState 在不同調(diào)用處的實際參 數(shù)。根據(jù)方法的名稱及調(diào)用方式,可以推斷出這個方法的功 能就是設(shè)置自動售賣機的當前狀態(tài)。要填出這些空,只要對 照圖 5.1 的狀態(tài)轉(zhuǎn)換圖,根據(jù)狀態(tài)轉(zhuǎn)換的條件確定出當前狀

25、 態(tài)及下一狀態(tài)即可???(2) 出現(xiàn)在方法 insertQuaner 內(nèi),即給紙巾售賣機投 入2元錢。根據(jù)狀態(tài)圖, “投入 2元錢”之后,售賣機應(yīng)轉(zhuǎn) 換到“有 2 元錢”的狀態(tài)。“有 2元錢”對應(yīng)的狀態(tài)的類為“HasQuanerStatd,所以空(2)處應(yīng)填類 HasQuanerState的對象。由于 hasQuanerState 是類 TissueMachine 的私有數(shù)據(jù)成員,不能直接訪問,所以只能通過調(diào)用相關(guān)的 get 方法來獲取該對象。由此得出(2)應(yīng)填tissueMachine- getHasQuarterState() ;同理,空 (3) 表示的狀態(tài)是從“有 2 元錢”狀態(tài),經(jīng)歷

26、“退回 2 元錢”事件之后的狀態(tài),及“沒有投幣”狀態(tài)。所 以空(3) 處應(yīng)填 tissueMachine- getNoQuanerState() ???4) 和(5) 處分別表示賣出一包紙巾之后,售賣機應(yīng)該 轉(zhuǎn)換到的下一個狀態(tài)。這個跟售賣機中的紙巾數(shù)有關(guān),如果 還有紙巾,則轉(zhuǎn)換到“沒有投幣”狀態(tài),如果沒有紙巾了, 則轉(zhuǎn)換到“紙巾售完”狀態(tài),因此,空 (4) 處應(yīng)填 tissueMachine- getNoQuarterState() ,空(5) 處應(yīng)填tissueMachine- getSoldOutState() 。參考答案(1) State getHasQuarterState() get

27、NoQuarterState() getNoQuarterState() getSoldoutState()(2) tissueMachine-(3) tissueMachine-(4) tissueMachine-(5) tissueMachine-試題六閱讀下列說明和Java代碼,將應(yīng)填入(n)處的字句寫在 答題紙的對應(yīng)欄內(nèi)。說明某大型商場內(nèi)安裝了多個簡易的紙巾售賣機,自動出售2元錢一包的紙巾,且每次僅售出一包紙巾。紙巾售賣機的狀 態(tài)圖如圖6-1所示。有2元錢紙巾數(shù)0圖6-1紙巾售賣機的狀態(tài)圖米用狀態(tài)(State)模式來實現(xiàn)該紙巾售賣機,得到如圖 6- 2所示的類圖。其中類State為抽象

28、類,定義了投幣、退幣、 出紙巾等方法接口。類 SoldState、SoldOutState、 NoQuarterState 禾口 HasQuarterState 分別對應(yīng)圖 6-1 中紙巾 售賣機的4種狀態(tài):售出紙巾、紙巾售完、沒有投幣、有2元錢。TsiueMjichineSoldOutSiatc4pikXlQikiTlsr(i -t-tumC lwikO dispene()SoldStwteNoQiiartirrStatc十Ei rl Quart 亡 g) +ej eclQuarte) uumCranki)tiiistrlLjn;rla( I -0)tissueMachi ne.setSta

29、te( (4); / (4)tissueMachine.getNoQuarterState()elsetissueMachi ne.setState( (5);/ (5)tissueMachi ne.getSoldOutState()試題六分析本題考查狀態(tài)(State)模式的概念及應(yīng)用。狀態(tài)模式是一種對象的行為型模式,允許一個對象在其 內(nèi)部狀態(tài)改變時改變它的行為,對象看起來似乎修改了它的 類。狀態(tài)模式的類圖如下所示:Ccrrfextdelegate toState丨iH -1 *J * * *hlie!Concrete StatedCgrirr*jleState 1handteAO狀態(tài)模式主要

30、解決的是控制一個對象轉(zhuǎn)換的條件表達式 過于復雜的情況。把狀態(tài)的判斷邏輯轉(zhuǎn)移到表示不同狀態(tài)的 一系列類當中,可以把復雜的判斷邏輯簡化。狀態(tài)模式的好 處是將與特定狀態(tài)相關(guān)的行為局部化,并且將不同狀態(tài)的行 為分割開來。題目利用狀態(tài)模式來實現(xiàn)一個簡易的紙巾售賣機。售賣機的狀態(tài)轉(zhuǎn)換圖已經(jīng)在題目中給出,類 SoldState 、 SoldOutState 、 NoQuarterState 和 HasQuarterState 分別用 來表示售賣機的 4 種不同狀態(tài),對應(yīng)于狀態(tài)模式中的 ConcreteStatel , .ConcreteStateN 。題目所設(shè)置的填空, 主要集中在狀態(tài)轉(zhuǎn)換上。因此解答該題時

31、,要求在理解狀態(tài) 模式內(nèi)涵的基礎(chǔ)上,依據(jù)紙巾售賣機的狀態(tài)轉(zhuǎn)換原則,給出 正確的狀態(tài)設(shè)置???(1) 出現(xiàn)在類 TissueMachine 的數(shù)據(jù)成員定義部分。狀 態(tài)模式封裝了狀態(tài)的轉(zhuǎn)換過程,但是它需要枚舉可能的狀 態(tài),因此需要實現(xiàn)確定狀態(tài)種類。因此在類 TissueMachine 中需定義出所有可能的狀態(tài)對象。根據(jù)所給出的對象名稱及 說明中的描述,可知 (1) 處應(yīng)填入的類名為 State ???2)(5)要求填寫類TissueMachine中的方法 setState 在不同調(diào)用處的實際參數(shù)。這里的一個難點在于題 目中沒有顯示地給出方法 setState 的原型及語義,這要求考 生根據(jù)面向?qū)ο蟪绦蛟O(shè)計風格及說明中給出的應(yīng)用場合來推 斷 setState 的內(nèi)涵及原型,主要是確定其參數(shù)列表。在面向?qū)ο蟪绦蛟O(shè)計中,為了做到封裝,通常都會

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論