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