中級軟件設(shè)計師下午試題117_第1頁
中級軟件設(shè)計師下午試題117_第2頁
中級軟件設(shè)計師下午試題117_第3頁
中級軟件設(shè)計師下午試題117_第4頁
中級軟件設(shè)計師下午試題117_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、中級軟件設(shè)計師下午試題 -117( 總分: 89.05 ,做題時間: 90分鐘 )一、 試題一 ( 總題數(shù): 1,分?jǐn)?shù): 15.00) 說明 某房屋租賃公司欲建立一個房屋租賃服務(wù)系統(tǒng),統(tǒng)一管理房主和租賃者的信息,從而快速地提供租賃服務(wù)。該系統(tǒng)具有以下功能:1登記房主信息。對于每名房主,系統(tǒng)需登記其姓名、住址和聯(lián)系電話,并將這些信息寫入房主信息文件。2登記房屋信息。所有在系統(tǒng)中登記的房屋都有一個唯一的識別號(對于新增加的房屋,系統(tǒng)會自動為其分配一個識別號 ) 。除此之外,還需登記該房屋的地址、房型( 如平房、帶陽臺的樓房、獨立式住宅等) 、最多能夠容納的房客數(shù)、租金及房屋狀況( 待租賃、已出租

2、) 。這些信息都保存在房屋信息文件中。一名房主可以在系統(tǒng)中登記多個待租賃的房屋。3登記租賃者信息。所有想通過該系統(tǒng)租賃房屋的租賃者,必須首先在系統(tǒng)中登記個人信息,包括:姓名、住址、電話號碼、出生年月和性別。這些信息都保存在租賃者信息文件中。4租賃房屋。已經(jīng)登記在系統(tǒng)中的租賃者,可以得到一份系統(tǒng)提供的待租賃房屋列表。一旦租賃者從中找到合適的房屋,就可以提出看房請求。系統(tǒng)會安排租賃者與房主見面。對于每次看房,系統(tǒng)會生成一條看房記錄并將其寫入看房記錄文件中。5收取手續(xù)費。房主登記完房屋后,系統(tǒng)會生成一份費用單,房主根據(jù)費用單繳納相應(yīng)的費用。 :6變更房屋狀態(tài)。當(dāng)租賃者與房主達成租房或退房協(xié)議后,房主

3、向系統(tǒng)提交變更房屋狀態(tài)的請求。系統(tǒng)將根據(jù)房主的請求,修改房屋信息文件。數(shù)據(jù)流圖 1-1 和圖 1-2 分別給出了該系統(tǒng)的頂層數(shù)據(jù)流圖和 0 層數(shù)據(jù)流圖。(分?jǐn)?shù): 15.00 )(1) .使用說明中給出的詞匯,將數(shù)據(jù)流圖1-1中(1)(4)處的數(shù)據(jù)流補充完整。(分?jǐn)?shù):5.00)正確答案: (1) 費用單 (2) 待租賃房屋列表(3) 看房請求 (4) 變更房屋狀態(tài)請求)解析:(2) .使用說明中給出的詞匯,將數(shù)據(jù)流圖圖1-2中的(5)(8)補充完整。(分?jǐn)?shù):5.00)正確答案: (5) 房主信息文件(6) 租賃者信息文件(7) 房屋信息文件 (8) 看房記錄文件)解析:(3) . 數(shù)據(jù)流程圖圖

