2019年上半年(下午)《軟件設(shè)計師》真題
《2019年上半年(下午)《軟件設(shè)計師》真題》由會員分享,可在線閱讀,更多相關(guān)《2019年上半年(下午)《軟件設(shè)計師》真題(9頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、2019年上半年(下午)《軟件設(shè)計師》真題 注意:圖片可根據(jù)實際需要調(diào)整大小 卷面總分:6分 答題時間:240分鐘 試卷題量:6題 練習(xí)次數(shù):0次 問答題 (共6題,共6分) 1.某軟件公司欲開發(fā)一款汽車競速類游戲,需要模擬長輪胎和短輪胎急剎車時在路面上留下的不同痕跡,并考慮后續(xù)能模擬更多種輪胎急剎車時的痕跡。現(xiàn)采用策略(Strategy)設(shè)計模式來實現(xiàn)該需求,所設(shè)計的類圖如圖5-1所示。 圖5-1類圖 【Java代碼】 import java.util.*; interface BrakeB
2、ehavior{ public(1); /*其余代碼省略*/ }; class LongWheelBrake implements BrakeBehavior{ public void stop( ){System.out.println("模擬長輪胎剎車痕跡!");} /*其余代碼省略*/ }; class ShortWheelBrake implements BrakeBehavior{ public void stop( ?。﹞System.out.println("模擬短輪胎剎車痕跡!");} /*其余代碼省略*/ }; abstract class Car{
3、 protected(2)wheel; public void brake( ?。﹞(3);} /*其余代碼省略*/ }: class ShortWheelCar extends Car{ public ShortWheelCar(BrakeBehavior behavior){ (4); } /*其余代碼省略*/ }; class StrategyTest{ public static void main(String[]args){ BrakeBehavior brake=new ShortWheelBrake( ); ShortWheelCar car1=n
4、ew ShortWheelCar(brake); car1.(5); } } 正確答案: 本題解析: (1)void stop() (2)BrakeBehavior (3)wheel.stop() (4)wheel=behavior (5)brake() 策略模式是定義一系列算法,把他們一個個封裝起來,并且使它們之間可相互替換,從而讓算法可以獨立于使用它的用戶而變化。 (1)第一空接口BrakeBehavior有內(nèi)容缺失,結(jié)合其實現(xiàn)類LongWheelBrake代碼如下: class
5、 LongWheelBrake implements BrakeBehavior{ public void stop(){System.out.println("模擬長輪胎剎車痕跡!");} /*其余代碼省略*/ }; 第一空需要補充stop()方法,即(1)void stop() (2)(3)第二、三空是抽象類Car缺少屬性wheel的類型和brake()方法的方法體。 abstract class Car{ protected(2)wheel; public void brake(){(3);} /*其余代碼省略*/ }: 根據(jù)圖示策略模式,Car與BrakeBeha
6、vior是整體與部分的關(guān)系,因此Car的屬性有這一個部分,即(2)BrakeBehavior,這里在類Car中,命名了一個與之聯(lián)系的部分BrakeBehavior類型wheel。對于BrakeBehavior類,所包含的方法是stop,因此第(3)空填寫的方法應(yīng)該是wheel.stop()。這樣就將Car與BrakeBehavior聯(lián)系起來了。 (4)第四空是實現(xiàn)子類ShortWheelCar缺失ShortWheelCar(BrakeBehavior behavior)此帶參構(gòu)造方法的方法體: class ShortWheelCar extends Car{ public ShortWh
7、eelCar(BrakeBehavior behavior){ (4); } /*其余代碼省略*/ }; 構(gòu)造方法是對類的構(gòu)造,帶參構(gòu)造函數(shù)一般是對其屬性進(jìn)行參數(shù)賦值,第四空將實現(xiàn)子類與其父類聯(lián)系起來,子類繼承父類屬性wheel,此處應(yīng)該是對參數(shù)wheel賦值,即(4)wheel=behavior (5)第五空是實際調(diào)用測試過程,缺失方法名: class StrategyTest{ public static void main(String[]args){ BrakeBehavior brake=new ShortWheelBrake(); ShortWheelCar c
8、ar1=new ShortWheelCar(brake); car1.(5); } } 由代碼可知,car1是ShortWheelCar(brake)實例化的對象,類ShortWheelCar本身沒有方法,只有默認(rèn)繼承父類的一個方法brake(),因此此處調(diào)用的是brake(),即(5)brake()。 2.某學(xué)校欲開發(fā)一學(xué)生跟蹤系統(tǒng),以便更自動化、更全面地對學(xué)生在校情況(到課情況和健康狀態(tài)等)進(jìn)行管理和追蹤,使家長能及時了解子女的到課情況和健康狀態(tài),并在有健康問題時及時與醫(yī)護(hù)機(jī)構(gòu)對接。該系統(tǒng)的主要功能是: (1)采集學(xué)生狀態(tài)。通過學(xué)生卡傳感器,采集學(xué)
9、生心率、體溫(攝氏度)等健康指標(biāo)及其所在位置等信息并記錄。每張學(xué)生卡有唯一的標(biāo)識(ID)與一個學(xué)生對應(yīng)。 (2)健康狀態(tài)告警。在學(xué)生健康狀態(tài)出問題時,系統(tǒng)向班主任、家長和醫(yī)護(hù)機(jī)構(gòu)健康服務(wù)系統(tǒng)發(fā)出健康狀態(tài)警告,由醫(yī)護(hù)機(jī)構(gòu)健康服務(wù)系統(tǒng)通知相關(guān)醫(yī)生進(jìn)行處理。 (3)到課檢查。綜合比對學(xué)生狀態(tài)、課表以及所處校園場所之間的信息對學(xué)生到課情況進(jìn)行判定。對曠課學(xué)生,向其家長和班主任發(fā)送曠課警告。 (4)匯總在校情況。定期匯總在校情況,并將報告發(fā)送給家長和班主任。 (5)家長注冊。家長注冊使用該系統(tǒng),指定自己子女,存入家長信息,待審核。 (6)基礎(chǔ)信息管理。學(xué)校管理人員對學(xué)生及其所用學(xué)生卡和班主任、
10、課表(班級、上課時間及場所等)、校園場所(名稱和所在位置區(qū)域)等基礎(chǔ)信息進(jìn)行管理;對家長注冊申請進(jìn)行審核,更新家長狀態(tài),將家長ID加入學(xué)生信息記錄中使家長與其子女進(jìn)行關(guān)聯(lián),向家長發(fā)送注冊結(jié)果。一個學(xué)生至少有一個家長,可以有多個家長。課表信息包括班級、班主任、時間和位置等。 現(xiàn)采用結(jié)構(gòu)化方法對學(xué)生跟蹤系統(tǒng)進(jìn)行分析與設(shè)計,獲得如圖1-1所示的上下文數(shù)據(jù)流圖和圖1-2所示的0層數(shù)據(jù)流圖。 【問題1】(5分) 使用說明中的詞語,給出圖1-1中的實體E1?E5的名稱。 【問題2】(4分) 使用說明中的詞語,給出圖1-2中的數(shù)據(jù)存儲D1?D4的名稱。 【問題3】(3分) 根據(jù)說明和圖
11、中術(shù)語,補充圖1-2中缺失的數(shù)據(jù)流及其起點和終點(三條即可)。 【問題4】(3分) 根據(jù)說明中的術(shù)語,說明圖1-1中數(shù)據(jù)流“學(xué)生狀態(tài)”和“學(xué)生信息”的組成。 正確答案: 本題解析: 【問題1】(5分) E1:學(xué)生 E2:學(xué)校管理人員 E3:班主任 E4:家長 E5:醫(yī)護(hù)機(jī)構(gòu)健康服務(wù)系統(tǒng) 【問題2】(4分) D1:學(xué)生狀態(tài)記錄表 D2:學(xué)生信息表 D3:校園場所記錄表 D4:課表信息記錄 【問題3】(3分) (注:數(shù)據(jù)流沒有順序要求,按題目要求寫出其中3條) 【問題4
12、】(3分) 學(xué)生狀態(tài)=學(xué)生卡ID+心率+體溫+位置+時間 學(xué)生信息=學(xué)生ID+學(xué)生卡ID+1{家長ID}*+班主任ID+班級 【問題1】 根據(jù)題干描述,與P1采集學(xué)生狀態(tài)相關(guān)的是實體E1即學(xué)生;與P5家長注冊相關(guān)的是實體E4級家長;與P4匯總在校情況相關(guān)的是實體E4家長與實體E3,即班主任;與P2健康狀態(tài)告警相關(guān)是實體E3班主任、E4家長,以及E5即醫(yī)護(hù)機(jī)構(gòu)健康服務(wù)系統(tǒng);與P6基礎(chǔ)信息管理相關(guān)的是實體E2即學(xué)校管理人員。 【問題2】 “通過學(xué)生卡傳感器,采集學(xué)生心率、體溫(攝氏度)等健康指標(biāo)及其所在位置等信息并記錄”記錄學(xué)生狀態(tài)信息,即D1學(xué)生狀態(tài)記錄表; “學(xué)校管理人員對學(xué)生及
13、其所用學(xué)生卡和班主任、課表(班級、上課時間及場所等)、校園場所(名稱和所在位置區(qū)域)等基礎(chǔ)信息進(jìn)行管理”,即D4課表信息記錄,D3校園場所記錄,D2學(xué)生信息記錄。 【問題3】 根據(jù)父圖子圖平衡沒有數(shù)據(jù)流缺失。 綜合題干分析,“到課檢查。綜合比對學(xué)生狀態(tài)、課表以及所處校園場所之間的信息對學(xué)生到課情況進(jìn)行判定。對曠課學(xué)生,向其家長和班主任發(fā)送曠課警告?!盤3到課檢查缺失2條數(shù)據(jù)流入,分別是課表信息、校園場所信息,起點分別是D4、D3,終點是P3。 “對家長注冊申請進(jìn)行審核,更新家長狀態(tài),將家長ID加入學(xué)生信息記錄中使家長與其子女進(jìn)行關(guān)聯(lián)”此處缺失數(shù)據(jù)流,家長ID,起點為P6,終點為D2。
14、 【問題4】 “通過學(xué)生卡傳感器,采集學(xué)生心率、體溫(攝氏度)等健康指標(biāo)及其所在位置等信息并記錄。每張學(xué)生卡有唯一的標(biāo)識(ID)與一個學(xué)生對應(yīng)?!?,根據(jù)題干描述,“學(xué)生狀態(tài)”應(yīng)該包括學(xué)生心率、體溫(攝氏度)等健康指標(biāo)及其所在位置等信息,以及學(xué)生卡ID。 “學(xué)校管理人員對學(xué)生及其所用學(xué)生卡和班主任、課表(班級、上課時間及場所等)…”“將家長ID加入學(xué)生信息記錄中”根據(jù)題干描述,”學(xué)生信息”應(yīng)該包括學(xué)生卡、班主任,學(xué)生ID等信息。 3.某創(chuàng)業(yè)孵化基地管理若干孵化公司和創(chuàng)業(yè)公司,為規(guī)范管理創(chuàng)業(yè)項目投資業(yè)務(wù),需要開發(fā)一個信息系統(tǒng)。請根據(jù)下述需求描述完成該系統(tǒng)的數(shù)據(jù)庫
15、設(shè)計。 【需求描述】 (1)記錄孵化公司和創(chuàng)業(yè)公司的信息。孵化公司信息包括公司代碼、公司名稱、法人代表名稱、注冊地址和一個電話;創(chuàng)業(yè)公司信息包括公司代碼、公司名稱和一個電話。孵化公司和創(chuàng)業(yè)公司的公司代碼編碼不同。 (2)統(tǒng)一管理孵化公司和創(chuàng)業(yè)公司的員工。員工信息包括工號、身份證號、姓名、性別、所屬公司代碼和一個手機(jī)號,工號唯一標(biāo)識每位員工。 (3)記錄投資方信息。投資方信息包括投資方編號、投資方名稱和一個電話。 (4)投資方和創(chuàng)業(yè)公司之間依靠孵化公司牽線建立創(chuàng)業(yè)項目合作關(guān)系,具體實施由孵化公司的一位員工負(fù)責(zé)協(xié)調(diào)投資方和創(chuàng)業(yè)公司的一個創(chuàng)業(yè)項目。一個創(chuàng)業(yè)項目只屬于一個創(chuàng)業(yè)公司,但可以接受
16、若干投資方的投資。創(chuàng)業(yè)項目信息包括項目編號、創(chuàng)業(yè)公司代碼、投資方編號和孵化公司員工工號。 【概念模型設(shè)計】 根據(jù)需求階段收集的信息,設(shè)計的實體聯(lián)系圖(不完整)如圖2-1所示。 【邏輯結(jié)構(gòu)設(shè)計】 根據(jù)概念模型設(shè)計階段完成的實體聯(lián)系圖,得出如下關(guān)系模式(不完整): 孵化公司(公司代碼,公司名稱,法人代表名稱,注冊地址,電話) 創(chuàng)業(yè)公司(公司代碼,公司名稱,電話) 員工(工號,身份證號,姓名,性別,(a),手機(jī)號) 投資方(投資方編號、投資方名稱,電話) 項目(項目編號,創(chuàng)業(yè)公司代碼#,(b),孵化公司員工工號#) 【問題1】(5分) 根據(jù)問題描述,補充圖2-1的實體聯(lián)系圖
17、。 【問題2】(4分) 補充邏輯結(jié)構(gòu)設(shè)計結(jié)果中的(a)、(b)兩處空缺及完整性約束關(guān)系。 【問題3】(6分) 若創(chuàng)業(yè)項目的信息還需要包括投資額和投資時間,那么: (1)是否需要增加新的實體來存儲投資額和投資時間? (2)如果增加新的實體,請給出新實體的關(guān)系模式,并對圖2-1進(jìn)行補充。如果不需要增加新的實體,請將“投資額”和“投資時間”兩個屬性補充連線到圖2-1合適的對象上,并對變化的關(guān)系模式進(jìn)行修改。 正確答案: 本題解析: 【問題1】(5分) 【問題2】(4分) (a)所屬公司代碼
18、 (b)投資方編號 完整性約束關(guān)系 員工-外鍵:所屬公司代碼 項目-主鍵:(項目編號、投資方編號)組合主鍵 項目-外鍵:投資方編號,題干已給出外鍵創(chuàng)業(yè)公司編號、孵化公司員工工號 【問題3】(6分) (1)不需要 (2)關(guān)系模式:項目(項目編號,創(chuàng)業(yè)公司代碼,投資方編號,孵化公司員工工號,投資額,投資時間) 【問題1】 (1)根據(jù)題干描述,“統(tǒng)一管理孵化公司和創(chuàng)業(yè)公司的員工”,圖示給出孵化公司與員工1:*的聯(lián)系,需要補充創(chuàng)業(yè)公司與員工1:*的聯(lián)系; (2)根據(jù)題干描述,“具體實施由孵化公司的一位員工負(fù)責(zé)協(xié)調(diào)投資方和創(chuàng)業(yè)公司的一個創(chuàng)業(yè)項目?!边@里有一個三元聯(lián)系,聯(lián)系的
19、實體應(yīng)該是員工、投資方和創(chuàng)業(yè)公司,這個聯(lián)系就是圖示中的“項目”。 對于三元關(guān)系的類別判定: “具體實施由孵化公司的一位員工負(fù)責(zé)協(xié)調(diào)投資方和創(chuàng)業(yè)公司的一個創(chuàng)業(yè)項目,一個創(chuàng)業(yè)項目只屬于一個創(chuàng)業(yè)公司,但可以接受若干投資方的投資。” 根據(jù)語義描述,由1位員工協(xié)調(diào)1個項目和1個創(chuàng)業(yè)公司,但1個項目可以接受若干個也就是多個投資方的投資,綜上,補充員工、投資方、創(chuàng)業(yè)公司三元聯(lián)系,聯(lián)系類型為1:*:1。 【問題2】 (a)根據(jù)題干描述“員工信息包括工號、身份證號、姓名、性別、所屬公司代碼和一個手機(jī)號,工號唯一標(biāo)識每位員工?!苯Y(jié)合關(guān)系模式: 員工(工號,身份證號,姓名,性別,(a),手機(jī)號),缺少的
20、部分為所屬公司代碼,其中工號為主鍵,所屬公司代碼為孵化公司或創(chuàng)業(yè)公司的主鍵,所以在員工關(guān)系中,所屬公司代碼是外鍵約束。 (b)根據(jù)題干描述“創(chuàng)業(yè)項目信息包括項目編號、創(chuàng)業(yè)公司代碼、投資方編號和孵化公司員工工號?!苯Y(jié)合關(guān)系模式: 項目(項目編號,創(chuàng)業(yè)公司代碼,(b),孵化公司員工工號),缺少的額部分為投資方編號。根據(jù)一般情況,這里的項目編號是針對單個項目而來,又因為“具體實施由孵化公司的一位員工負(fù)責(zé)協(xié)調(diào)投資方和創(chuàng)業(yè)公司的一個創(chuàng)業(yè)項目,一個創(chuàng)業(yè)項目只屬于一個創(chuàng)業(yè)公司,但可以接受若干投資方的投資?!彼员娟P(guān)系中每個創(chuàng)業(yè)項目只對應(yīng)一個創(chuàng)業(yè)公司,一個員工協(xié)調(diào),但可以對應(yīng)多個投資方,因此項目關(guān)系的主鍵
21、為(項目編號,投資方編號)組合鍵。創(chuàng)業(yè)公司代碼是創(chuàng)業(yè)公司主鍵,投資方編號是投資方主鍵,孵化公司員工工號是員工主鍵,因此本關(guān)系存在投資方編號、創(chuàng)業(yè)公司編號、孵化公司員工工號三個外鍵。 其他完整性約束:創(chuàng)業(yè)公司主鍵-公司代碼;孵化公司主鍵-公司代碼;投資方主鍵-投資方編號,題目已經(jīng)用下劃線標(biāo)出。 【問題3】 關(guān)系本身可以具有屬性,根據(jù)題目要求,創(chuàng)業(yè)項目的信息還需要包括投資額和投資時間,這些內(nèi)容可以直接添加到項目關(guān)系上,本題項目關(guān)系主鍵為(項目編號,投資方)組合鍵,可以據(jù)此添加投資額和投資時間,因此不需要增加實體,可以直接在項目關(guān)系模式中增加這2個屬性即可。 4
22、.某圖書公司欲開發(fā)一個基于Web的書籍銷售系統(tǒng),為顧客(Customer)提供在線購買書籍(Books)的功能,同時對公司書籍的庫存及銷售情況進(jìn)行管理。系統(tǒng)的主要功能描述如下: (1)首次使用系統(tǒng)時,顧客需要在系統(tǒng)中注冊(Registerdetail)。顧客填寫注冊信息表要求的信息,包括姓名(name)、收貨地址(address)、電子郵箱(email)等,系統(tǒng)將為其生成一個注冊碼。 (2)注冊成功的顧客可以登錄系統(tǒng)在線購買書籍(Buybooks)。購買時可以瀏覽書籍信息,包括書名(title)、作者(author)、內(nèi)容簡介(introduction)等。如果某種書籍的庫存量為0,那么顧
23、客無法查詢到該書籍的信息。顧客選擇所需購買的書籍及購買數(shù)量(quantities),若購買數(shù)量超過庫存量,提示庫存不足;若購買數(shù)量小于庫存量,系統(tǒng)將顯示驗證界面,要求顧客輸入注冊碼。注冊碼驗證正確后,自動生成訂單(Order),否則,提示驗證錯誤。如果顧客需要,可以選擇打印訂單(Printorder)。 (3)派送人員(Dispatcher)每天早晨從系統(tǒng)中獲取當(dāng)日的派送列表信息(Producepicklist),按照收貨地址派送顧客訂購的書籍。 (4)用于銷售的書籍由公司的采購人員(Buyer)進(jìn)行采購(Reorderbooks)。采購人員每天從系統(tǒng)中獲取庫存量低于再次訂購量的書籍信息,
24、對這些書籍進(jìn)行再次購買,以保證充足的庫存量。新書籍到貨時,采購人員向在線銷售目錄(Catalog)中添加新的書籍信息(Addbooks)。 (5)采購人員根據(jù)書籍的銷售情況,對銷量較低的書籍設(shè)置折扣或促銷活動(Promotebooks)。 (6)當(dāng)新書籍到貨時,倉庫管理員(Warehouseman)接收書籍,更新庫存(Updatestock)。 現(xiàn)采用面向?qū)ο蠓椒ㄩ_發(fā)書籍銷售系統(tǒng),得到如圖3-1所示的用例圖和圖3-2所示的初始類圖(部分)。 【問題1】(6分) 根據(jù)說明中的描述,給出圖3-1中A1?A3所對應(yīng)的參與者名稱和U1?U3處所對應(yīng)的用例名稱。 【問題2】(6分)
25、 根據(jù)說明中的描述,給出圖3-1中用例U3的用例描述。(用例描述中必須包括基本事件流和所有的備選事件流)。 【問題3】(3分) 根據(jù)說明中的描述,給出圖3-2中C1?C3所對應(yīng)的類名。 正確答案: 本題解析: 【問題1】(6分) A1:采購人員或Buyer A2:倉庫管理員Warehouseman A3:派送人員或Dispatcher U1:注冊或Registerdetail U2:打印訂單或Printorder U3:購買書籍或Buybooks 【問題2】 U3用例描述 參與者顧
26、客。 主要事件流: 1、顧客登錄系統(tǒng); 2、顧客瀏覽書籍信息; 3、系統(tǒng)檢查某種書籍的庫存量是否為0; 4、顧客選擇所需購買的書籍及購買數(shù)量; 5、系統(tǒng)檢查庫存量是否足夠; 6、系統(tǒng)顯示驗證驗證界面; 7、顧客輸入驗證碼驗證; 8、系統(tǒng)自動生成訂單; 備選事件流: 3a.若庫存量為0則無法查詢到該書籍信息,退回到2; 5a.若購買數(shù)量超過庫存量,則提示庫存不足,并退回到4; 7a.若驗證錯誤,則提示驗證錯誤,并退回到6; 8a.若顧客需要可以選擇打印訂單。 前置條件: 1、注冊成功。 后置條件: 1、購買成功 【問題3】 C1:顧客或Customer
27、C2:訂單或Order C3:書籍或Books 【問題1】 (1)根據(jù)題干描述“用于銷售的書籍由公司的采購人員(Buyer)進(jìn)行采購(Reorderbooks)”,與采購(Reorderbooks)相關(guān)的參與者是采購人員(Buyer),因此A1為采購人員或Buyer; (2)根據(jù)題干描述“當(dāng)新書籍到貨時,倉庫管理員(Warehouseman)接收書籍,更新庫存(Update stock)?!?,與更新庫存(Updatestock)相關(guān)的參與者是倉庫管理員(Warehouseman),因此A2為倉庫管理員或Warehouseman; (3)根據(jù)題干描述“派送人員(Dispatcher)每
28、天早晨從系統(tǒng)中獲取當(dāng)日的派送列表信息(Producepicklist)”,與Producepicklist相關(guān)的參與者是派送人員(Dispatcher),因此A3為派送人員或Dispatcher; (4)根據(jù)題干描述“(1)首次使用系統(tǒng)時,顧客需要在系統(tǒng)中注冊(Registerdetail)。顧客填寫注冊信息表要求的信息,包括姓名(name)、收貨地址(address)、電子郵箱(email)等,系統(tǒng)將為其生成一個注冊碼?!边@里有顧客相關(guān)用例注冊(Registerdetail)。 根據(jù)題干描述“(2)注冊成功的顧客可以登錄系統(tǒng)在線購買書籍(Buybooks)。購買時可以瀏覽書籍信息,包括書
29、名(title)、作者(author)、內(nèi)容簡介(introduction)等。如果某種書籍的庫存量為0,那么顧客無法查詢到該書籍的信息。顧客選擇所需購買的書籍及購買數(shù)量(quantities),若購買數(shù)量超過庫存量,提示庫存不足;若購買數(shù)量小于庫存量,系統(tǒng)將顯示驗證界面,要求顧客輸入注冊碼。注冊碼驗證正確后,自動生成訂單(Order),否則,提示驗證錯誤。如果顧客需要,可以選擇打印訂單(Printorder)?!边@里有顧客相關(guān)用例在線購買書籍(Buybooks)、打印訂單(Printorder),并且這里提到如果顧客需要,可以選擇打印訂單,可以知道打印訂單(Printorder)是在線購買書
30、籍(Buybooks)在某個條件下的擴(kuò)展。打印訂單(Printorder)是在線購買書籍(Buy books)的擴(kuò)展,體現(xiàn)在圖示當(dāng)中,<<extend>>箭頭指向基用例在線購買書籍(Buybooks)即U3,<<extend>>箭頭流出端為擴(kuò)展用例打印訂單(Printorder)即U2,注意箭頭指向的區(qū)別。 U1與其他用例沒有相關(guān)關(guān)系,即U1為注冊(Registerdetail)。 【問題2】 當(dāng)用例圖不能提供用例所具有的全部信息,需要使用文字描述那些不能反映在圖形上的信息。用例描述是加上關(guān)于參與者和系統(tǒng)如何交互的規(guī)格說明,在編寫用例描述的時候,應(yīng)該只注重外部能力,不涉及內(nèi)部細(xì)節(jié)。一般用
31、例描述包括以下內(nèi)容: 1.目的:簡要描述系統(tǒng)的最終任務(wù)和結(jié)果。 2.事件流: (1)說明用例是怎么啟動的,那些參與者在什么情況下啟動執(zhí)行用例; (2)說明參與者和用例之間的信息處理過程; (3)說明用例在不同的條件下,可以選擇執(zhí)行的多種方案; (4)說明用例在什么情況下才能被視作完成,完成時結(jié)果傳給參與者; 基本流說明了參與者和系統(tǒng)之間的相互交互或?qū)υ挼捻樞颍?dāng)這種交互完成后,參與者便實現(xiàn)了預(yù)期目的;可選流程也可以促進(jìn)成功的完成任務(wù),但他們代表了任務(wù)的細(xì)節(jié)或用于完成任務(wù)的途徑的變化部分。 3.特殊要求:說明此用例的特殊要求。 4.前提條件:說明此例的前提條件。 5.后置條件
32、:用例執(zhí)行結(jié)束后,結(jié)果應(yīng)該傳給說明參與者。 本題用例描述可以大致概括為: 參與者顧客。 主要事件流: 1、顧客登錄系統(tǒng); 2、顧客瀏覽書籍信息; 3、系統(tǒng)檢查某種書籍的庫存量是否為0; 4、顧客選擇所需購買的書籍及購買數(shù)量; 5、系統(tǒng)檢查庫存量是否足夠; 6、系統(tǒng)顯示驗證界面; 7、顧客輸入驗證碼驗證; 8、系統(tǒng)自動生成訂單。 備選事件流: 3a.若庫存量為0則無法查詢到該書籍信息,退回到2; 5a.若購買數(shù)量超過庫存量,則提示庫存不足,并退回到4; 7a.若驗證錯誤,則提示驗證錯誤,并退回到6; 8a.若顧客需要可以選擇打印訂單。 【由于本題用例給出的并不詳
33、細(xì),沒有給出登錄用例等內(nèi)容,所有描述都在購買書籍用例描述當(dāng)中,所以這里也就沒有給出前置條件和后置條件,將所有內(nèi)容都放在了主要事件流當(dāng)中。此處答案不唯一。】 【問題3】 (1)根據(jù)題干描述“顧客填寫注冊信息表要求的信息,包括姓名(name)、收貨地址(address)、電子郵箱(email)等”,包含name、address、email屬性的類應(yīng)該是顧客,即C1:顧客或Customer; (2)根據(jù)題干描述“購買時可以瀏覽書籍信息,包括書名(title)、作者(author)、內(nèi)容簡介(introduction)等”,包含title、author、introduction屬性的類應(yīng)該是書籍
34、,即C3:書籍或Books; (3)根據(jù)圖示OrderedBook類即已訂購的書籍類,與顧客相關(guān)的類,并且是已訂購書籍的整體,所以C2應(yīng)該是生成的訂單,列出已訂購書籍,并且與顧客有依賴關(guān)系,即C2:訂單或Order。 5.n皇后問題描述為:在一個n×n的棋盤上擺放n個皇后,要求任意兩個皇后不能沖突,即任意兩個皇后不在同一行、同一列或者同一斜線上。 算法的基本思想如下: 將第i個皇后擺放在第i行,i從1開始,每個皇后都從第1列開始嘗試。嘗試時判斷在該列擺放皇后是否與前面的皇后有沖突,如果沒有沖突,則在該列擺放皇后,并考慮擺放下一個皇后;如果有沖突,則考慮下一
35、列。如果該行沒有合適的位置,回溯到上一個皇后,考慮在原來位置的下一個位置上繼續(xù)嘗試擺放皇后,……,直到找到所有合理擺放方案。 【C代碼】 下面是算法的C語言實現(xiàn)。 (1)常量和變量說明 n:皇后數(shù),棋盤規(guī)模為n×n queen[]:皇后的擺放位置數(shù)組,queen[i]表示第i個皇后的位置,1≤queen[i]≤n (2)C程序 #include<stdio.h> #define n 4 int queen[n+1]; void Show( ){/*輸出所有皇后擺放方案*/ int i; printf("("); for(i=1;i<=n;i++){ printf(
36、"%d",queen[i]); } printf(")\n"); } int Place(int j){/*檢查當(dāng)前列能否放置皇后,不能放返回0,能放返回1*/ int i; for(i=1;i<j;i++){/*檢查與已擺放的皇后是否在同一列或者同一斜線上*/ if(((1))‖abs(queen[i]-queen[j])==(j-i)){ return 0; } } return(2); } void Nqueen(int j){ int i; for(i=1;i<=n;i++){ queen[j]=i; if((3)){ if(j==n){/*如果所有
37、皇后都擺放好,則輸出當(dāng)前擺放方案*/ Show( ); }else{/*否則繼續(xù)擺放下一個皇后*/ (4); } } } } int main( ?。﹞ Nqueen(1); return 0; } 【問題1】(8分) 根據(jù)題干說明,填充C代碼中的空(1)(4)。 【問題2】(3分) 根據(jù)題干說明和C代碼,算法采用的設(shè)計策略為(5)。 【問題3】(4分) 當(dāng)n=4時,有(6)種擺放方式,分別為(7)。 正確答案: 本題解析: 【問題1】 (1)queen[i]==q
38、ueen[j]或其等價形式 (2)1 (3)Place(j)或其等價形式 (4)Nqueen(j+1) 【問題2】 (5)回溯法 【問題3】 (6)2個 (7)(2413)或(2,4,1,3) (3142)或(3,1,4,2) 【問題1】 (1)第一空根據(jù)代碼上下文: for(i=1;i<j;i++){/*檢查與已擺放的皇后是否在同一列或者同一斜線上*/ if((1))‖abs(queen[i]-queen[j])==(j-i)){ return 0; } } abs(queen[i]-queen[j])==(j-i)判斷是否在同一斜線上,此處還缺少對同一列的
39、判斷,即queen[i]==queen[j]或其等價形式。 (2)第二空根據(jù)Place(int j)函數(shù)首行注釋: int Place(int j){/*檢查當(dāng)前列能否放置皇后,不能放返回0,能放返回1*/ 此處是成功后的返回,返回值應(yīng)該是1。 (3)第三空根據(jù)代碼上下文 if((3)){ if(j==n){/*如果所有皇后都擺放好,則輸出當(dāng)前擺放方案*/ Show(); }else{/*否則繼續(xù)擺放下一個皇后*/ (4); } } (3)與j==n結(jié)合可以判斷所有皇后都擺好,(3)與j!=n結(jié)合可以判斷繼續(xù)擺放下一個皇后,即前面的皇后已擺放好。 所以(3)的判斷條件
40、應(yīng)該是擺放函數(shù)Place()返回值為1,即(3)Place(j)或其等價形式。 (4)第四空填寫擺放下一個皇后,即(4)Nqueen(j+1)。 【問題2】 根據(jù)題干描述“如果該行沒有合適的位置,回溯到上一個皇后,考慮在原來位置的下一個位置上繼續(xù)嘗試擺放皇后”,本題采用的是回溯法的設(shè)計策略。 【問題3】 當(dāng)n=4時,可以有2種擺放方式,如下所示: 即(2413)(3142)。 6.某軟件公司欲開發(fā)一款汽車競速類游戲,需要模擬長輪胎和短輪胎急剎車時在路面上留下的不同痕跡,并考慮后續(xù)能模擬更多種輪胎急剎車時的痕跡。現(xiàn)采用策略(Strategy)設(shè)計模
41、式來實現(xiàn)該需求,所設(shè)計的類圖如圖6-1所示。 【C++代碼】 #include<iostream> using namespace std; class BrakeBehavior{ public: (1); /*其余代碼省略*/ }; class LongWheelBrake:public BrakeBehavior{ public: void stop( ){cout<<"模擬長輪胎剎車痕跡!"<<end1;} /*其余代碼省略*/ }; class ShortWheelBrake:public BrakeBehavior{ public: void
42、stop( ?。﹞cout<<"模擬短輪胎剎車痕跡!"<<end1;} /*其余代碼省略*/ }; class Car{ protected: (2)wheel; public: void brake( ?。﹞(3);} /*其余代碼省略*/ }; class ShortWheelCar:public Car{ public: ShortWheelCar(BrakeBehavior*behavior){ (4); } /*其余代碼省略*/ }; int main( ?。﹞ BrakeBehavior*brake=new ShortWheelBrake( )
43、; ShortWheelCar car1(brake): car1.(5); return 0; } 正確答案: 本題解析: (1)virtual void stop()=0 (2)BrakeBehavior* (3)wheel->stop() (4)wheel=behavior (5)brake() 策略模式是定義一系列算法,把他們一個個封裝起來,并且使它們之間可相互替換,從而讓算法可以獨立于使用它的用戶而變化。 (1)第一空類BrakeBehavior有內(nèi)容缺失,結(jié)合其實現(xiàn)類Lo
44、ngWheelBrake代碼如下: class LongWheelBrake:public BrakeBehavior{ public: void stop(){cout<<"模擬長輪胎剎車痕跡!"<<end1;} /*其余代碼省略*/ }; 第一空需要補充stop()方法,即(1)virtual void stop()=0 (2)(3)第二、三空是抽象類Car缺少屬性wheel的類型和brake()方法的方法體。 class Car{ protected: (2)wheel; public: void brake(){(3);} /*其余代碼省略*/ }; 根據(jù)
45、圖示策略模式,Car與BrakeBehavior是整體與部分的關(guān)系,因此Car的屬性有這一個部分,即(2)BrakeBehavior*,這里在類Car中,命名了一個與之聯(lián)系的部分BrakeBehavior*類型wheel。對于BrakeBehavior類,所包含的方法是stop,因此第(3)空填寫的方法應(yīng)該是wheel->stop()。這樣就將Car與BrakeBehavior聯(lián)系起來了。 (4)第四空是實現(xiàn)子類ShortWheelCar缺失ShortWheelCar(BrakeBehavior*behavior)此帶參構(gòu)造方法的方法體: class ShortWheelCar:publi
46、c Car{ public: ShortWheelCar(BrakeBehavior*behavior){ (4); } /*其余代碼省略*/ }; 構(gòu)造方法是對類的構(gòu)造,帶參構(gòu)造函數(shù)一般是對其屬性進(jìn)行參數(shù)賦值,第四空將實現(xiàn)子類與其父類聯(lián)系起來,子類繼承父類屬性wheel,此處應(yīng)該是對參數(shù)wheel賦值,即(4)wheel=behavior (5)第五空是實際調(diào)用測試過程,缺失方法名: int main(){ BrakeBehavior*brake=new ShortWheelBrake(); ShortWheelCar car1(brake): car1.(5); return 0; } 由代碼可知,car1是ShortWheelCar實例化的對象,類ShortWheelCar本身沒有方法,只有默認(rèn)繼承父類的一個方法brake(),因此此處調(diào)用的是brake(),即(5)brake()。
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級《觀潮》課件1 (3)
- 中考數(shù)學(xué)課件浙教版中考數(shù)學(xué)數(shù)與式(1)
- 食品安全及其評價體系課件
- 不規(guī)則物體的體積初成-PPT
- 抑郁癥的防治
- 優(yōu)選光輻射測量系統(tǒng)的性能及其測量課件
- 14通往廣場的路不止一條課件
- 石油能源行業(yè)2020工作總結(jié)與2020工作計劃ppt模板
- 微生物鏈霉菌和其在生產(chǎn)中的應(yīng)用
- 優(yōu)質(zhì)護(hù)理服務(wù)措施ppt
- 小小的書櫥課件(北師大版語文三年級下冊)
- 第6章國際貨物運輸2
- 氣胸的健康指導(dǎo)ppt課件
- 認(rèn)識計算機(jī)鍵盤微課
- 先天性髖關(guān)節(jié)脫位X線診斷