2013年下半年(下午)《軟件設(shè)計(jì)師》真題
《2013年下半年(下午)《軟件設(shè)計(jì)師》真題》由會(huì)員分享,可在線閱讀,更多相關(guān)《2013年下半年(下午)《軟件設(shè)計(jì)師》真題(8頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、2013年下半年(下午)《軟件設(shè)計(jì)師》真題 注意:圖片可根據(jù)實(shí)際需要調(diào)整大小 卷面總分:6分 答題時(shí)間:240分鐘 試卷題量:6題 練習(xí)次數(shù):0次 問(wèn)答題 (共6題,共6分) 1.欲開(kāi)發(fā)一個(gè)繪圖軟件,要求使用不同的繪圖程序繪制不同的圖形。以繪制直線和圓形為例,對(duì)應(yīng)的繪圖程序如表5-1所示。 表5-1不同的繪圖程序 該繪圖軟件的擴(kuò)展性要求,將不斷擴(kuò)充新的圖形和新的繪圖程序。為了避免出現(xiàn)類爆炸的情況,現(xiàn)采用橋接(Bridge)模式來(lái)實(shí)現(xiàn)上述要求,得到如圖5-1所示的類圖。 圖5-1類圖 【C+
2、+代碼】 class?DP1{ public: static void draw_a_line(double?x1,double?y1,double?x2,double?y2){/*代碼省略*/} static void draw_a_circle(double?x,double?y,double?r){/*代碼省略*/} }; class?DP2{ public: static void drawline(double x1,double x2,double y1,double y2){/*代碼省略*/} static void drawcircle(double x,do
3、uble y,double r){/*代碼省略*/} }; class?Drawing{ public: (1); (2); }; class V1Drawing:public Drawing{ public: void drawLine(double?x1,double?y1,double?x2,double?y2){/*代碼省略*/} void drawCircle(double?x,double?y,double?r){(3);} }; class V2Drawing:public?Drawing{ public: void drawLine(double?x
4、1,double?y1,double?x2,double?y2){/*代碼省略*/} void drawCircle(double?x,double y,double?r){(4);} }; class Shape{ public: (5); Shape(Drawing*dp){_dp=dp;} void drawLine(double?x1,double?y1,double?x2,double y2){_dp->drawLine(x1,y1,x2,y2);} void drawCircle(double?x,double?y,double r){_dp->drawCircle
5、(x,y,r);} private:Drawing*_dp; }; class?Rectangle:public?Shape{ public: void draw( ){/*代碼省略*/} //其余代碼省略 }; class Circle:public Shape{ private:double_x,_y,_r; public: Circle(Drawing*dp,double x,double?y,double r):(6){_x=x;_y=y;_r=r;} void draw( ?。﹞drawCircle(_x,_y,_r);} };
6、 正確答案: 本題解析: (1)virtual void drawLine(double x1,double y1,double x2,double y2)=0 (2)virtual void drawCircle(double x,double y,double r)=0 (3)DP1::draw_a_circle(x,y,r) (4)DP2::drawcircle(x,y,r) (5)virtual void?draw()=0 (6)Shape(dp) 根據(jù)類圖,可知:Drawing類有兩個(gè)函數(shù)drawLine()
7、、drawCircle(),在從繼承于它的兩個(gè)子類V1Drawing、V2Drawing中drawLine()、drawCircle()得到返回值類型為void及函數(shù)參數(shù)。則(1)為virtual void drawLine(double x1,double y1,double x2,double y2)=0;(2)為virtual void drawCircle(double x,double y,double r)=0。 根據(jù)V1Drawing與DP1之間的關(guān)聯(lián)關(guān)系,V2Drawing與DP2之間的關(guān)聯(lián)關(guān)系,可知(3)是去調(diào)用DP1中的靜態(tài)函數(shù)draw_a_circle(double x
8、,double y,double r),則(3)為DP1::draw_a_circle(x,y,r);(4)問(wèn)同理,答案為DP2::drawcircle(x,y,r)。 (5)問(wèn)從類圖中可知,Shape有三個(gè)方法draw()、drawLine()、drawCircle();分析題目中給出的Shape的定義,少了一個(gè)draw()函數(shù),可知(5)為draw(),在根據(jù)繼承于Shape的Circle和Rectangle分析,函數(shù)返回值為void,參數(shù)為空,則(5)為virtual void draw()=0。 (6)空考查繼承結(jié)構(gòu)中子類構(gòu)造函數(shù)的定義。構(gòu)造子類對(duì)象時(shí),需要調(diào)用基類的構(gòu)造函數(shù),這可
9、以通過(guò)初始化列表顯式指明需要調(diào)用的基類的構(gòu)造函數(shù)。在本題中,上文Shape類只定義了一個(gè)構(gòu)造函數(shù),所以這里填寫(xiě)的應(yīng)該為“Shape(dp)”。 2.某大學(xué)欲開(kāi)發(fā)一個(gè)基于Web的課程注冊(cè)系統(tǒng)。該系統(tǒng)的主要功能如下: 1、驗(yàn)證輸入信息 (1)檢查學(xué)生信息:檢查學(xué)生輸入的所有注冊(cè)所需信息。如果信息不合法,返回學(xué)生信息不合法提示;如果合法,輸出合法學(xué)生信息。 (2)檢查學(xué)位考試信息:檢查學(xué)生提供的學(xué)位考試結(jié)果。如果不合法,返回學(xué)位考試結(jié)果不合法提示;如果合法,檢查該學(xué)生注冊(cè)資格。 (3)檢查學(xué)生資格:根據(jù)合法學(xué)生信息和合法學(xué)位考試結(jié)果,檢查該學(xué)生對(duì)欲選課程的
10、注冊(cè)資格。如果無(wú)資格,返回?zé)o注冊(cè)資格提示;如果有注冊(cè)資格,則輸出注冊(cè)學(xué)生信息(包含選課學(xué)生標(biāo)識(shí))和欲注冊(cè)課程信息。 2、處理注冊(cè)申請(qǐng) (1)存儲(chǔ)注冊(cè)信息:將注冊(cè)學(xué)生信息記錄在學(xué)生庫(kù)。 (2)存儲(chǔ)所注冊(cè)課程:將選課學(xué)生標(biāo)識(shí)與欲注冊(cè)課程進(jìn)行關(guān)聯(lián),然后存入課程庫(kù)。 (3)發(fā)送注冊(cè)通知:從學(xué)生庫(kù)中讀取注冊(cè)學(xué)生信息,從課程庫(kù)中讀取所注冊(cè)課程信息,給學(xué)生發(fā)送接受提示;給教務(wù)人員發(fā)送所注冊(cè)課程信息和已注冊(cè)學(xué)生信息。 現(xiàn)采用結(jié)構(gòu)化方法對(duì)課程注冊(cè)系統(tǒng)進(jìn)行分析和設(shè)計(jì),獲得如圖1-1所示的0層數(shù)據(jù)流圖和圖1-2所示的1層數(shù)據(jù)流圖。 圖1-1 0層數(shù)據(jù)流圖 圖1-2 1層數(shù)據(jù)流圖 【問(wèn)題1
11、】(2分) 使用說(shuō)明中的詞語(yǔ),給出圖1-1中的實(shí)體E1和E2的名稱。 【問(wèn)題2】(2分) 使用說(shuō)明中的詞語(yǔ),給出圖1-2中的數(shù)據(jù)存儲(chǔ)D1和D2的名稱。 【問(wèn)題3】(8分) 根據(jù)說(shuō)明和圖中術(shù)語(yǔ),補(bǔ)充圖1-2中缺失的數(shù)據(jù)流及其起點(diǎn)和終點(diǎn)。 【問(wèn)題4】(3分) 根據(jù)補(bǔ)充完整的圖1-1和圖1-2,說(shuō)明上層的哪些數(shù)據(jù)流是由下層的哪些數(shù)據(jù)流組合而成。 正確答案: 本題解析: 【問(wèn)題1】 E1:學(xué)生 E2:教務(wù)人員 【問(wèn)題2】 D1:學(xué)生庫(kù) D2:課程庫(kù) 【問(wèn)題3】 【問(wèn)題4】 0層
12、圖中的“不合法提示”對(duì)應(yīng)著1層圖中的“學(xué)生信息不合法提示”、“學(xué)位考試結(jié)果不合法提示”、“無(wú)注冊(cè)資格提示”。 0層圖中的“注冊(cè)學(xué)生信息”對(duì)應(yīng)1層圖中的“選課學(xué)生標(biāo)識(shí)”和“注冊(cè)學(xué)生信息”。 【問(wèn)題1】 分析實(shí)體E1和E2的名稱,需要從兩方面著手: (1)了解什么是實(shí)體。實(shí)體又叫外部實(shí)體,是位于系統(tǒng)外部,但與系統(tǒng)有交互的對(duì)象,包括:人員,機(jī)構(gòu)和其它系統(tǒng)等。在此題中,通讀題目說(shuō)明可知能充當(dāng)實(shí)體的有:學(xué)生和教務(wù)人員。 (2)分析題目與圖的對(duì)應(yīng)關(guān)系,從0層圖可以看出“接受提示”信息將流至E1,而“所注冊(cè)課程信息”和“已注冊(cè)學(xué)生信息”將流至E2。題目說(shuō)明有“給學(xué)生發(fā)送接受提示;給教務(wù)人員發(fā)送所注
13、冊(cè)課程信息和已注冊(cè)學(xué)生信息”,所以從此處斷定E1是學(xué)生,而E2是教務(wù)人員。 【問(wèn)題2】 分析存儲(chǔ)D1與D2的名稱非常容易,由于題目說(shuō)明中有“將注冊(cè)學(xué)生信息記錄在學(xué)生庫(kù)”和“將選課學(xué)生標(biāo)識(shí)與欲注冊(cè)課程進(jìn)行關(guān)聯(lián),然后存入課程庫(kù)”,而題目中1層數(shù)據(jù)流圖的2.1與2.2加工正好與這兩句對(duì)應(yīng),從此處可知D1為學(xué)生庫(kù),而D2為課程庫(kù)。 【問(wèn)題3】 尋找缺失的數(shù)據(jù)流主要從兩方面考慮:一方面是數(shù)據(jù)流圖的平衡原則,父圖中有的數(shù)據(jù)流,在子圖中也應(yīng)該有;另一方面就是從題目描述的文字說(shuō)明信息的角度分析,圖與文字說(shuō)明是對(duì)同一系統(tǒng)的不同描述,他們應(yīng)保持一致。 (1)由于說(shuō)明中提到“檢查學(xué)生信息:檢查學(xué)生輸入的所
14、有注冊(cè)所需信息。如果信息不合法,返回學(xué)生信息不合法提示”,所以缺從“1.1檢查學(xué)生信息”到“E1(或?qū)W生)”的數(shù)據(jù)流“學(xué)生信息不合法提示”。 (2)由于說(shuō)明中提到“檢查學(xué)位考試信息:檢查學(xué)生提供的學(xué)位考試結(jié)果。如果不合法,返回學(xué)位考試結(jié)果不合法提示”,所以缺從“1.2檢查學(xué)位考試結(jié)果”到“E1(或?qū)W生)”的數(shù)據(jù)流“學(xué)位考試結(jié)果不合法提示”。 (3)由于說(shuō)明中提到“檢查學(xué)生資格:根據(jù)合法學(xué)生信息和合法學(xué)位考試結(jié)果,檢查該學(xué)生對(duì)欲選課程的注冊(cè)資格。如果無(wú)資格,返回?zé)o注冊(cè)資格提示”,所以缺從“1.3檢查學(xué)生注冊(cè)資格”到“E1(或?qū)W生)”的數(shù)據(jù)流“無(wú)注冊(cè)資格提示”。 (4)由于說(shuō)明中提到“發(fā)送注
15、冊(cè)通知:從學(xué)生庫(kù)中讀取注冊(cè)學(xué)生信息,從課程庫(kù)中讀取所注冊(cè)課程信息,給學(xué)生發(fā)送接受提示”,所以缺從“2.3發(fā)送注冊(cè)通知”到“E1(或?qū)W生)”的數(shù)據(jù)流“接受提示”。 【問(wèn)題4】 要求說(shuō)明上層的哪些數(shù)據(jù)流是由下層的哪些數(shù)據(jù)流組合而成,只需要把之前已經(jīng)補(bǔ)充完整的數(shù)據(jù)流圖進(jìn)行對(duì)比,即可得到結(jié)果。 由于在0層圖中有“不合法提示”,而在1層圖中沒(méi)有此數(shù)據(jù)流,有表達(dá)同樣意思的3條子數(shù)據(jù)流:“學(xué)生信息不合法提示”、“學(xué)位考試結(jié)果不合法提示”、“無(wú)注冊(cè)資格提示”,所以他們存在對(duì)應(yīng)關(guān)系。 由于在1層圖中有“選課學(xué)生標(biāo)識(shí)”,而在0層圖中沒(méi)有此數(shù)據(jù)流,而根據(jù)題干描述,“輸出注冊(cè)學(xué)生信息(包含選課學(xué)生標(biāo)識(shí))”,因
16、此,此數(shù)據(jù)流應(yīng)該是從“注冊(cè)學(xué)生信息”中分解出的,也就是說(shuō)0層圖中的“注冊(cè)學(xué)生信息”,應(yīng)該由下層“注冊(cè)學(xué)生信息”和“選課學(xué)生標(biāo)識(shí)”組成。 3.某快遞公司為了方便管理公司物品運(yùn)送的各項(xiàng)業(yè)務(wù)活動(dòng),需要構(gòu)建一個(gè)物品運(yùn)送信息管理系統(tǒng)。 【需求分析結(jié)果】 (1)快遞公司有多個(gè)分公司,分公司信息包括分公司編號(hào)、名稱、經(jīng)理、辦公電話和地址。每個(gè)分公司可以有多名員工處理分公司的日常業(yè)務(wù),每位員工只能在一個(gè)分公司工作。每個(gè)分公司由一名經(jīng)理負(fù)責(zé)管理分公司的業(yè)務(wù)和員工,系統(tǒng)需要記錄每個(gè)經(jīng)理的任職時(shí)間。 (2)員工信息包括員工號(hào)、姓名、崗位、薪資、手機(jī)號(hào)和家庭地址。其中,員工號(hào)唯一
17、標(biāo)識(shí)員工信息的每一個(gè)元組。崗位包括經(jīng)理、調(diào)度員、業(yè)務(wù)員等。業(yè)務(wù)員根據(jù)客戶提交的快件申請(qǐng)單進(jìn)行快件受理事宜,一個(gè)業(yè)務(wù)員可以受理多個(gè)客戶的快件申請(qǐng),一個(gè)快件申請(qǐng)只能由一個(gè)業(yè)務(wù)員受理。調(diào)度員根據(jù)已受理的申請(qǐng)單安排快件的承運(yùn)事宜,例如:執(zhí)行承運(yùn)的業(yè)務(wù)員、運(yùn)達(dá)時(shí)間等。一個(gè)業(yè)務(wù)員可以執(zhí)行調(diào)度員安排的多個(gè)快件的承運(yùn)業(yè)務(wù)。 (3)客戶信息包括客戶號(hào)、單位名稱、通信地址、所屬省份、聯(lián)系人、聯(lián)系電話、銀行賬號(hào)。其中,客戶號(hào)唯一標(biāo)識(shí)客戶信息的每一個(gè)元組。當(dāng)客戶要寄快件時(shí),先要提交快件申請(qǐng)單,申請(qǐng)?zhí)栍上到y(tǒng)自動(dòng)生成??旒暾?qǐng)信息包括申請(qǐng)?zhí)?、客戶?hào)、發(fā)件人、發(fā)件人電話、快件名稱、運(yùn)費(fèi)、發(fā)出地、收件人、收件人電話、收件地
18、址。其中,一個(gè)申請(qǐng)?zhí)枌?duì)應(yīng)唯一的一個(gè)快件申請(qǐng),一個(gè)客戶可以提交多個(gè)快件申請(qǐng),但一個(gè)快件申請(qǐng)由唯一的一個(gè)客戶提交。 【概念模型設(shè)計(jì)】 根據(jù)需求階段收集的信息,設(shè)計(jì)的實(shí)體聯(lián)系圖(圖2-1)和關(guān)系模型(不完整)如下: 【關(guān)系模型設(shè)計(jì)】 分公司(分公司編號(hào),名稱,經(jīng)理,辦公電話,地址) 員工(員工號(hào),姓名,(a),崗位,薪資,手機(jī)號(hào),家庭地址) 客戶(客戶號(hào),單位名稱,通信地址,所屬省份,聯(lián)系人,聯(lián)系電話,銀行賬號(hào)) 申請(qǐng)單((b),發(fā)件人,發(fā)件人電話,發(fā)件人地址,快件名稱,運(yùn)費(fèi),收件人,收件人電話,收件地址,受理標(biāo)志,業(yè)務(wù)員) 安排承運(yùn)((c),實(shí)際完成時(shí)間,調(diào)度員) 【問(wèn)題1】
19、(5分) 根據(jù)問(wèn)題描述,補(bǔ)充五個(gè)聯(lián)系,完善圖2-1的實(shí)體聯(lián)系圖。聯(lián)系名可用聯(lián)系1、聯(lián)系2、聯(lián)系3、聯(lián)系4和聯(lián)系5代替,聯(lián)系的類型分為1:1、1:n和m:n(或1:1、1:*和*:*)。 【問(wèn)題2】(6分) (1)根據(jù)實(shí)體聯(lián)系圖,將關(guān)系模式中的空(a)~(c)補(bǔ)充完整; (2)給出員工、申請(qǐng)單和安排承運(yùn)關(guān)系模式的主鍵和外鍵。 【問(wèn)題3】(4分) (1)客戶關(guān)系的通信地址可以進(jìn)一步分為郵編、省、市、街道,那么該屬性是否屬于簡(jiǎn)單屬性,為什么?請(qǐng)用100字以內(nèi)的文字說(shuō)明。 (2)假設(shè)分公司需要增設(shè)一位經(jīng)理的職位,那么分公司與經(jīng)理之間的聯(lián)系類型應(yīng)修改為(d),分公司的主鍵應(yīng)修改為(e)。
20、 正確答案: 本題解析: 【問(wèn)題1】 【問(wèn)題2】 (a)分公司編號(hào) (b)申請(qǐng)?zhí)?,客戶?hào) (c)申請(qǐng)?zhí)枺瑯I(yè)務(wù)員 員工:主鍵:?jiǎn)T工號(hào);外鍵:分公司編號(hào)。 申請(qǐng)單:主鍵:申請(qǐng)?zhí)?;外鍵:客戶號(hào),業(yè)務(wù)員。 安排承運(yùn):主鍵:申請(qǐng)?zhí)枺煌怄I:業(yè)務(wù)員,調(diào)度員。 【問(wèn)題3】 通信地址不是簡(jiǎn)單屬性而是一個(gè)復(fù)合屬性,因?yàn)樵搶傩钥刹鸱譃槎鄠€(gè)屬性。 (d)1:n (e)(分公司編號(hào),經(jīng)理) 【問(wèn)題1】 概念模型設(shè)計(jì)中補(bǔ)充聯(lián)系這類題是考試時(shí)非常固定的考查模式,需要補(bǔ)充的聯(lián)系往往需要從問(wèn)題給出的說(shuō)明來(lái)進(jìn)行
21、分析。 (1)從“每個(gè)分公司可以有多名員工處理分公司的日常業(yè)務(wù),每位員工只能在一個(gè)分公司工作?!笨梢钥闯?,員工與分公司之間的應(yīng)該是有一種隸屬關(guān)系的。由于一個(gè)分公司可以有多名員工,一名員工只能屬于一個(gè)公司,所以分公司與員工存在1對(duì)多的關(guān)系。 (2)從“每個(gè)分公司由一名經(jīng)理負(fù)責(zé)管理分公司的業(yè)務(wù)和員工,系統(tǒng)需要記錄每個(gè)經(jīng)理的任職時(shí)間。”可以看出分公司與經(jīng)理之間存在1對(duì)1的關(guān)系。 (3)從“一個(gè)業(yè)務(wù)員可以受理多個(gè)客戶的快件申請(qǐng),一個(gè)快件申請(qǐng)只能由一個(gè)業(yè)務(wù)員受理。”可以看出業(yè)務(wù)員與申請(qǐng)單之間存在1對(duì)多的關(guān)系。 (4)從“調(diào)度員根據(jù)已受理的申請(qǐng)單安排快件的承運(yùn)事宜,例如:執(zhí)行承運(yùn)的業(yè)務(wù)員、運(yùn)達(dá)時(shí)間
22、等。一個(gè)業(yè)務(wù)員可以執(zhí)行調(diào)度員安排的多個(gè)快件的承運(yùn)業(yè)務(wù)?!笨梢钥闯稣{(diào)度員與申請(qǐng)單之間存在1對(duì)多的關(guān)系。與此同時(shí)承運(yùn)的業(yè)務(wù)員與申請(qǐng)單之間也存在1對(duì)多的關(guān)系。 (5)從“當(dāng)客戶要寄快件時(shí),先要提交快件申請(qǐng)單,申請(qǐng)?zhí)栍上到y(tǒng)自動(dòng)生成??旒暾?qǐng)信息包括申請(qǐng)?zhí)枴⒖蛻籼?hào)…”可以看出客戶與申請(qǐng)單之間存在1對(duì)多的關(guān)系。 【問(wèn)題2】 問(wèn)題1要求補(bǔ)充關(guān)系模型設(shè)計(jì),在對(duì)關(guān)系模型設(shè)計(jì)進(jìn)行補(bǔ)充完善時(shí),需要從兩方面考慮:一方面是關(guān)系中應(yīng)包含說(shuō)明中相關(guān)實(shí)體必須的信息;另一方面是實(shí)體之間需要聯(lián)系,聯(lián)系是通過(guò)屬性來(lái)達(dá)到效果的,此時(shí)也會(huì)增加關(guān)系模式中的屬性。 對(duì)于員工關(guān)系而言,題目說(shuō)明中的信息已經(jīng)全了,缺的只能是與其它實(shí)體保
23、持聯(lián)系的屬性,即分公司編號(hào)。申請(qǐng)單關(guān)系的內(nèi)容從題目說(shuō)明“快件申請(qǐng)信息包括申請(qǐng)?zhí)枴⒖蛻籼?hào)、發(fā)件人…”可以看出,缺申請(qǐng)?zhí)柡涂蛻籼?hào)。從題目說(shuō)明“調(diào)度員根據(jù)已受理的申請(qǐng)單安排快件的承運(yùn)事宜,例如:執(zhí)行承運(yùn)的業(yè)務(wù)員、運(yùn)達(dá)時(shí)間等?!笨梢钥闯霭才懦羞\(yùn)關(guān)系缺申請(qǐng)?zhí)柡蜆I(yè)務(wù)員兩個(gè)屬性。 至于主鍵與外鍵根據(jù)其定義直接識(shí)別即可: 對(duì)于員工關(guān)系,“員工號(hào)唯一標(biāo)識(shí)員工信息的每一個(gè)元組”,因此“員工號(hào)”為主鍵,而分公司編號(hào)是分公司關(guān)系的主鍵,因此是員工關(guān)系的外鍵。 對(duì)于申請(qǐng)單關(guān)系,“一個(gè)申請(qǐng)?zhí)枌?duì)應(yīng)唯一的一個(gè)快件申請(qǐng)”,因此“申請(qǐng)?zhí)枴睘橹麈I,而客戶號(hào)是客戶關(guān)系的主鍵,業(yè)務(wù)員是業(yè)務(wù)員的員工號(hào),也就是員工關(guān)系的主鍵,因此,
24、客戶號(hào)、業(yè)務(wù)員是申請(qǐng)單關(guān)系的外鍵。 對(duì)于安排承運(yùn)關(guān)系,“調(diào)度員根據(jù)已受理的申請(qǐng)單安排快件的承運(yùn)事宜”,因此“申請(qǐng)?zhí)枴睘橹麈I,而業(yè)務(wù)員、調(diào)度員對(duì)應(yīng)的都是員工號(hào),也就是員工關(guān)系的主鍵,因此,業(yè)務(wù)員、調(diào)度員是安排承運(yùn)關(guān)系的外鍵。 【問(wèn)題3】 由于客戶關(guān)系的通信地址可以進(jìn)一步分為郵編、省、市、街道,所以該屬性已具備復(fù)合屬性的特點(diǎn),不是一個(gè)簡(jiǎn)單屬性。 假設(shè)分公司需要增設(shè)一位經(jīng)理的職位,那么分公司與經(jīng)理之間的聯(lián)系類型應(yīng)修改為1對(duì)多,分公司的主鍵應(yīng)該修改為(分公司編號(hào),經(jīng)理)。 4.欲開(kāi)發(fā)一個(gè)繪圖軟件,要求使用不同的繪圖程序繪制不同的圖形。以繪制直線和圓形為例,對(duì)
25、應(yīng)的繪圖程序如表6-1所示。 表6-1不同的繪圖程序 該繪圖軟件的擴(kuò)展性要求,將不斷擴(kuò)充新的圖形和新的繪圖程序。為了避免出現(xiàn)類爆炸的情況,現(xiàn)采用橋接(Bridge)模式來(lái)實(shí)現(xiàn)上述要求,得到如圖6-1所示的類圖。 圖6-1類圖 【Java代碼】 (1)Drawing{ (2); (3); } class DP1{ static public void draw_a_line(double x1,double y1,double x2,double y2){/*代碼省略*/} static public void draw_a_circle(double x,doub
26、le y,double r){/*代碼省略*/} } class DP2{ static public void drawline(double x1,double y1,double x2,double y2){/*代碼省略*/} static public void drawcircle(double x,double y,double r){/*代碼省略*/} } class V1Drawing implements Drawing{ public void drawLine(double x1,double y1,double x2,double y2){/*代碼省略*/
27、} public void drawCircle(double x,double y,double r){(4);} } class V2Drawing implements Drawing{ public void drawLine(double x1,double y1,double x2,double y2){/*代碼省略*/} public void drawCircle(double x,double y,double r){(5);} } abstract class Shape{ private Drawing_dp; (6); Shape(Drawing d
28、p){_dp=dp;} public void drawLine(double x1,double y1,double x2,double y2){_dp.drawLine(x1,y1,x2,y2);} public void drawCircle(double x,double y,double r){_dp.drawCircle(x,y,r);} } class Rectangle extends Shape{ private double_x1,_x2,_y1,_y2; public Rectangle(Drawing dp,double x1,double y1,doubl
29、e x2,double y2){/*代碼省略*/} public void draw( ?。﹞/*代碼省略*/} } class Circle extends Shape{ private double_x,_y,_r; public Circle(Drawing dp,double x,double y,double r){/*代碼省略*/} public void draw( ?。﹞drawCircle(_x,_y,_r);} } 正確答案: 本題解析: (1)public interf
30、ace或interface (2)public void drawLine(double x1,double y1,double x2,double y2)或void drawLine(double x1,double y1,double x2,double y2) (3)public void drawCircle(double x,double y,double r)或void drawCircle(double x,double y,double r) (4)DP1.draw_a_circle(x,y,r) (5)DP2.drawcircle(x,y,r) (6)abstra
31、ct public void draw() 本題考查Java面向?qū)ο蟪绦蛟O(shè)計(jì)。這類題型主要涉及兩個(gè)方面的考查內(nèi)容:Java語(yǔ)法與設(shè)計(jì)模式。所謂語(yǔ)法考查是要求考生清楚接口、抽象類、抽象方法等的定義,相關(guān)意思能用正確方式表達(dá)出來(lái)。而設(shè)計(jì)模式層次的考查主要是模式間關(guān)聯(lián)的建立。 在本題中,(1)~(3)都是典型的語(yǔ)法問(wèn)題,由于Drawing在后面被實(shí)現(xiàn)(implements)了,所以他是一個(gè)接口,幫(1)為:public interface。繼續(xù)通過(guò)這條線索分析可知,Drawing應(yīng)有drawLine和drawCircle兩個(gè)方法的定義。故(2)(3)分別為:public void drawLin
32、e(double x1,double y1,double x2,double y2)和public void drawCircle(double x,double y,double r)。 接下來(lái)的第(4)和(5)是同樣類型的空,都需要完成函數(shù)的實(shí)現(xiàn)部分,此處的實(shí)現(xiàn),一般不要求考生真正實(shí)現(xiàn)功能,而是通過(guò)別的函數(shù)完成該職能。從對(duì)應(yīng)的類圖可以了解到V1Drawing與DP1存在依賴關(guān)系,而DP1中有draw_a_circle()的函數(shù)已完成了畫(huà)圓的操作,所以在此只需要調(diào)用這個(gè)方法即可。所以(4)和(5)分別為:DP1.draw_a_circle(x,y,r)和DP2.drawcircle(x,y
33、,r)。最后的(6),可以通過(guò)分析類圖得知,因?yàn)轭悎D中標(biāo)明Shape類中有:draw()、drawLine()和drawCircle()三個(gè)函數(shù),而在Shape類中缺draw(),所以需要補(bǔ)上該函數(shù)的定義,即abstract public void draw()。 5.某航空公司會(huì)員積分系統(tǒng)(CFrequentFlyer)的主要功能描述如下: 乘客只要辦理該航空公司的會(huì)員卡,即可成為普卡會(huì)員(CBasic)。隨著飛行里程數(shù)的積累,可以從普卡會(huì)員升級(jí)到銀卡會(huì)員(CSilver)或金卡會(huì)員(CGold)。非會(huì)員(CNonMember)不能積累里程數(shù)。 每年年
34、末,系統(tǒng)根據(jù)會(huì)員在本年度累積的里程數(shù)對(duì)下一年會(huì)員等級(jí)進(jìn)行調(diào)整。 普卡會(huì)員在一年內(nèi)累積的里程數(shù)若滿25000英里但不足50000英里,則自動(dòng)升級(jí)為銀卡會(huì)員;若累積的里程數(shù)在50000英里以上,則自動(dòng)升級(jí)為金卡會(huì)員。銀卡會(huì)員在一年內(nèi)累積的里程數(shù)若在50000英里以上,則自動(dòng)升級(jí)為金卡會(huì)員。 若一年內(nèi)沒(méi)有達(dá)到對(duì)應(yīng)級(jí)別要求的里程數(shù),則自動(dòng)降低會(huì)員等級(jí)。金卡會(huì)員一年內(nèi)累積的里程數(shù)若不足25000英里,則自動(dòng)降級(jí)為普卡會(huì)員;若累積的里程數(shù)達(dá)到25000英里,但是不足50000英里,則自動(dòng)降級(jí)為銀卡會(huì)員。銀卡會(huì)員一年內(nèi)累積的里程數(shù)若不足25000英里,則自動(dòng)降級(jí)為普卡會(huì)員。 采用面向?qū)ο蠓椒▽?duì)會(huì)員積分
35、系統(tǒng)進(jìn)行分析與設(shè)計(jì),得到如圖3-1所示的狀態(tài)圖和圖3-2所示的類圖。 圖3-1狀態(tài)圖 圖3-2的類圖 【問(wèn)題1】(6分) 根據(jù)說(shuō)明中的描述,給出圖3-1中S1~S3處所對(duì)應(yīng)的狀態(tài)以及T1~T3處所對(duì)應(yīng)的遷移的名稱。 【問(wèn)題2】(4分) 根據(jù)說(shuō)明中的描述,給出圖3-2中C1~C4所對(duì)應(yīng)的類名(類名使用說(shuō)明中給出的英文詞匯)。 【問(wèn)題3】(5分) 圖3-2所示的類圖中使用了哪種設(shè)計(jì)模式?在這種設(shè)計(jì)模式下,類CFrequentFlyer必須具有的屬性是什么?C1~C4中的travel方法應(yīng)具有什么功能? 正確答案:
36、 本題解析: 【問(wèn)題1】(6分) S1:普卡會(huì)員 S2:銀卡會(huì)員 S3:金卡會(huì)員 T1:25000<=里程<50000 T2:里程>=50000 T3:里程>=50000 【問(wèn)題2】(4分) C1~C4:CNonMember、CBasic、CSilver、CGold 【問(wèn)題3】(5分) (1)狀態(tài)模式 (2)記錄下一狀態(tài)的屬性 (3)判斷什么情況進(jìn)入下一狀態(tài) 【問(wèn)題1】 系統(tǒng)中的狀態(tài)圖,是對(duì)狀態(tài)轉(zhuǎn)換的圖形化表達(dá)。從題目的說(shuō)明部分可知,在狀態(tài)轉(zhuǎn)換過(guò)程中,涉及到的狀態(tài)一共有四種:非會(huì)員,普卡會(huì)員,銀卡會(huì)員,金卡會(huì)員。從狀態(tài)圖涉及的轉(zhuǎn)換可
37、知S1~S3分別為:普卡會(huì)員,銀卡會(huì)員,金卡會(huì)員。關(guān)于狀態(tài)轉(zhuǎn)換的分析如下: (1)由于普卡會(huì)員在一年內(nèi)若累積的里程數(shù)在50000英里以上,則自動(dòng)升級(jí)為金卡會(huì)員,所以T3為:里程>=50000。 (2)由于銀卡會(huì)員在一年內(nèi)累積的里程數(shù)若在50000英里以上,則自動(dòng)升級(jí)為金卡會(huì)員,所以T2為:里程>=50000。 (3)由于一年內(nèi)沒(méi)有達(dá)到對(duì)應(yīng)級(jí)別要求的里程數(shù),則自動(dòng)降低會(huì)員等級(jí)。金卡會(huì)員一年累積的里程數(shù)達(dá)到25000英里,但是不足50000英里,則自動(dòng)降級(jí)為銀卡會(huì)員,所以T1為:25000<=里程<50000。 【問(wèn)題2】 問(wèn)題2非常容易,說(shuō)明中給出的英文詞匯一共只有5個(gè),有著同屬于一個(gè)
38、父類的四個(gè)子類關(guān)系的,也就只有:CNonMember、CBasic、CSilver、CGold這四個(gè)了,并且這四個(gè)類位置可以互換。 【問(wèn)題3】 該問(wèn)題要求分析類圖所采用的設(shè)計(jì)模式,此處由于涉及到狀態(tài)的轉(zhuǎn)換問(wèn)題,所以首選應(yīng)是設(shè)計(jì)模式中的狀態(tài)模式。由于狀態(tài)模式的標(biāo)準(zhǔn)UML圖為: 與題目給出的圖示完全一致,所以可以斷定本題所采用的設(shè)計(jì)模式就是狀態(tài)模式。 由于是狀態(tài)模式,所以在類CFrequentFlyer中必須有屬性能記錄下一個(gè)狀態(tài),同時(shí)travel方法也需要能準(zhǔn)確判斷什么情況應(yīng)該進(jìn)入下一狀態(tài)。 6.某工程計(jì)算中要完成多個(gè)矩陣相乘(鏈乘)的計(jì)算任務(wù)。 兩
39、個(gè)矩陣相乘要求第一個(gè)矩陣的列數(shù)等于第二個(gè)矩陣的行數(shù),計(jì)算量主要由進(jìn)行乘法運(yùn)算的次數(shù)決定。采用標(biāo)準(zhǔn)的矩陣相乘算法,計(jì)算Am×n*Bn×p,需要m*n*p次乘法運(yùn)算。 矩陣相乘滿足結(jié)合律,多個(gè)矩陣相乘,不同的計(jì)算順序會(huì)產(chǎn)生不同的計(jì)算量。以矩陣A110×100,A2100×5,A35×50三個(gè)矩陣相乘為例,若按(A1*A2)*A3計(jì)算,則需要進(jìn)行10*100*5+10*5*50=7500次乘法運(yùn)算;若按A1*(A2*A3)計(jì)算,則需要進(jìn)行100*5*50+10*100*50=75000次乘法運(yùn)算??梢?jiàn)不同的計(jì)算順序?qū)τ?jì)算量有很大的影響。 矩陣鏈乘問(wèn)題可描述為:給定n個(gè)矩陣<A1,A2,….An>
40、,矩陣Ai的維數(shù)為pi-1×pi,其中i=1,2,….n。確定一種乘法順序,使得這n個(gè)矩陣相乘時(shí)進(jìn)行乘法的運(yùn)算次數(shù)最少。 由于可能的計(jì)算順序數(shù)量非常龐大,對(duì)較大的n,用蠻力法確定計(jì)算順序是不實(shí)際的。經(jīng)過(guò)對(duì)問(wèn)題進(jìn)行分析,發(fā)現(xiàn)矩陣鏈乘問(wèn)題具有最優(yōu)子結(jié)構(gòu),即若A1*A2*…*An的一個(gè)最優(yōu)計(jì)算順序從第k個(gè)矩陣處斷開(kāi),即分為A1*A2*….Ak和Ak+1*Ak+2*…*An兩個(gè)子問(wèn)題,則該最優(yōu)解應(yīng)該包含A1*A2*…*Ak的一個(gè)最優(yōu)計(jì)算順序和Ak+1*Ak+2*…An的一個(gè)最優(yōu)計(jì)算順序。據(jù)此構(gòu)造遞歸式, 其中,cost[i][j]表示Ai+1*Ai+2*...Aj+1的最優(yōu)計(jì)算的計(jì)算代價(jià)。最終
41、需要求解cost[0][n-1]。 【C代碼】 算法實(shí)現(xiàn)采用自底向上的計(jì)算過(guò)程。首先計(jì)算兩個(gè)矩陣相乘的計(jì)算量,然后依次計(jì)算3個(gè)矩陣、4個(gè)矩陣、…、n個(gè)矩陣相乘的最小計(jì)算量及最優(yōu)計(jì)算順序。下面是算法的C語(yǔ)言實(shí)現(xiàn)。 (1)主要變量說(shuō)明 n:矩陣數(shù) seq[]:矩陣維數(shù)序列 cost[][]:二維數(shù)組,長(zhǎng)度為n*n,其中元素cost[i][j]表示Ai+1*Ai+2*…Aj+1的最優(yōu)計(jì)算的計(jì)算代價(jià) trace[][]:二維數(shù)組,長(zhǎng)度為n*n,其中元素trace[i][j]表示Ai+1*Ai+2*Aj+1的最優(yōu)計(jì)算對(duì)應(yīng)的劃分位置,即k (2)函數(shù)cmm #define?N?100
42、int cost[N][N]; int trace[N][N]; int cmm(int n,int seq[]){ int tempCost; int tempTrace; int i,j,k,p; int temp; for(i=0;i<n;i++){cost[i][i]=0;} for(p=1;p<n;p++){ for(i=0;(1);i++){ (2); tempCost=-1; for(k=i;k<j;k++){ temp=(3); if(tempCost==-1||tempCost>temp){ tempCost=temp; (4); } }
43、 cost[i][j]=tempCost; trace[i][j]=tempTrace; } } return cost[0][n-1]; } 【問(wèn)題1】(8分) 根據(jù)以上說(shuō)明和C代碼,填充C代碼中的空(1)~(4)。 【問(wèn)題2】(4分) 根據(jù)以上說(shuō)明和C代碼,該問(wèn)題采用了(5)算法設(shè)計(jì)策略,時(shí)間復(fù)雜度(6)。(用O符號(hào)表示) 【問(wèn)題3】(3分) 考慮實(shí)例n=6,各個(gè)矩陣的維數(shù):A1為5*10,A2為10*3,A3為3*12,A4為12*5,A5為5*50,A6為50*6,即維數(shù)序列為5,10,3,12,5,50,6。則根據(jù)上述C代碼得到的一個(gè)最優(yōu)計(jì)算順序?yàn)椋?)(用加括
44、號(hào)方式表示計(jì)算順序),所需要的乘法運(yùn)算次數(shù)為(8)。 正確答案: 本題解析: 【問(wèn)題1】 (1)i<n-p (2)j=i+p (3)cost[i][k]+cost[k+1][j]+seq[i]*seq[k+1]*seq[j+1] (4)tempTrace=k 【問(wèn)題2】 (5)動(dòng)態(tài)規(guī)劃法 (6)O(n3) 【問(wèn)題3】 (7)((A1A2)((A3A4)(A5A6))) (8)2010 在解答本題時(shí),需要注意的第一個(gè)問(wèn)題便是矩陣的乘法到底是怎么進(jìn)行的。 一個(gè)n行m列的矩陣可以乘以一
45、個(gè)m行p列的矩陣,得到的結(jié)果是一個(gè)n行p列的矩陣,其中的第i行第j列位置上的數(shù)等于前一個(gè)矩陣第i行上的m個(gè)數(shù)與后一個(gè)矩陣第j列上的m個(gè)數(shù)對(duì)應(yīng)相乘后所有m個(gè)乘積的和。如: 在本題中,題干部分提到“發(fā)現(xiàn)矩陣鏈乘問(wèn)題具有最優(yōu)子結(jié)構(gòu)”,這是利用動(dòng)態(tài)規(guī)劃法求解最優(yōu)解問(wèn)題的典型特征。所以(5)應(yīng)填動(dòng)態(tài)規(guī)劃法。 接下來(lái)分析(1)-(4)空,這幾個(gè)空中,最容易回答的是(3)和(4)。(3)空可通過(guò)題目給出的遞歸式分析得到,其中cost數(shù)組部分與公式完全一致,而p數(shù)組在程序中是seq,所以回答時(shí)修正即可,(3)填:cost[i][k]+cost[k+1][j]+seq[i]*seq[k+1]*seq[j
46、+1]。第(4)空的上一句為:tempCost=temp,即保存當(dāng)前狀態(tài)最優(yōu)解,由于在保存最優(yōu)解時(shí),不僅涉及cost的記錄,還涉及其位置k的記錄,所以需要在此進(jìn)行tempTrace=k的操作。 (1)與(2)相對(duì)復(fù)雜,其中(1)是對(duì)i值范圍的確定,而(2)是對(duì)j的賦值操作(由于后面用到了j,但程序中沒(méi)有對(duì)j的賦值,從而斷定該空是對(duì)j的賦值)。兩者一并起到一個(gè)效果,對(duì)cost數(shù)組操作時(shí)的操作范圍與順序。由于在進(jìn)行矩陣鏈乘操作時(shí),分析解空間所用到的是cost右上角的三角矩陣,而操作時(shí),是對(duì)這個(gè)三角矩陣從左至右,呈斜線的訪問(wèn)(如圖所示)。所以(1)和(2)分別填i<n-p和j=i+p。 該程序由于涉及3重循環(huán),所以時(shí)間復(fù)雜度為:O(n3)。通過(guò)手動(dòng)運(yùn)行程序的方式可知最優(yōu)解為: (A1A2)((A3A4)(A5A6))。 總計(jì)算次數(shù)為2010。
- 溫馨提示:
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. 裝配圖網(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)選光輻射測(cè)量系統(tǒng)的性能及其測(cè)量課件
- 14通往廣場(chǎng)的路不止一條課件
- 石油能源行業(yè)2020工作總結(jié)與2020工作計(jì)劃ppt模板
- 微生物鏈霉菌和其在生產(chǎn)中的應(yīng)用
- 優(yōu)質(zhì)護(hù)理服務(wù)措施ppt
- 小小的書(shū)櫥課件(北師大版語(yǔ)文三年級(jí)下冊(cè))
- 第6章國(guó)際貨物運(yùn)輸2
- 氣胸的健康指導(dǎo)ppt課件
- 認(rèn)識(shí)計(jì)算機(jī)鍵盤(pán)微課
- 先天性髖關(guān)節(jié)脫位X線診斷