4、1-2 中缺失了三條數(shù)據(jù)流,請指出這三條數(shù)據(jù)流的起點、終點和數(shù)據(jù)流名稱。* (分?jǐn)?shù): 5.00 )正確答案: (1) 起點:房主終點:變更房屋狀態(tài)數(shù)據(jù)流名稱:變更房屋狀態(tài)請求(2) 起點:租賃者終點:登記租賃者信息數(shù)據(jù)流名稱:租賃者信息(3) 起點:租賃者終點:安排租賃者看房數(shù)據(jù)流名稱:看房請求)解析: 解析 本題考查的是分層數(shù)據(jù)流圖,該題型每年必考,是需要重點掌握的內(nèi)容。解題的兩大原則:數(shù)據(jù)平衡原則,系統(tǒng)功能描述與數(shù)據(jù)流圖的一致性原則。首先根據(jù)數(shù)據(jù)平衡原則有:在 0 層圖中,與“房主”相關(guān)的數(shù)據(jù)流有5 條。根據(jù)數(shù)據(jù)平衡原則頂層圖應(yīng)有與之對應(yīng)的數(shù)據(jù)流,但“費用單”數(shù)據(jù)流在頂層圖中找不到,所以(

5、1) 應(yīng)是“費用單”數(shù)據(jù)流。通過比較頂層圖和0層圖中與外部實體“租賃者”相關(guān)的數(shù)據(jù)流,可以發(fā)現(xiàn):出現(xiàn)在 0層圖上的數(shù)據(jù)流“待租賃房屋列 表”是頂層圖上沒有的,且與(2)處的數(shù)據(jù)流方向一致。由此可以判定,(2)處的數(shù)據(jù)流就是“待租賃房屋列表”。而頂 層圖中的數(shù)據(jù)流“租賃者信息”卻是 0層圖上沒有的。這樣就找到了 0層圖上缺失的第2條數(shù)據(jù)流:租賃者信息,它的 起點是“租賃者”,終點是加工“登記租賃者信息”。根據(jù)系統(tǒng)功能描述與數(shù)據(jù)流圖的一致性原則有:6 “當(dāng)租賃者與房主達成租房或(4)處缺失的數(shù)據(jù)流是一條輸入數(shù)據(jù)流,從說明中可以看出,只有功能由于房主向系統(tǒng)提 交變更房屋狀態(tài)的請求”所描述的數(shù)據(jù)流沒有

6、在“房主”與系統(tǒng)之間體現(xiàn)出來。退房協(xié)議后,層圖中缺失的其0因此可以確定,(4)處缺失的數(shù)據(jù)流就是“變更房屋狀態(tài)請求”。相應(yīng)的,可以確定,在 中一條數(shù)據(jù)流也是它,其起點是“房 主”,終點是“變更房屋狀態(tài)”這個加工。由于說明中有“租賃者”相關(guān)的功能“一旦租賃者從中找到合適的房屋,就 可以提出看房請求”,這一功層圖中也沒有出現(xiàn)這條數(shù)據(jù)處的數(shù)據(jù)流應(yīng)該是“看房請求” 。而0能未在圖中體現(xiàn)出來。這 樣就能確定(3)條數(shù)據(jù)流就是“看房請求”,它的起點是“租賃者”,終點是加工“安排層圖中缺失的第3流。所以,0租 賃者看房”。由說明的描述可以得知,本系統(tǒng)中的數(shù)據(jù)存儲有:房主信息文件、房屋信息文件、租賃者信息文件

7、、看房 處的是租賃者信(6)記錄文件。下面就可以根據(jù)相應(yīng)的加工對號入座了。顯然,(5)處的是房主信息文件;息文件;(7)(8) 處的是看房記錄文件。處的是房屋信息文件;15.00),分?jǐn)?shù):1試題二(總題數(shù):二、說明某汽車維修站擬開發(fā)一套小型汽車維修管理系統(tǒng),對車輛的維修情況進行管理。個.對于新客戶及車輛,汽車維修管理系統(tǒng)首先登記客戶信息,包括:客戶編號、客戶名稱、客戶性質(zhì) (1、折扣率、聯(lián)系人、聯(lián)系電話等信息;還要記 錄客戶的車輛信息,包括:車牌號、車型、顏色、人、單位 )所示。2-1車輛類別等信息。一個客戶至少有一臺車???戶及車輛信息如表.(普通、加急)、作業(yè)分類(大、中、小修)2.記錄維

8、修車輛的故障信息。包括:維修類型、結(jié)算方式 (自付、三包、索賠) 等信息。維修廠的員工分為:維修員和業(yè)務(wù)員。車輛維修首先委托給業(yè)務(wù)員。業(yè)務(wù)員對車輛進行檢查和故障分析后,與 客戶磋商,確定故障現(xiàn)象,生成維修委托書。如表 2-2所示。3 .維修車間根據(jù)維修委托書和車輛的故障現(xiàn)象,在已有的維修項目中選擇并確定一個或多個具體維修項目,安排相關(guān) 的維修工及工時,生成維修派工單。維修派工單如表2-3所示。4 .客戶車輛在車間修理完畢后,根據(jù)維修項目單價和維修派工單中的工時計算車輛此次維修的總費用,記錄在委托書 中。根據(jù)需求階段收集的信息,設(shè)計的實體聯(lián)系圖(見圖2-1)和關(guān)系模式(不完整)如下所示。圖2-1

9、中業(yè)務(wù)員和維修工是員 工的子實體。概念結(jié)構(gòu)設(shè)計.邏輯結(jié)構(gòu)設(shè)計客戶(5),折扣率,聯(lián)系人,聯(lián)系電話)車輛(車牌號,客戶編號,車型,顏色,車輛類別)委托書(6),維修類型,作業(yè)分類,結(jié)算方式,進廠時間,預(yù)計完工時間,登記日期,故障描述,總費用 )維修項目(維修項目編號,維修項目,單價)派工單(7),工時)員工(8),工種,員工類型,級別)(分?jǐn)?shù):15.00)(1) .根據(jù)問題描述,填寫圖2.1中(1)(4)處聯(lián)系的類型。聯(lián)系類型分為一對一、一對多和多對多三種,分別使用1:1、1:n 或 1:*、m:n 或*:* 表示。(分?jǐn)?shù):3.75)正確答案:(1) n 或m或* (2) 1n 或m或* (4)

