2016年上半年(下午)《軟件設(shè)計(jì)師》真題
《2016年上半年(下午)《軟件設(shè)計(jì)師》真題》由會(huì)員分享,可在線閱讀,更多相關(guān)《2016年上半年(下午)《軟件設(shè)計(jì)師》真題(9頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、2016年上半年(下午)《軟件設(shè)計(jì)師》真題 注意:圖片可根據(jù)實(shí)際需要調(diào)整大小 卷面總分:6分 答題時(shí)間:240分鐘 試卷題量:6題 練習(xí)次數(shù):0次 問答題 (共6題,共6分) 1.某軟件系統(tǒng)中,已設(shè)計(jì)并實(shí)現(xiàn)了用于顯示地址信息的類Address(如圖5-1所示),現(xiàn)要求提供基于Dutch語言的地址信息顯示接口。為了實(shí)現(xiàn)該要求并考慮到以后可能還會(huì)出現(xiàn)新的語言的接口,決定采用適配器(Adapter)模式實(shí)現(xiàn)該要求,得到如圖5-1所示的類圖。 圖5-1適配器模式類圖 【C++代碼】 #include<i
2、ostream> using namespace std; class Address{ public: void stree( ?。﹞/*實(shí)現(xiàn)代碼省略*/} void zip( ?。﹞/*實(shí)現(xiàn)代碼省略*/} void city( ?。﹞/*實(shí)現(xiàn)代碼省略*/} ∥其他成員省略 }; class DutchAddress{ public: virtual void straat( )=0; virtual void postcode( ?。?0; virtual void plaats( ?。?0; //其他成員省略 }; class DutchAddressA
3、dapter:public DutchAddress{ private: (1); public: DutchAddressAdapter(Address*addr){ address=addr; } void straat( ?。﹞ (2); } void postcode( ?。﹞ (3); } void plaat( ?。﹞ (4); } //其他成員省略 }; void testDutch(DutchAddress*addr){ addr->straat( ?。? addr->postcode( ?。? addr->plaats( ?。? }
4、 int main( ?。﹞ Address*addr=new Address( ?。? (5); cout<<"\n The DutchAddress\n"<<endl; testDutch(addrAdapter); return 0; } 正確答案: 本題解析: (1)Address*address; (2)address->street(); (3)address->zip(); (4)address->city(); (5)DutchAddress*addrAdapter
5、=new DutchAddressAdaptor(addr); 本題考查的是面向?qū)ο蟪绦蛟O(shè)計(jì),結(jié)合設(shè)計(jì)模式。本題涉及的設(shè)計(jì)模式是適配器。 對(duì)于代碼填空,可以參照類圖和代碼上下文補(bǔ)充。 首先理清類與類之間的繼承關(guān)系,再根據(jù)上下文填寫。 對(duì)于第(1)空,DutchAddressAdapter繼承了DutchAddress方法,根據(jù)下面的同名構(gòu)造函數(shù)可知,該類定義了一個(gè)名叫address的參數(shù),而根據(jù)代碼上下文可以,address的類型為Address。本空應(yīng)該填寫Address*address。 第(2)(3)(4)空是接口轉(zhuǎn)換的具體實(shí)現(xiàn),而在DutchAddressAdapter涉及的
6、方法,可以從類圖中找到,分別是straat(),postcode(),plaats(),適配器的目的是接口轉(zhuǎn)換,即用這些方法分別展現(xiàn)原有Address中的street()、zip()、city()方法,因此這3個(gè)空分別填寫address->street()、address->zip()、address->city()。 對(duì)于第(5)空,根據(jù)上下文最終調(diào)用testDutch方法的對(duì)象是addrAdapter,而此處是將原有的Address對(duì)象addr轉(zhuǎn)換為接口對(duì)象,因此此處填寫 DutchAddress*addrAdapter=new DutchAddressAdapter(addr)。
7、 2.某會(huì)議中心提供舉辦會(huì)議的場地設(shè)施和各種設(shè)備,供公司與各類組織機(jī)構(gòu)租用。場地包括一個(gè)大型報(bào)告廳、一個(gè)小型報(bào)告廳以及諸多會(huì)議室。這些報(bào)告廳和會(huì)議室可提供的設(shè)備有投影儀、白板、視頻播放/回放設(shè)備、計(jì)算機(jī)等。為了加強(qiáng)管理,該中心欲開發(fā)一會(huì)議預(yù)訂系統(tǒng),系統(tǒng)的主要功能如下。 (1)檢查可用性??蛻籼峤活A(yù)訂請(qǐng)求后,檢查預(yù)訂表,判定所申請(qǐng)的場地是否在申請(qǐng)日期內(nèi)可用;如果不可用,返回不可用信息。 (2)臨時(shí)預(yù)訂。會(huì)議中心管理員收到客戶預(yù)定請(qǐng)求的通知之后,提交確認(rèn)。系統(tǒng)生成新臨時(shí)預(yù)訂存入預(yù)訂表,并對(duì)新客戶創(chuàng)建一條客戶信息記錄加以保存。根據(jù)客戶記錄給客戶發(fā)送臨時(shí)預(yù)訂確認(rèn)信息和支
8、付定金要求。 (3)分配設(shè)施與設(shè)備。根據(jù)臨時(shí)預(yù)訂或變更預(yù)定的設(shè)備和設(shè)施需求,分配所需設(shè)備(均能滿足用戶要求)和設(shè)施,更新相應(yīng)的表和預(yù)訂表。 (4)確認(rèn)預(yù)訂。管理員收到客戶支付定金的通知后,檢查確認(rèn),更新預(yù)訂表,根據(jù)客戶記錄給客戶發(fā)送預(yù)訂確認(rèn)信息。 (5)變更預(yù)訂??蛻暨€可以在支付余款前提交變更預(yù)訂請(qǐng)求,對(duì)變更的預(yù)訂請(qǐng)求檢查可用性,如果可用,分配設(shè)施和設(shè)備;如果不可用,返回不可用信息。管理員確認(rèn)變更后,根據(jù)客戶記錄給客戶發(fā)送確認(rèn)信息。 (6)要求付款。管理員從預(yù)訂表中查詢距預(yù)訂的會(huì)議時(shí)間兩周內(nèi)的預(yù)定,根據(jù)客戶記錄給滿足條件的客戶發(fā)送支付余款要求。 (7)支付余款。管理員收到客戶余款支付
9、的通知后,檢查確認(rèn),更新預(yù)訂表中的已支付余款信息。 現(xiàn)采用結(jié)構(gòu)化方法對(duì)會(huì)議預(yù)定系統(tǒng)進(jìn)行分析與設(shè)計(jì),獲得如圖1-1所示的上下文數(shù)據(jù)流圖和圖1-2所示的0層數(shù)據(jù)流圖(不完整)。 圖1-1上下文數(shù)據(jù)流圖 圖1-2 0層數(shù)據(jù)流圖 【問題1】(2分) 使用說明中的詞語,給出圖1-1中的實(shí)體E1~E2的名稱。 【問題2】(4分) 使用說明中的詞語,給出圖1-2中的數(shù)據(jù)存儲(chǔ)D1~D4的名稱。 【問題3】(6分) 根據(jù)說明和圖中術(shù)語,補(bǔ)充圖1-2之中缺失的數(shù)據(jù)流及其起點(diǎn)和終點(diǎn)。 【問題4】(3分) 如果發(fā)送給客戶的確認(rèn)信息是通過Email系統(tǒng)向客戶信息中的電子郵件地址進(jìn)行發(fā)送的,
10、那么需要對(duì)圖1-1和1-2進(jìn)行哪些修改?用150字以內(nèi)文字加以說明。 正確答案: 本題解析: 【問題1】 E1:客戶 E2:管理員 【問題2】 D1:預(yù)定表 D2:客戶信息記錄表 D3:設(shè)施表(場地表或場地設(shè)施表) D4:設(shè)備表 注:D3、D4可互換 【問題3】 【問題4】 圖1-1中:增加外部實(shí)體“第三方Email系統(tǒng)”,將臨時(shí)預(yù)訂/預(yù)訂/變更確認(rèn)信息終點(diǎn)均修改至“第三方Email系統(tǒng)”。 圖1-2中:增加外部實(shí)體“第三方Email系統(tǒng)”,增加加工“發(fā)送郵件”,將臨時(shí)預(yù)訂/
11、預(yù)訂/變更確認(rèn)信息終點(diǎn)均修改至“發(fā)送郵件”加工,并增加從D2到“發(fā)送郵件”加工的數(shù)據(jù)流“電子郵件地址”,再從發(fā)送郵件加工引出數(shù)據(jù)流臨時(shí)預(yù)訂/預(yù)訂/變更確認(rèn)信息終點(diǎn)為第三方Email系統(tǒng)。 本題考查數(shù)據(jù)流圖(DFD)應(yīng)用于采用結(jié)構(gòu)化方法進(jìn)行系統(tǒng)分析與設(shè)計(jì),是比較傳統(tǒng)的題目,要求考生細(xì)心分析題目中所描述的內(nèi)容。 DFD是一種便于用戶理解、分析系統(tǒng)數(shù)據(jù)流程的圖形化建模工具,是系統(tǒng)邏輯模型的重要組成部分。 【問題1】 本題要求找到圖1-1中實(shí)體對(duì)應(yīng)關(guān)系,從題干描述,可以找到兩個(gè)實(shí)體,客戶和會(huì)議中心管理員,由“客戶提交預(yù)訂請(qǐng)求后,檢查預(yù)訂表,判定所申請(qǐng)的場地是否在申請(qǐng)日期內(nèi)可用;如果不可用,返回
12、不可用信息?!碧峤活A(yù)定申請(qǐng)并且接收不可用信息的是客戶,因此E1為客戶;“會(huì)議中心管理員收到客戶預(yù)定請(qǐng)求的通知之后,提交確認(rèn)”接收預(yù)定請(qǐng)求的通知,并且提交確認(rèn)的是會(huì)議中心管理員,因此E2為管理員。 【問題2】 本題要求找到圖1-2中存儲(chǔ)對(duì)應(yīng)關(guān)系。 由“客戶提交預(yù)訂請(qǐng)求后,檢查預(yù)訂表,判定所申請(qǐng)的場地是否在申請(qǐng)日期內(nèi)可用;如果不可用,返回不可用信息?!笨芍颂幱蓄A(yù)訂表存儲(chǔ),與1檢查可用性交互,因此D1為預(yù)訂表。 由“系統(tǒng)生成新臨時(shí)預(yù)訂存入預(yù)訂表,并對(duì)新客戶創(chuàng)建一條客戶信息記錄加以保存”,此處與2臨時(shí)預(yù)定有交互的是預(yù)訂表和保存客戶信息記錄的存儲(chǔ),預(yù)訂表已確定為D1,因此D2為存儲(chǔ)客戶信息記錄
13、的文件,可命名為客戶記錄、客戶表、客戶信息記錄表等形式。 由“根據(jù)臨時(shí)預(yù)訂或變更預(yù)定的設(shè)備和設(shè)施需求,分配所需設(shè)備(均能滿足用戶要求)和設(shè)施,更新相應(yīng)的表和預(yù)訂表”,此處與3分配設(shè)施與設(shè)備相關(guān)的存儲(chǔ)由預(yù)訂表,設(shè)施和設(shè)備相應(yīng)的表,因此D3、D4為設(shè)施表、設(shè)備表,二者可互換。 【問題3】 本題要求找到圖1-2中缺失的數(shù)據(jù)流。 對(duì)于缺失數(shù)據(jù)流的查找,一般首先根據(jù)父圖與子圖平衡的原則查找,再根據(jù)題干說明查找,一般來說題干中的說明都可以在圖中找到對(duì)應(yīng)的數(shù)據(jù)流。 根據(jù)子圖與父圖平衡原則: 圖1-1由付款憑據(jù)數(shù)據(jù)流,而在1-2中對(duì)應(yīng)由已支付定金憑據(jù),是對(duì)父圖數(shù)據(jù)流的拆分,因此此處缺失已支付余款憑
14、據(jù),起點(diǎn)為E1客戶,終點(diǎn)為7支付余款。 圖1-1有系統(tǒng)到客戶的預(yù)定確認(rèn)信息,而1-2中沒有,因此此處缺失數(shù)據(jù)流預(yù)定確認(rèn)信息,起點(diǎn)是4確認(rèn)預(yù)定,終點(diǎn)是E1客戶。 根據(jù)題干描述查找: 根據(jù)“(4)確認(rèn)預(yù)訂。管理員收到客戶支付定金的通知后,檢查確認(rèn),更新預(yù)訂表,根據(jù)客戶記錄給客戶發(fā)送預(yù)訂確認(rèn)信息”,對(duì)于4確認(rèn)預(yù)定加工,有輸出到管理員的客戶支付定金通知,輸出到預(yù)訂表更新支付確認(rèn),輸出到客戶,發(fā)送預(yù)定確認(rèn)信息(上面已補(bǔ)充此數(shù)據(jù)流),此時(shí)缺少根據(jù)客戶記錄,即起點(diǎn)為客戶表的輸入數(shù)據(jù)流-客戶記錄。對(duì)于5變更預(yù)定、6要求付款,都需要根據(jù)客戶記錄發(fā)送消息,因此都缺失起點(diǎn)為客戶表的客戶記錄數(shù)據(jù)流,同時(shí),對(duì)于6
15、要求付款加工還需要“管理員從預(yù)訂表中查詢距預(yù)訂的會(huì)議時(shí)間兩周內(nèi)的預(yù)訂”,此處還缺少查詢預(yù)訂結(jié)果的返回,即起點(diǎn)為D1預(yù)訂表的“距預(yù)訂的會(huì)議時(shí)間兩周內(nèi)的預(yù)訂”數(shù)據(jù)流。 【問題4】 圖1-1中:增加外部實(shí)體“第三方Email系統(tǒng)”,將臨時(shí)預(yù)訂/預(yù)訂/變更確認(rèn)信息終點(diǎn)均修改至“第三方Email系統(tǒng)”。 圖1-2中:增加外部實(shí)體“第三方Email系統(tǒng)”,增加加工“發(fā)送郵件”,將臨時(shí)預(yù)訂/預(yù)訂/變更確認(rèn)信息終點(diǎn)均修改至“發(fā)送郵件”加工,并增加從D2到“發(fā)送郵件”加工的數(shù)據(jù)流“電子郵件地址”,再從發(fā)送郵件加工引出數(shù)據(jù)流,臨時(shí)預(yù)訂/預(yù)訂/變更確認(rèn)信息終點(diǎn)為第三方Email系統(tǒng)。如下圖所示:
16、 3.某銷售公司當(dāng)前的銷售業(yè)務(wù)為商城實(shí)體店銷售?,F(xiàn)該公司擬開展網(wǎng)絡(luò)銷售業(yè)務(wù),需要開發(fā)一個(gè)信息化管理系統(tǒng)。請(qǐng)根據(jù)公司現(xiàn)有業(yè)務(wù)及需求完成該系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)。 【需求描述】 (1)記錄公司所有員工的信息。員工信息包括工號(hào)、身份證號(hào)、姓名、性別、出生日期和電話,并只登記一部電話。 (2)記錄所有商品的信息。商品信息包括商品名稱、生產(chǎn)廠家、銷售價(jià)格和商品介紹。系統(tǒng)內(nèi)部用商品條碼唯一區(qū)別每種商品。 (3)記錄所有顧客的信息。顧客信息包括顧客姓名、身份證號(hào)、登錄名、登錄密碼、和電話號(hào)碼。一位顧客只能提供一個(gè)電話號(hào)碼。系統(tǒng)自動(dòng)生成唯一的顧客編號(hào)。 (4)顧客登錄系統(tǒng)之后,在網(wǎng)上
17、商城購買商品。顧客可將選購的商品置入虛擬的購物車內(nèi),購物車可長期存放顧客選購的所有商品。顧客可在購物車內(nèi)選擇商品、修改商品數(shù)量后生成網(wǎng)購訂單。訂單生成后,由顧客選擇系統(tǒng)提供的備選第三方支付平臺(tái)進(jìn)行電子支付,支付成功后系統(tǒng)需要記錄唯一的支付憑證編號(hào),然后由商城根據(jù)訂單進(jìn)行線下配送。 (5)所有的配送商品均由倉庫統(tǒng)一出庫。為方便顧客,允許每位顧客在系統(tǒng)中提供多組收貨地址、收貨人及聯(lián)系電話。一份訂單所含的多個(gè)商品可能由多名分揀員根據(jù)商品所在倉庫信息從倉庫中進(jìn)行分揀操作,分揀后的商品交由配送員根據(jù)配送單上的收貨地址進(jìn)行配送。 (6)新設(shè)計(jì)的系統(tǒng)要求記錄實(shí)體店的每筆銷售信息,包括營業(yè)員、顧客、所售商
18、品及其數(shù)量。 【概念模型設(shè)計(jì)】 根據(jù)需求階段收集的信息,設(shè)計(jì)的實(shí)體聯(lián)系圖(不完整)如圖所示。 【邏輯結(jié)構(gòu)設(shè)計(jì)】 根據(jù)概念模型設(shè)計(jì)階段完成的實(shí)體聯(lián)系圖,得出如下關(guān)系模式(不完整): 員工(工號(hào),身份證號(hào),姓名,性別,出生日期,電話) 商品(商品條碼,商品名稱,生產(chǎn)廠家,銷售價(jià)格,商品介紹,(a)) 顧客(顧客編號(hào),姓名,身份證號(hào),登錄名,登錄密碼,電話) 收貨地點(diǎn)(收貨ID,顧客編號(hào),收貨地址,收貨人,聯(lián)系電話) 購物車(顧客編號(hào),商品條碼,商品數(shù)量) 訂單(訂單ID,顧客編號(hào),商品條碼,商品數(shù)量,(b)) 分檢(分揀ID,分揀員工號(hào),(c),分揀時(shí)間) 配送(配送I
19、D,分揀ID,配送員工號(hào),收貨ID,配送時(shí)間,簽收時(shí)間,簽收快照) 銷售(銷售ID,營業(yè)員工號(hào),顧客編號(hào),商品條碼,商品數(shù)量) 【問題1】(4分) 補(bǔ)充圖中的“配送“聯(lián)系所關(guān)聯(lián)的對(duì)象及聯(lián)系類型。 【問題2】(6分) 補(bǔ)充邏輯結(jié)構(gòu)設(shè)計(jì)中的(a)、(b)和(c)三處空缺。 【問題3】(5分) 對(duì)于實(shí)體店銷售,若要增加送貨上門服務(wù),由營業(yè)員在系統(tǒng)中下訂單,與網(wǎng)購的訂單進(jìn)行后續(xù)的統(tǒng)一管理。請(qǐng)根據(jù)該需求,對(duì)圖進(jìn)行補(bǔ)充,并修改訂單關(guān)系模式。 正確答案: 本題解析: 【問題1】 補(bǔ)充內(nèi)容如圖中虛線所示
20、: 【問題2】 (a)所在倉庫 (b)支付憑證 (c)訂單ID,商品條碼 【問題3】 補(bǔ)充內(nèi)容如圖中虛線所示: 關(guān)系模式:訂單(訂單ID,顧客編號(hào)(FK),商品條碼(FK),商品數(shù)量,銷售ID(FK),支付憑證)。 注:用FK標(biāo)注外鍵。 本題考查數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)和邏輯結(jié)構(gòu)設(shè)計(jì)。 此類題目要求考生認(rèn)真閱讀題目中的需求描述,配合已給出的E-R圖,理解概念結(jié)構(gòu)設(shè)計(jì)中設(shè)計(jì)者對(duì)實(shí)體及聯(lián)系的劃分和組織方法,結(jié)合需求描述完成E-R圖中空缺部分,并使用E-R圖向關(guān)系模式的轉(zhuǎn)換方法,完成邏輯結(jié)構(gòu)設(shè)計(jì)。 【問題1】 根據(jù)所給E-R圖,結(jié)合需求描述,購物車作為顧客和商品之間的聯(lián)系,
21、而訂單由顧客從購物車中選擇商品生成,因此將購物車這一聯(lián)系當(dāng)作實(shí)體,與訂單實(shí)體產(chǎn)生聯(lián)系。將聯(lián)系當(dāng)作實(shí)體參與另一聯(lián)系,稱為聚合,通常當(dāng)后一聯(lián)系與此聯(lián)系相關(guān)時(shí),采用這種設(shè)計(jì)方法。顧客可以從購物車中生成多個(gè)訂單,一個(gè)訂單只能從一個(gè)購物車?yán)锾崛∩唐?,屬于一?duì)多聯(lián)系。 根據(jù)需求描述中的“分揀后的商品交由配送員根據(jù)配送單上的收貨地址進(jìn)行配送?!笨梢灾?,配送是與分揀聯(lián)系相關(guān)的聯(lián)系,同樣的,將分揀聯(lián)系進(jìn)行聚合,參與配送聯(lián)系,同時(shí)參與配送聯(lián)系的還有配送員和地點(diǎn),為多對(duì)多對(duì)多聯(lián)系,語義為配送員根據(jù)分揀結(jié)構(gòu)按照收貨地點(diǎn)進(jìn)行配送,與需求相符。 【問題2】 本小題考核E-R圖向關(guān)系模式的轉(zhuǎn)換。由于E-R圖中沒有畫
22、出實(shí)體及聯(lián)系的屬性,需要根據(jù)需求描述進(jìn)行補(bǔ)充。根據(jù)需求中的“一種商品只能放在一個(gè)倉庫中”和“一份訂單所含的多個(gè)商品可能由多名分揀員根據(jù)商品的所在倉庫信息從倉庫中進(jìn)行分揀操作”,可以確定“所在倉庫”作為商品實(shí)體的屬性,轉(zhuǎn)入商品關(guān)系中。 訂單關(guān)系由E-R圖中的訂單實(shí)體和一對(duì)多聯(lián)系網(wǎng)站合并而成,取一方的主碼,即購物車這一聯(lián)系的主碼,為參與該聯(lián)系的實(shí)體的主碼商品條碼和顧客編號(hào),加上網(wǎng)購聯(lián)系的屬性數(shù)量,并入到訂單實(shí)體轉(zhuǎn)成的關(guān)系模式中。訂單ID為訂單實(shí)體的標(biāo)識(shí)符,訂單實(shí)體的其他屬性需要通過需求描述中獲取。根據(jù)需求“訂單生成后,由顧客選擇系統(tǒng)提供的備選第三方支付平臺(tái)進(jìn)行電子支付,支付成功后系統(tǒng)需要記錄唯一
23、的支付憑證編號(hào)”,支付憑證編號(hào)應(yīng)為訂單的屬性,轉(zhuǎn)入訂單關(guān)系中。 E-R圖中的分揀聯(lián)系為分揀員與訂單之間的多對(duì)多聯(lián)系,轉(zhuǎn)換成獨(dú)立的分揀關(guān)系模式,應(yīng)包含分揀員實(shí)體的標(biāo)識(shí)符分揀員工號(hào)和訂單實(shí)體的標(biāo)識(shí)符訂單ID,“一份訂單所含的多個(gè)商品可能由多名分揀員根據(jù)商品所在倉庫信息從倉庫中進(jìn)行分揀操作”,需要補(bǔ)充商品條碼號(hào)加以區(qū)分,及分揀聯(lián)系的屬性分揀時(shí)間。 【問題3】 實(shí)體店的訂單是營業(yè)員根據(jù)銷售結(jié)果生成的,將銷售聯(lián)系聚合成實(shí)體,與訂單產(chǎn)生聯(lián)系。一筆銷售對(duì)應(yīng)一個(gè)訂單,一個(gè)訂單對(duì)應(yīng)一筆銷售,為一對(duì)一聯(lián)系。轉(zhuǎn)換為關(guān)系模式時(shí),將此聯(lián)系歸入訂單關(guān)系,即取銷售的標(biāo)識(shí)符銷售ID加入到訂單關(guān)系模式中。
24、 4.某軟件公司欲設(shè)計(jì)實(shí)現(xiàn)一個(gè)虛擬世界仿真系統(tǒng)。系統(tǒng)中的虛擬世界用于模擬現(xiàn)實(shí)世界中的不同環(huán)境(由用戶設(shè)置并創(chuàng)建),用戶通過操作仿真系統(tǒng)中的1~2個(gè)機(jī)器人來探索虛擬世界。機(jī)器人維護(hù)著兩個(gè)變量b1和b2,用來保存從虛擬世界中讀取的字符。 該系統(tǒng)的主要功能描述如下: (1)機(jī)器人探索虛擬世界(RunRobots)。用戶使用編輯器(Editor)編寫文件以設(shè)置想要模擬的環(huán)境,將文件導(dǎo)入系統(tǒng)(LoadFile)從而在仿真系統(tǒng)中建立虛擬世界(SetupWorld)。機(jī)器人在虛擬世界中的行為也在文件中進(jìn)行定義,建立機(jī)器人的探索行為程序(SetupProgram)。機(jī)器人在虛擬世界中探索時(shí)
25、(RunProgram),有2種運(yùn)行模式: ①自動(dòng)控制(Run):事先編排好機(jī)器人的動(dòng)作序列(指令(Instruction)),執(zhí)行指令,使機(jī)器人可以連續(xù)動(dòng)作。若干條指令構(gòu)成機(jī)器人的指令集(InstructionSet)。 ②單步控制(Step):自動(dòng)控制方式的一種特殊形式,只執(zhí)行指定指令中的一個(gè)動(dòng)作。 (2)手動(dòng)控制機(jī)器人(ManipulateRobots)。選定1個(gè)機(jī)器人后(SelectRobot),可以采用手動(dòng)方式控制它。手動(dòng)控制有4種方式: ①M(fèi)ove:機(jī)器人朝著正前方移動(dòng)一個(gè)交叉點(diǎn)。 ②Left:機(jī)器人原地沿逆時(shí)針方向旋轉(zhuǎn)90度。 ③Read:機(jī)器人讀取其所在位置的字符,
26、并將這個(gè)字符的值賦給b1;如果這個(gè)位置上沒有字符,則不改變b1的當(dāng)前值。 ④Write:將b1中的字符寫入機(jī)器人當(dāng)前所在的位置,如果這個(gè)位置上已經(jīng)有字符,該字符的值將會(huì)被b1的值替代。如果這時(shí)b1沒有值,即在執(zhí)行Write動(dòng)作之前沒有執(zhí)行過任何Read動(dòng)作,那么需要提示用戶相應(yīng)的錯(cuò)誤信息(ShowErrors)。 手動(dòng)控制與單步控制的區(qū)別在于,單步控制時(shí)執(zhí)行的是指令中的動(dòng)作,只有一種控制方式,即執(zhí)行下個(gè)動(dòng)作;而手動(dòng)控制時(shí)有4種動(dòng)作。 現(xiàn)采用面向?qū)ο蠓椒ㄔO(shè)計(jì)并實(shí)現(xiàn)該仿真系統(tǒng),得到如圖3-1所示的用例圖和圖3-2所示的初始類圖。圖3-2中的類“Interpreter”和“Parser”用于解
27、析描述虛擬世界的文件以及機(jī)器人行為文件中的指令集。 圖3-1用例圖 圖3-2初始類圖 【問題1】(6分) 根據(jù)說明中的描述,給出圖3-1中U1~U6所對(duì)應(yīng)的用例名。 【問題2】(4分) 圖3-1中用例U1~U6分別與哪個(gè)(哪些)用例之間有關(guān)系,是何種關(guān)系? 【問題3】(5分) 根據(jù)說明中的描述,給出圖3-2中C1~C5所對(duì)應(yīng)的類名。 正確答案: 本題解析: 【問題1】 U1/U2:Run、Step U3:Write U4/U5/U6:Move、Left、Read 【問題2
28、】 U1和U2和RunProgram有泛化關(guān)系。 U3,U4,U5,U6和Manipulate Robots有泛化關(guān)系。 【問題3】 C1:World/虛擬世界 C2:Robots C3:Instruction C4:InstructionSet C5:Errors 本題考查的是面向?qū)ο骍ML建模內(nèi)容,涉及到用例圖和類圖。 在本題中部分信息隱含,有一定難度,需要認(rèn)真閱讀并理解題干說明。 【問題1】 問題1要求補(bǔ)充U1~U6用例名,答案可根據(jù)題干說明和圖示關(guān)系判斷,較為容易,具體分析過程如下: (1)對(duì)于U1、U2用例與Run Program相關(guān),從題干說明“機(jī)器人在虛
29、擬世界中探索時(shí)(RunProgram),有2種運(yùn)行模式:①自動(dòng)控制(Run)…②單步控制(Step)…”,因此可以判斷U1、U2分別為Run和Step用例,二者位置可以互換。 (2)從題干說明“手動(dòng)控制機(jī)器人(ManipulateRobots)。選定1個(gè)機(jī)器人后(SelectRobot),可以采用手動(dòng)方式控制它。手動(dòng)控制有4種方式:①M(fèi)ove:…②Left:…③Read:…④Write:…”可以看到與ManipulateRobots相關(guān)的用例有Move,Left,Read,Write,又根據(jù)Write的說明“即在執(zhí)行Write動(dòng)作之前沒有執(zhí)行過任何Read動(dòng)作,那么需要提示用戶相應(yīng)的錯(cuò)誤信息
30、(ShowErrors)”可以看到,與ShowErrors相關(guān)的用例是Write,即U3為Write。剩余U4、U5、U6分別為Move、Left、Read,三者位置可以互換。 【問題2】 判斷用例之間的關(guān)系。用例之間的關(guān)系有三種:泛化、擴(kuò)展和包含。 包含關(guān)系:其中這個(gè)提取出來的公共用例稱為抽象用例,而把原始用例稱為基本用例或基礎(chǔ)用例系。當(dāng)可以從兩個(gè)或兩個(gè)以上的用例中提取公共行為時(shí),應(yīng)該使用包含關(guān)系來表示它們。 擴(kuò)展關(guān)系:如果一個(gè)用例明顯地混合了兩種或兩種以上的不同場景,即根據(jù)情況可能發(fā)生多種分支,則可以將這個(gè)用例分為一個(gè)基本用例和一個(gè)或多個(gè)擴(kuò)展用例,這樣使描述可能更加清晰。 泛化關(guān)
31、系:當(dāng)多個(gè)用例共同擁有一種類似的結(jié)構(gòu)和行為的時(shí)候,可以將它們的共性抽象成為父用例,其他的用例作為泛化關(guān)系中的子用例。在用例的泛化關(guān)系中,子用例是父用例的一種特殊形式,子用例繼承了父用例所有的結(jié)構(gòu)、行為和關(guān)系。 (1)RunProgram有兩種運(yùn)行模式,即Run和Step分別是RunProgram的一種,二者與RunProgram是特殊/一般的關(guān)系,RunProgram與U1、U2是泛化關(guān)系。 (2)同理,Move、Left、Read、Write分別是手動(dòng)控制的四種方式之一,因此,這四者與Manipulate Robots是特殊/一般的關(guān)系,即Manipulate Robots與U3、U4、
32、U5、U6是泛化關(guān)系。 【問題3】 問題3由于部分信息隱含,所以難度較大。 (1)首先根據(jù)類圖,存在2組部分與整體的關(guān)系,分別是C3-C4,C1-C2,其中多重度關(guān)系:C4包含1~n個(gè)C3,C1包含1~2個(gè)C2,且C1和C4都與Interpreter、Parser有關(guān)。 (2)根據(jù)說明“類“Interpreter”和“Parser”用于解析描述虛擬世界的文件以及機(jī)器人行為文件中的指令集”,因此C1、C4分別是虛擬世界的文件和機(jī)器人行為文件中的指令集,后者題干給出為Instruction Set。其中滿足1…n多重度的應(yīng)該為指令I(lǐng)nstruction和InstructionSet,因此,
33、C3為Instruction,C4為InstructionSet。C1是虛擬世界的文件,可以寫作World(題干中虛擬世界只描述為World)。對(duì)于C2與World有1~2的多重度關(guān)系,根據(jù)題干說明,只有“用戶通過操作仿真系統(tǒng)中的1~2個(gè)機(jī)器人來探索虛擬世界”符合要求,因此C2為機(jī)器人(Robot/Robots)。 (3)剩下C5與World相關(guān),根據(jù)題干描述“用戶使用編輯器(Editor)編寫文件以設(shè)置想要模擬的環(huán)境,將文件導(dǎo)入系統(tǒng)(LoadFile)從而在仿真系統(tǒng)中建立虛擬世界(SetupWorld)”,因此建立虛擬世界需要編輯器編輯文件,并將文件導(dǎo)入仿真系統(tǒng),因此C5為仿真系統(tǒng)。
34、 5.某軟件系統(tǒng)中,已設(shè)計(jì)并實(shí)現(xiàn)了用于顯示地址信息的類Address(如圖6-1所示),現(xiàn)要求提供基于Dutch語言的地址信息顯示接口。為了實(shí)現(xiàn)該要求并考慮到以后可能還會(huì)出現(xiàn)新的語言的接口,決定采用適配器(Adapter)模式實(shí)現(xiàn)該要求,得到如圖6-1所示的類圖。 圖6-1適配器模式類圖 【Java代碼】 import java.util.*; Class Address{ public void street( ?。﹞//實(shí)現(xiàn)代碼省略} public void zip( ?。﹞//實(shí)現(xiàn)代碼省略} public void city( ?。﹞//實(shí)現(xiàn)代
35、碼省略} //其他成員省略 }; class DutchAddress{ public void straat( ){//實(shí)現(xiàn)代碼省略} public void postcode( ?。﹞//實(shí)現(xiàn)代碼省略} public void plaats( ?。﹞//實(shí)現(xiàn)代碼省略} //其他成員省略 }; class DutchAddressAdapter extends DutchAddress{ private(1); public DutchAddressAdapter(Address addr){ address=addr; } public void straat
36、( ?。﹞ (2); } public void postcode( ?。﹞ (3); } public void plaats( ?。﹞ (4); } //其他成員省略 }; class Test{ public static void main(String[]args){ Address addr=new Address( ?。? (5); System.out.println("\n The DutchAddress\n"); testDutch(addrAdapter); } Static void?testDutch(DutchAddress a
37、ddr){ addr.straat( ?。? addr.postcode( ?。? addr.plaats( ?。? } } 正確答案: 本題解析: (1)Address address; (2)address.street(); (3)address.zip(); (4)address.city(); (5)DutchAddress addrAdapter=new DutchAddressAdapter(addr); 本題考查的是面向?qū)ο蟪绦蛟O(shè)計(jì),結(jié)合設(shè)計(jì)模式。本題涉及的設(shè)計(jì)模式是
38、適配器。 對(duì)于代碼填空,可以參照類圖和代碼上下文補(bǔ)充。 首先理清類與類之間的繼承關(guān)系,再根據(jù)上下文填寫。 對(duì)于第(1)空,DutchAddressAdapter繼承了DutchAddress方法,根據(jù)下面的同名構(gòu)造函數(shù)可知,該類定義了一個(gè)名叫address的參數(shù),而根據(jù)代碼上下文可以,address的類型為Address。本空應(yīng)該填寫Address?address; 第(2)(3)(4)空是接口轉(zhuǎn)換的具體實(shí)現(xiàn),而在DutchAddressAdapter涉及的方法,可以從類圖中找到,分別是straat(),postcode(),plaats(),適配器的目的是接口轉(zhuǎn)換,即用這些方法分別展
39、現(xiàn)原有Address中的street()、zip()、city()方法,因此這3個(gè)空分別填寫address.street()、address.zip()、address.city()。 對(duì)于第(5)空,根據(jù)上下文最終調(diào)用testDutch方法的對(duì)象是addrAdapter,而此處是將原有的Address對(duì)象addr轉(zhuǎn)換為接口對(duì)象,因此此處填寫 DutchAddress addrAdapter=new?DutchAddressAdapter(addr)。 6.在一塊電路板的上下兩端分別有n個(gè)接線柱。根據(jù)電路設(shè)計(jì),用(i,π(i))表示將上端接線柱i與下端接線柱
40、π(i)相連,稱其為該電路板上的第i條連線。如圖4-1所示的π(i)排列為{8,7,4,2,5,1,9,3,10,6}。對(duì)于任何1≤i<j≤n,第i條連線和第j條連線相交的充要條件是π(i)>π(j)。 圖4-1電路布線示意 在制作電路板時(shí),要求將這n條連線分布到若干絕緣層上,在同一層上的連線不相交?,F(xiàn)在要確定將哪些連線安排在一層上,使得該層上有盡可能多的連線,即確定連線集Nets={(i,π(i)),1≤i≤n}的最大不相交子集。 【分析問題】 記N(i,j)={t|(t,π(t))∈Nets,t≤i,π(t)≤j}。N(i,j)的最大不相交子集為MNS(i,j),size(i,
41、j)=|MNS(i,j)|。 經(jīng)分析,該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。對(duì)規(guī)模為n的電路布線問題,可以構(gòu)造如下遞歸式: 【C代碼】 下面是算法的C語言實(shí)現(xiàn)。 (1)變量說明 size[i][j]:上下端分別有i個(gè)和j個(gè)接線柱的電路板的第一層最大不相交連接數(shù) pi[i]:π(i),下標(biāo)從1開始 (2)C程序 #include"stdlib.h" #include<stdio.h> #define?N?10/*問題規(guī)模*/ int m=0;/*記錄最大連接集合中的接線柱*/ void maxNum(int pi[],int size[N+1][N+1],int n){/*求最大
42、不相交連接數(shù)*/ int i,j; for(j=0;j<pi[1];j++)size[1][j]=0;/*當(dāng)j<π(1)時(shí)*/ for(j=pi[1];j<=n;j++)(1);/*當(dāng)j>=π(1)時(shí)*/ for(i=2;i<n;i++){ for(j=0;j<pi[i];j++)(2);/*當(dāng)j<pi[i]時(shí)*/ for(j=pi[i];j<=n;j++){/*當(dāng)j>=c[i]時(shí),考慮兩種情況*/ size[i][j]=size[i-1][j]>=size[i-1][pi[i]-1]+1?size[i-1][j]:size[i-1][pi[i]-1]+1; } } /*最
43、大連接數(shù)*/ size[n][n]=size[n-1][n]>=size[n-1][pi[n]-1]+1?size[n-1][n]:size[n-1][pi[n]-1]+1; } /*構(gòu)造最大不相交連接集合,net[i]表示最大不相交子集中第i條連線的上端接線柱的序號(hào)*/ void constructSet(int pi[],int size[N+1][N+1],int n,int net[n]){ int i,j=n; m=0; for(i=n;i>1;i--){/*從后往前*/ if(size[i][j]!=size[i-1][j]){/*(i,pi[i])是最大不相交子集
44、的一條連線*/ (3);/*將i記錄到數(shù)組net中,連接線數(shù)自增1*/ j=pi[i]-1;/*更新擴(kuò)展連線柱區(qū)間*/ } } if(j>=pi[1])net[m++]=1;/*當(dāng)i=1時(shí)*/ } 【問題1】(6分) 根據(jù)以上說明和C代碼,填充C代碼中的空(1)~(3)。 【問題2】(6分) 據(jù)題干說明和以上C代碼,算法采用了(4)算法設(shè)計(jì)策略。 函數(shù)maxNum和constructSet的時(shí)間復(fù)雜度分別為(5)和(6)(用O表示)。 【問題3】(3分) 若連接排列為{8,7,4,2,5,1,9,3,10,6},即如圖4-1所示,則最大不相交連接數(shù)為(7),包含的連線
45、為(8)(用(i,π(i))的形式給出)。 正確答案: 本題解析: 【問題1】 (1)size[1][j]=1 (2)size[i][j]=size[i-1][j] (3)net[m++]=i; 【問題2】 (4)動(dòng)態(tài)規(guī)劃算法 (5)O(n2) (6)O(n) 【問題3】 (7)4 (8)(3,π(3),(5,π(5)),(7,π(7)),(9,π(9)) 或:(3,4),(5,5),(7,9),(9,10) 本題是算法設(shè)計(jì)題,涉及的算法策略是動(dòng)態(tài)規(guī)劃法。 【問題1】 本題要
46、求補(bǔ)充代碼,主要參照代碼注釋、題干的算法思路和遞歸式即可得到。 對(duì)于第(1)空,有注釋“當(dāng)j>=π(1)時(shí)”,此時(shí)屬于i=1的其他情況,找到遞歸式的條件,所以(1)空填寫size[1][j]=1; 對(duì)于第(2)空,有注釋“當(dāng)j<π(i)時(shí)”,此時(shí)屬于i>1時(shí),j<π(i)的條件,找到遞歸式對(duì)應(yīng)條件,所以(2)空填寫size[i][j]=size[i-1][j]; 對(duì)于第(3)空,有注釋“將i記錄到數(shù)組net中,連接線數(shù)自增1”,將i記錄到net數(shù)組,即net[]=i,其中net位置應(yīng)該時(shí)連接線數(shù)m,此時(shí)為m++,因此(3)空填寫net[m++]=i。本空也可以根據(jù)后面的代碼推導(dǎo)。 【問
47、題2】 1、根據(jù)題干描述“經(jīng)分析,該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。對(duì)規(guī)模為n的電路布線問題,可以構(gòu)造如下遞歸式”,根據(jù)最優(yōu)子結(jié)構(gòu)可判斷本題使用的是動(dòng)態(tài)規(guī)劃法的算法策略。 2、根據(jù)代碼,可以看到maxNum函數(shù)有兩層嵌套循環(huán),因此時(shí)間復(fù)雜度為O(n2)。 3、根據(jù)代碼,可以看到constructSet函數(shù)只有一層循環(huán)結(jié)構(gòu),因此事件復(fù)雜度為O(n)。 【問題3】 這個(gè)是動(dòng)態(tài)規(guī)劃問題,不相交的平行線。 設(shè)a[i][j]為上端接線柱i與下端接線柱j前的最大不相交子集,則: 若i與j不相連,則i與j前的最大不想交子集等于i與j-1前或i-1與j前的最大不相交子集的最大值,即a[i][j]=max(a[i][j-1],a[i-1][j]) 若i與j相連,則i與j前的最大不想交子集等于i-1與j-1前的最大不想交子集加1,即a[i][j]=a[i-1][j-1]+1 題目的意思就是要求出,沒有交叉的這種連線的數(shù)量達(dá)到最大的情況。此時(shí),有4條這樣的線不會(huì)交叉,所以是大不相交子集連接數(shù)為4。如果你能找到5條這樣不交叉的線,則是5。就這個(gè)意思。 由此可得,最大不相交連接數(shù)為4,包含的連接線為:(3,π(3),(5,π(5)),(7,π(7)),(9,π(9))
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級(jí)《觀潮》課件1 (3)
- 中考數(shù)學(xué)課件浙教版中考數(shù)學(xué)數(shù)與式(1)
- 食品安全及其評(píng)價(jià)體系課件
- 不規(guī)則物體的體積初成-PPT
- 抑郁癥的防治
- 優(yōu)選光輻射測量系統(tǒng)的性能及其測量課件
- 14通往廣場的路不止一條課件
- 石油能源行業(yè)2020工作總結(jié)與2020工作計(jì)劃ppt模板
- 微生物鏈霉菌和其在生產(chǎn)中的應(yīng)用
- 優(yōu)質(zhì)護(hù)理服務(wù)措施ppt
- 小小的書櫥課件(北師大版語文三年級(jí)下冊(cè))
- 第6章國際貨物運(yùn)輸2
- 氣胸的健康指導(dǎo)ppt課件
- 認(rèn)識(shí)計(jì)算機(jī)鍵盤微課
- 先天性髖關(guān)節(jié)脫位X線診斷