10、 n 或m或*)解析:),。(分?jǐn)?shù):3.75(2).1中的聯(lián)系并指明其聯(lián)系類型。聯(lián)系名可為:聯(lián)系 1,聯(lián)系(2) 完整的實體聯(lián)系圖如下圖所示。正確答案:(I)解析:(3) .根據(jù)圖2-1和說明,將邏輯結(jié)構(gòu)設(shè)計階段生成的關(guān)系模式中的空(5)(8)補充完整。(分?jǐn)?shù):3.75)正確答案:(5)客戶編號,客戶名稱,客戶性質(zhì)(6)委托書編號,客戶編號,車牌號,業(yè)務(wù)員編號或委托書編號,車牌號,業(yè)務(wù)員編號(7)委托書編號,維修工編號,維修項目編號 (8)員工編號,員工姓名)解析:(4) .根據(jù)問題描述,寫出客戶、委托書和派工單這三個關(guān)系的主鍵。(分?jǐn)?shù):3.75)正確答案:(客戶:客戶編號委托書:委托書編號派

11、工單:委托書編號,維修項目編號,維修工編號 )解析:解析本題考查數(shù)據(jù)庫設(shè)計,設(shè)計考點有:數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計和邏輯結(jié)構(gòu)設(shè)計。問題1由維修委托書的故障描述,維修類型、作業(yè)分類,可知,一臺車可能有多個故障,對應(yīng)多個維修委托書,所以 (1)空填寫:*;題目中“維修車間根據(jù)維修委托書和車輛的故障現(xiàn)象,在已有的維修項目中選擇并確定一個或多個具體 維修項目,安排相關(guān)的維修工及工時,生成維修派工單”,很明顯,一份委托書包含了一個或多個維修項目,而每個維 修項目可以由多個維修工來完成,每一個維修工又可以完成多個維修項目,所以(2)空填寫:1, (3)、(4)填寫:*。問題2需要補充車輛和客戶之間以及委托書和業(yè)

12、務(wù)員之間的關(guān)系。由題目“一個客戶至少擁有一臺車”可知,客戶和 車輛之間是“擁有”關(guān)系,且是一對多的關(guān)系;在由題目中“業(yè)務(wù)員對車輛進行檢查和故障分析后,與客戶磋商,確定 故障現(xiàn)象,生成維修委托書”可知,業(yè)務(wù)員與委托書之間是“委托”關(guān)系,且一名業(yè)務(wù)員可以受理多份委托書,而一份 委托書由一名業(yè)務(wù)員來生成。問題3本題又是補充邏輯結(jié)構(gòu)設(shè)計題,幾乎每年都考,這類題目只要仔細看需求分析結(jié)果或者仔細觀察題目中已知的 表,很容易就能做出,關(guān)鍵是需要細心,不要漏掉什么屬性。根據(jù)客戶和車輛信息表可知,客戶關(guān)系應(yīng)包括客戶編號、 客戶名稱、客戶性質(zhì)、折扣率、聯(lián)系人等屬性,主鍵顯然為客戶編號;而車輛關(guān)系應(yīng)包括車牌號、客戶

13、編號、車型、顏 色、車輛類別等屬性,主鍵為車牌號。根據(jù)維修委托書表可知委托書應(yīng)包括委托書編號、車牌號、客戶編號、業(yè)務(wù)員編 號、維修類型等屬性,其主鍵為委托書編號。根據(jù)維修派工單可知,派工單應(yīng)包括委托書編號、維修項目編號、維修工 編號、工時等屬性,主鍵是委托書編號、維修項目編號和維修員編號。根據(jù)實體聯(lián)系圖知,員工包括業(yè)務(wù)員和維修工, 他們共有的屬性是員工編號、員工姓名、工種、員工類型、級別等屬性,主鍵為員工編號。問題4參考問題3的分析。三、試題三(總題數(shù):1,分?jǐn)?shù):15.00)說明某圖書管理系統(tǒng)的主要功能如下。1 .圖書管理系統(tǒng)的資源目錄中記錄著所有可供讀者借閱的資源,每項資源都有一個唯一的索引

14、號。系統(tǒng)需登記每項資 源的名稱、出版時間和資源狀態(tài)(可借閱或已借出)。2 .資源可以分為兩類:圖書和唱片。對于圖書,系統(tǒng)還需登記作者和頁數(shù);對于唱片,還需登記演唱者和介質(zhì)類型(CD或者磁帶)。3 .讀者信息保存在圖書管理系統(tǒng)的讀者信息數(shù)據(jù)庫中,記錄的信息包括:讀者的識別碼和讀者姓名。系統(tǒng)為每個讀者 創(chuàng)建了一個借書記錄文件,用來保存讀者所借資源的相關(guān)信息。現(xiàn)采用面向?qū)ο蠓椒ㄩ_發(fā)該圖書管理系統(tǒng)。識別類是面向?qū)ο蠓治龅牡谝徊?。比較常用的識別類的方法是尋找問題描述給出了說明中出現(xiàn)的所有3-1類。表.中的名詞,再根據(jù)相關(guān)規(guī)則從這些名詞中刪除不可能成為類的名詞,最終得到構(gòu)成該系統(tǒng)的名詞3-21。UM展類圖

15、(通過對表3-1中的名詞進行分析,最終得到了圖3-1所示的類的說明見表(分?jǐn)?shù):15.00)(1) .表3-2所給出的類并不完整,根據(jù)說明和表 3-1,將圖3-1中的(a)(c)處補充完整。(分?jǐn)?shù):5.00)正確答案:(a)資源目錄;(b)圖書;(c)唱片)解析:(2) .根據(jù)說明中的描述,給出圖3-1中的類Catalogitem以及(b)、(c)處所對應(yīng)的類的關(guān)鍵屬性(使用表3-1中給出 的詞匯),其中,Catalogitem有4個關(guān)鍵屬性;(b)、(c)處對應(yīng)的類各有2個關(guān)鍵屬性。(分?jǐn)?shù):5.00) 正確答案:(Catalogitem的屬性:索引號、名稱、出版時間、資源狀態(tài)圖書的屬性:作者、

16、頁數(shù)唱片的屬性:演唱者、介質(zhì)類型)解析:(3) .識別關(guān)聯(lián)的多重度是面向?qū)ο蠼_^程中的一個重要步驟。根據(jù)說明中給出的描述,完成圖 3-1中的(1)(6)*(分?jǐn)?shù):5.00)正確答案:(1) 1 , (2) 0.*, (3) 1 , (4) 0.*, (5) 1 , (6) 1 或者 0.1)解析:解析本題主要考查UML中的類圖設(shè)計,題目3個問題都是對類圖的元素進行補充。類圖的設(shè)計是根據(jù)系統(tǒng)的 功能需求而來的,所以解題的關(guān)鍵在于對“系統(tǒng)功能說明”的理解。下面我們將通過對“系統(tǒng)功能說明”的分析,來解 答試題:從系統(tǒng)功能說明中的“圖書管理系統(tǒng)的資源目錄中記錄著所有可供讀者閱讀的資源”和“資源可分為

17、兩類:圖書和唱片”, 可以彳#知1個資源目錄中對應(yīng)著多個可供讀者借閱的資源,這些資源分為圖書類與唱片類,所以 (a)為資源目錄,(b)和 (c)分別為圖書和唱片,同時(1)應(yīng)填:1, (2)應(yīng)填:0.*。(所有的可供讀者借閱資源數(shù)有可能為 0,即還未錄入任何資 源的狀態(tài))。從“每項資源都有一個唯一的索引號。系統(tǒng)需登記每項資源的名稱、出版時間和資源狀態(tài)”。可以得知,資源目錄中的每項資源,即類圖中的Catalogitern ,有索引號、名稱、出版時間和資源狀態(tài)這 4個關(guān)鍵屬性。從“對于圖書,系統(tǒng)還需登記作者和頁數(shù);對于唱片,還需登記演唱者和介質(zhì)類型(CD或者磁帶)可以得知圖書有作者和頁數(shù)2個關(guān)鍵屬

18、性,唱片有演唱者和介質(zhì)類型 2個關(guān)鍵屬性。Borrower代表讀者,而Borroweritems為借書記錄文件,同時系統(tǒng)功能說明中有系統(tǒng)為每個讀者創(chuàng)建了一個借書記錄 文件,用來保存讀者所借資源的相關(guān)信息”,所以它們之間的關(guān)系應(yīng)為1對1,即第(5)空和第(6)空均填1。四、試題四(總題數(shù):1,分?jǐn)?shù):15.00)說明一般的樹結(jié)構(gòu)常采用孩子-兄弟表示法表示,即用二叉鏈表作樹的存儲結(jié)構(gòu),鏈表中節(jié)點的兩個鏈域分別指向該節(jié)點的 第一個孩予節(jié)點和下一個兄弟節(jié)點。例如,圖 4-1(a)所示的樹的孩子-兄弟表示如圖4-1fb)所示。.函數(shù)LevelTraverse()的功能是對給定樹進行層序遍歷。例如,對圖4-

19、1所示的樹進行層序遍歷時,節(jié)點的訪問次序為:D B A E F P C。對樹進行層序遍歷時使用了隊列結(jié)構(gòu),實現(xiàn)隊列基本操作的函數(shù)原型如下表所示OBool、Status類型定義如下:typedef enum FALSE = 0, TRUE = 1 Bool;typedef enum OVERFLOW = -2, UNDERFLOW = -1, ERROR = 0, OK = 1 Status;樹的二叉鏈表節(jié)點定義如下:typedef struct Nodechar data ;struct Node *fimrstchiid, *nextbrother;Node, *TreeNode;函數(shù)Sta

20、tus LevelTraverse(TreeNode root)/*層序遍歷樹,樹采用孩子-兄弟表示法,root是樹根節(jié)點的指針*/Queue tempQ;TreeNode ptr, brotherptr;if (!root)return ERROR;InitQueue( & tempQ);(1);brotherptr = root - nextbrother;while (brotherptr) EnQueue(&tempQ, brotherptr);;/*end-while*/while()(4);printf( %c t, ptr- data);if( (5) )continue;(6)

21、;brotherptr = ptr-firstchild- nextbrother;while(brotherptr) EnQueue(&tempQ, brotherptr);;/*end-while*/*end-while*/return OK;)/*LevelTraverse*/(分?jǐn)?shù):14.98)填空項 1: (正確答案:EnQueue(&tempQ,root)解析:填空項1: (正確答案: 解析:填空項1: (正確答案: 解析:填空項1: (正確答案:解析:填空項1: (正確答案: 解析:填空項1: (正確答案: 解析:brotherptr=brotherptr- nextbrothe

22、r )!IsEmpty(tempQ)DeQueue(&tempQ,&ptr)!ptr- firstchild )EnQueue(&tempQ,ptr- firstchild) )nextbrother brotherptr=brotherptr-(正確答案:1:填空項.解答此題的關(guān)鍵在于理解用隊列層序遍歷樹的過程。算法的流程是這樣的:首先將樹根節(jié)點解析:解析;完成這一操作以后,便開始出入隊,然后將其所有兄弟節(jié)點入隊(當(dāng)然,由于是根節(jié)點,故無兄弟節(jié)點)隊、打??;在打印完了之后,需要進行一個判斷,判斷當(dāng)前節(jié)點有無孩子節(jié)點,若有孩子節(jié)點,則將孩子節(jié)點入隊,同時將孩子節(jié)點 的所有兄弟節(jié)點入隊;完了以后

23、繼續(xù)進行出隊操作,出隊后再次判斷當(dāng)前節(jié)點是否有孩子節(jié)點,并重復(fù)上述過程,直至所有節(jié)點輸出。入隊,并同時檢查是否有兄弟節(jié)點,對于兄弟節(jié)點則D接下來以本題為例來說明此過程。首先將樹根節(jié)點。沒有兄弟節(jié)點,所以隊列此時應(yīng)是:D一并入隊。這里的D入隊,同,所以將BD接下來執(zhí)行出隊操作。D出隊, 出隊以后檢查是否有子節(jié)點,經(jīng)檢查, D有子節(jié)點B。、時將B的兄弟節(jié)點A和E按順序入隊。得到隊列:BA E出隊, A接下來再執(zhí)行出隊操作。B出隊,同時檢查B是否有子節(jié)點,B無子節(jié)點,所以繼續(xù)執(zhí)行出隊操作。、A有子節(jié)點F,所 以將F入隊,同時將F的兄弟節(jié)點P入隊。得到隊列:E、F同時檢查A是否有子節(jié)點,Po 、C P

24、C,所以C出隊。得: F、E接下來再次執(zhí)行出隊操作。E出隊,有子節(jié)點出隊,整P仍無子節(jié)點,最后CF出隊,F(xiàn)無子節(jié)點,繼續(xù)出隊操作, P出隊,接下來再次執(zhí)行出隊操作。個過程結(jié)束。執(zhí)行入隊操作,即。應(yīng)是對根節(jié)點 root通過對算法的詳細分析,我們可以輕松得到答案。(1),此變量無語句對其進行更新,所 brotherptr 。 EnQueue(&tempQ,root)(2)在一個循環(huán)當(dāng)中, 循環(huán)變量是。 應(yīng)填:brotherpu=brotherptr- nextbrotherbrotherptr 以(2)必定是更新。結(jié)合前面的算法分析可知;” 是控制數(shù)據(jù)的輸出,這些數(shù)據(jù)應(yīng)是從隊列中加上后面的語句 p

25、rintf(%c t,ptr- data)(3)、(4)!IsEmpty(tempQ)填:、 (4)得到,所以此處必有出隊操作,同時在出隊之前應(yīng)判斷隊列是否為空,所以 (3)實際上是問“在什么情況下,要持續(xù) 進行出隊操作?”,前面的算法分析中。(5)DeQueue(&tempQ,&ptr)和所在的(7) 已指出:若出隊節(jié)點無子節(jié)點,則繼續(xù) 進行出隊操作,所以(5)填:!ptr-firstchild。(6)和 (6)語句段的功能是將剛出隊節(jié)點的子節(jié)點及其兄弟節(jié)點入隊,所以填:EnQueue(&tempQ,ptr- firstchild) 。 (7)和。brotherptr- nextbrothe

26、r(2) 相同,填:brotherptr- 15.00) 總題數(shù):1,分?jǐn)?shù):五、試題五(說明某游戲公司現(xiàn)欲開發(fā)一款面向兒童的模擬游戲,該游戲主要模擬現(xiàn)實世界中各種鴨子的發(fā)聲特征、飛行特 征和外 觀特征。游戲需要模擬的鴨子種類及其特征如表下表所示。5-1所示。為支持將來能夠模擬更多種類鴨子的特征,采用策略設(shè)計模式(strategy)設(shè)計的類圖如圖.其中,Duck為抽象類,描述了抽象的鴨子,而類 RubberDuck MallardDuck、CottonDuck和RedHeadDuckb另ll描述具體 的鴨子種類,方法fly() 、quack()和display。分別表示不同種類的鴨子都具有飛行特

27、征、發(fā)聲特征和外觀特征;類 FlyBehavior與QuackBehavior為抽象類,分別用于表示抽象白飛行行為與發(fā)聲行為;類FlyNoWay與FlyWithWings分別描述不能飛行的行為和用翅膀飛行的行為;類Quack Squeak與QuackNoWa翁別描述發(fā)出“嘎嘎”聲的行為、發(fā)出橡皮與空氣摩擦聲的行為與不發(fā)聲的行為。請?zhí)钛a以下代碼中的空缺。C+代碼# include using namespace (1); class FlyBehavior public : (2) fly()=01class QuackBehaviorpublic: (3) quack()=0;Class Fl

28、yWithWings :public F1yBehaviorpublic: void fly()cout使用翅膀飛行也 endl;class FlyNoWay :public FlyBehaviorpublic: void fly()cout endl;class Quack :public QuackBehaviorpublic: void quack()cout發(fā)出 嘎嘎聲也 endl;class Squeak :public QuackBehaviorpublic: void quack()cout 發(fā)出空氣與橡皮摩擦聲也 endl; ;class QuackNOWay :public

29、QuackBehaViorpublic: void quack()cout不能發(fā)聲也fly()quackBehaviot- quack()填空項 1: (正確答案: 解析: )1: (正確答 案:FlyNoWay()填空項 解析:)1: (正確答案:Squeak()填空項 本題考查面向?qū)ο蟮某绦蛟O(shè)計 的抽象類和多態(tài)。程序解釋如下:解析解析:標(biāo)準(zhǔn)程序庫中的所有 C+namespace是指標(biāo)識符的各種可見范圍。(1)using namespace (1)std ;/* 所謂 */中。的namespac訴識符都被定義于一個名為std為抽象類,分別用于表示抽象的飛行行為與發(fā)聲行為,QuackBehav

30、iorFlyBehavior與(2)由題中信息:類,需要定義虛函數(shù),用以給子類進 )(即多態(tài)而這兩種行為對應(yīng)的不止是一種方式,為了表示多種行為方式。所以 voidvoid quack()可知,父類中的對應(yīng)函數(shù)返回值也應(yīng)為行重載。再由予類 中的函數(shù)voidfly() 及(3)的填空如下: 和class FlyBehavior public: (2) virtual void fly( )=O;class Qutack: Behavior public: (3) virtual void quack( )=0;類中出現(xiàn)的flvBehavior=newlyNoWay();quackBehavior=

31、new 由子類 RubberDuck(3)Duck 類的定義,(5)填空如下:。所以(4)和Squeak();可知這兩個指針類型對象為 nyBehavior。和quackBehaviorClass Duck protected: FlyBehavior * (4) fiybehavior; QuackBehavior * (5) quackBehavior; 由FlyBehavior * flyBehavior;QuackBehavior * quackBehavior; 及函數(shù)名可知,該函數(shù)體應(yīng)調(diào)用填空如下:(6)和(7)ny函數(shù)和QuackBehavior類中的quack函數(shù)。所以FlyB

32、ehavior類中的public:fiy(); void fly() (6) fiybehavior- quack(); ; void quack() (7) quackBehavior- virtual void display()=0;;是“發(fā)出空氣與橡皮摩擦聲”并且“不能飛行”的鴨子種類,因此構(gòu)RubberDuck(4)由題中所給信息可知和,所以第(8)對應(yīng)的類型分別為 FlyNoWay Squeak造函數(shù)中創(chuàng)建的對象flyBehavior 和quackBehavior (9)空的填空如下:Class RubberDuck: public Duck public:RubberDuck()

33、flyBehavior=new (8) FiyNoWay();quackBehaVior=new (9) Squeak();,分?jǐn)?shù):(總題數(shù):1六、試題六14.00)說明某游戲公司現(xiàn)欲開發(fā)一款面向兒童的模擬游戲,該游戲主要模擬現(xiàn)實世界中各種鴨子的發(fā)聲特征、飛行特 征和外 觀特征。游戲需要模擬的鴨子種類及其特征如下表所示。.為支持將來能夠模擬更多種類鴨子的特征,采用策略設(shè)計模式(Strategy)設(shè)計的類圖如圖6-1所示。其中,Duck為抽象類,描述了抽象的鴨子,而類 RubberDuck MallardDuck、CottonDuck和RedHeadDuckb另ll描述具體 的鴨子種類,方法fl

34、y() 、quack()和display。分別表示不同種類的鴨子都具有飛行特征、分別用于表示抽象的飛行行 為與發(fā)聲行為;類 QuackBehavior與FlyBehavior發(fā)聲特征和外觀特征;接口.QuackNoWayj SqueakFlyNoWa內(nèi)FlyWithWings分別描述不能飛行的行為和用翅膀飛行的行為;類Quack分別描述發(fā)出“嘎嘎”聲的行為、發(fā)出橡皮與空氣摩擦聲的行為與不發(fā)聲的行為。請?zhí)钛a以下代碼中的空缺。.Java代碼 (1) FlyBehaVior public void fly(); ); QuackBehavior public void quack(); ; Clas

35、s FlyWithWings implements FlyBehavior土握瘠楣?泯?度源整?唆?軸潼汴?使用翅膀飛行!); ;Class FlyNoWay implements FlyBehaVior 累讓操瘠楣?泯?度源整?唆?軸潼桶?不能飛行!); ;Class Quack implements QuackBehavior pubiic void quack()Systemoutprintln( 發(fā)出嘎嘎聲!); ;class Squeak implements QuackBehavior public void quack()System.out.println(發(fā)出空氣與橡皮摩擦聲!);Class QuackNoWay implements QuackBehavior public void quack()(System.out.println(不能發(fā)聲!);Abst

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論