影音先锋男人资源在线观看,精品国产日韩亚洲一区91,中文字幕日韩国产,2018av男人天堂,青青伊人精品,久久久久久久综合日本亚洲,国产日韩欧美一区二区三区在线

2009年下半年(下午)《軟件設計師》真題

上傳人:住在山****ck 文檔編號:81441780 上傳時間:2022-04-27 格式:DOCX 頁數(shù):11 大?。?52.46KB
收藏 版權申訴 舉報 下載
2009年下半年(下午)《軟件設計師》真題_第1頁
第1頁 / 共11頁
2009年下半年(下午)《軟件設計師》真題_第2頁
第2頁 / 共11頁
2009年下半年(下午)《軟件設計師》真題_第3頁
第3頁 / 共11頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《2009年下半年(下午)《軟件設計師》真題》由會員分享,可在線閱讀,更多相關《2009年下半年(下午)《軟件設計師》真題(11頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、2009年下半年(下午)《軟件設計師》真題 注意:圖片可根據(jù)實際需要調整大小 卷面總分:6分 答題時間:240分鐘 試卷題量:6題 練習次數(shù):1次 問答題 (共6題,共6分) 1.某企業(yè)為了方便員工用餐,餐廳開發(fā)了一個訂餐系統(tǒng)(COS:Cafeteria?Ordering?System),企業(yè)員工可通過企業(yè)內聯(lián)網(wǎng)使用該系統(tǒng)。 企業(yè)的任何員工都可以查看菜單和今日特價。 系統(tǒng)的顧客是注冊到系統(tǒng)的員工,可以訂餐(如果未登錄,需先登錄)、注冊工資支付、預約規(guī)律的訂餐,在特殊情況下可以覆蓋預訂。 餐廳員工是特

2、殊顧客,可以進行備餐、生成付費請求和請求送餐,其中對于注冊工資支付的顧客生成付費請求并發(fā)送給工資系統(tǒng)。 菜單管理員是餐廳特定員工,可以管理菜單。 送餐員可以打印送餐說明,記錄送餐信息(如送餐時間)以及記錄收費(對于沒有注冊工資支付的顧客,由送餐員收取現(xiàn)金后記錄)。 顧客訂餐過程如下: 1.顧客請求查看菜單; 2.系統(tǒng)顯示菜單和今日特價; 3.顧客選菜; 4.系統(tǒng)顯示訂單和價格; 5.顧客確認訂單; 6.系統(tǒng)顯示可送餐時間; 7.顧客指定送餐時間、地點和支付方式; 8.系統(tǒng)確認接受訂單,然后發(fā)送Email給顧客以確認訂餐,同時發(fā)送相關訂餐信息通知給餐廳員工。 系統(tǒng)采用面向

3、對象方法開發(fā),使用UML進行建模。系統(tǒng)的頂層用例圖和一次訂餐的活動圖初稿分別如圖3-1和圖3-2所示。 圖3-1?COS系統(tǒng)頂層用例圖 圖3-2一次訂餐的活動圖 【問題1】(2分) 根據(jù)中的描述,給出圖3-1中A1和A2所對應的參與者。 【問題2】(8分) 根據(jù)中的描述,給出圖3-1中缺少的四個用例及其所對應的參與者。 【問題3】(4分) 根據(jù)中的描述,給出圖3-2中(1)~(4)處對應的活動名稱或圖形符號。 【問題4】(1分) 指出圖3-1中員工和顧客之間是什么關系,并解釋該關系的內涵。 圖3-1?COS系統(tǒng)頂層用例圖 圖3-2一次訂餐的活動圖

4、 正確答案: 本題解析: 【問題1】(2分,各1分) A1:工資系統(tǒng)A2:菜單管理員 【問題2】(8分,每行2分) (注:四行順序可以不同,但是每行必須對應,其中,用例名稱及其對應的參與者都正確給2分,只有用例名正確給1分,其余情況不得分) 【問題3】(4分,各1分) 【問題4】(1分) 泛化關系(一般/特殊關系、繼承關系)。泛化關系描述了一個參與者可以完成另一個參與者同樣的任務,并可補充額外的角色功能。 本題考查面向對象系統(tǒng)開發(fā)時,采用UML模型進行建模的方法。 此類題目要求考生認真閱

5、讀題目說明中對現(xiàn)實問題的描述,使用UML建模時的原則,從中確定用例圖、活動圖以及圖中的各種關系。題目給出了未完成的用例圖和活動圖,需要根據(jù)描述給出參與者、用例、活動圖中的活動和符號,以及參與者之間的關系內涵。 用例圖是用例建模的一個重要產物,它以圖形化的方式將系統(tǒng)描述成用例、參與者及其之間的關系。用例圖在高層交流了系統(tǒng)必須處理的業(yè)務事件的范圍,是描述系統(tǒng)與其他外部系統(tǒng)以及用戶之間交互的圖形。發(fā)起或者觸發(fā)用例的外部用戶稱為參與者。為了完成某些業(yè)務任務,參與者發(fā)起系統(tǒng)活動,即用例。在構建用例圖時,常用的方式是先識別參與者,然后確定用例以及用例之間的關系。 UML活動圖用于建模系統(tǒng)的過程步驟或活

6、動。構造活動圖通常先為用例添加開始和結束點,為用例的主要步驟添加一個活動,從每個活動到其他活動、決策點和終點添加轉換,并行活動的地方添加同步條。 【問題1】 識別參與者時,考查和系統(tǒng)交互的人員和外部系統(tǒng)。本題中,與系統(tǒng)交互的人員包括員工、注冊到系統(tǒng)的員工(顧客)、餐廳員工、菜單管理員、送餐員以及工資系統(tǒng)。 由“菜單管理員是餐廳特定員工”以及圖中A2和圖中餐廳員工之間的“是一種”關系可知,A2為菜單管理員;圖中還缺少描述中與工資系統(tǒng)的交互,由“……并發(fā)送給工資系統(tǒng)”可知,A1為工資系統(tǒng)。 【問題2】 考查用例及其和參與者之間的關系時,通過判斷哪一個特定參與者發(fā)起或者觸發(fā)了與系統(tǒng)的哪些交

7、互,來識別用例并建立和參與者之間的關聯(lián)。 本題中,由“任何員工都可以查看菜單和今日特價”可知,圖中缺少用例查看今日特價,對應參與者是員工;由“系統(tǒng)的顧客是……,注冊工資支付、……”可知,圖中缺少用例注冊工資支付,對應參與者是顧客和工資系統(tǒng);由“餐廳員工是……,可以進行備餐、生成付費請求……發(fā)送給工資系統(tǒng)”可知,圖中缺少用例“生成付費請求”,對應的參與者是餐廳員工和工資系統(tǒng);由“菜單管理員是餐廳特定員工,可以管理菜單”可知,圖中缺少用例管理菜單,對應的參與者是菜單管理員。 需要注意的是,在注冊工資支付所對應的參與者中,雖然沒有明確說明要和工資系統(tǒng)交互,但是由“對于注冊工資支付的顧客生成付費請

8、求并發(fā)送給工資系統(tǒng)”可知,工資支付是由工資系統(tǒng)控制,所以注冊也需要和工資系統(tǒng)交互。 【問題3】 在顧客訂餐過程的描述中,在“顧客選菜”之前,圖中缺少符號和活動。由說明中顧客“可以訂餐(如果未登錄,需先登錄)”可以判斷,在系統(tǒng)“顯示菜單和今日特價”之后“顧客選菜”之前,需要判斷(判定符號)當前用戶身份是否為顧訂餐信息通知給餐于員工”可知,發(fā)送E-mail和通知餐廳員工為并行活動,需要在前后有同步條(或縱向)。 【問題4】 參與者之間的關系表示子類型“是一種”父類型,即泛化關系。其中父類型通常是一個抽象泛化的參與者,可以完成子類型可完成的共同行為,每個具體的子類型繼承它,可以完成父類型參與

9、者同樣的任務,并可以補充額外的角色功能。 2.現(xiàn)準備為某銀行開發(fā)一個信用卡管理系統(tǒng)CCMS,該系統(tǒng)的基本功能為: 1.信用卡申請。非信用卡客戶填寫信用卡申請表,說明所要申請的信用卡類型及申請者的基本信息,提交CCMS。如果信用卡申請被銀行接受,CCMS將記錄該客戶的基本信息,并發(fā)送確認函給該客戶,告知客戶信用卡的有效期及信貸限額;否則該客戶將會收到一封拒絕函。非信用卡客戶收到確認函后成為信用卡客戶。 2.信用卡激活。信用卡客戶向CCMS提交激活請求,用信用卡號和密碼激活該信用卡。激活操作結束后,CCMS將激活通知發(fā)送給客戶,告知客戶其信用卡是否被成功激活。

10、 3.信用卡客戶信息管理。信用卡客戶的個人信息可以在CCMS中進行在線管理。每位信用卡客戶可以在線查詢和修改個人信息。 4.交易信息查詢。信用卡客戶使用信用卡進行的每一筆交易都會記錄在CCMS中。信用卡客戶可以通過CCMS查詢并核實其交易信息(包括信用卡交易記錄及交易額)。 圖1-1和圖1-2分別給出了該系統(tǒng)的頂層數(shù)據(jù)流圖和0層數(shù)據(jù)流圖的初稿。 圖1-1頂層數(shù)據(jù)流圖 圖1-2 0層數(shù)據(jù)流圖 【問題1】(3分) 根據(jù),將圖1-1中的E1~E3填充完整。 【問題2】(3分) 圖1-1中缺少三條數(shù)據(jù)流,根據(jù),分別指出這三條數(shù)據(jù)流的起點和終點。(注:數(shù)據(jù)流的起點和終點均采用圖中的符

11、號和描述) 【問題3】(5分) 圖1-2中有兩條數(shù)據(jù)流是錯誤的,請指出這兩條數(shù)據(jù)流的名稱,并改正。(注:數(shù)據(jù)流的起點和終點均采用圖中的符號和描述) 【問題4】(4分) 根據(jù),將圖1-2中P1~P4的處理名稱填充完整。 圖1-1頂層數(shù)據(jù)流圖 圖1-2 0層數(shù)據(jù)流圖 正確答案: 本題解析: 【問題1】(3分) E1:非信用卡客戶(1分) E2:信用卡客戶(1分) E3:銀行(1分) 【問題2】(3分) 注:每條數(shù)據(jù)流的起點和終點全部答對方可給1分 【問題3】(5分) 錯

12、誤的數(shù)據(jù)流 注:每個名稱各0.5分 改正后的數(shù)據(jù)流: 注:每條數(shù)據(jù)流的名稱、起點和終點全部答對方可給2分 【問題4】(4分) P1:交易信息查詢P2:客戶信息管理 P3:信用卡激活P4:信用卡申請 本題屬于經(jīng)典的考題,主要考查對DFD的理解。 【問題1】 根據(jù)題目中的說明,可以很容易找到與CCMS系統(tǒng)進行信息交互的角色有非信用卡客戶、信用卡客戶以及銀行。下面要做的事情是在上圖(a)中找到對應的位置。 根據(jù)圖(a)給出的輸入和輸出數(shù)據(jù)流,可知E1表示非信用卡客戶;E2表示信用卡客戶;E3表示銀行。 【問題2】 這道題目主要考查父圖與子圖的平衡問題。對照上圖(a)和

13、(b)可以發(fā)現(xiàn),數(shù)據(jù)流“信用卡申請表”、“激活請求”、“信用卡交易信息”出現(xiàn)在圖(b)中,卻沒有出現(xiàn)在圖(a)中。下一步只要正確地標出這三條數(shù)據(jù)流的起點和終點就可以了。 【問題3】 數(shù)據(jù)流的錯誤主要有與錯誤的加工相連接、沒有經(jīng)過任何的加工、數(shù)據(jù)流方向錯誤等。在圖(b)中,并沒有出現(xiàn)任何的數(shù)據(jù)流沒有經(jīng)過加工,那錯誤就在于與數(shù)據(jù)流相連接的加工有問題或者數(shù)據(jù)流方向錯誤。 這樣,可以找兩條有錯誤的數(shù)據(jù)流“激活請求”和“信用卡申請表”。從圖(a)中可知,“激活請求”是從系統(tǒng)流向外部實體E2的,而在圖(b)中,“激活請求”卻出現(xiàn)在兩個加工之間。數(shù)據(jù)流“信用卡申請表”是在問題2中補充找到的數(shù)據(jù)流,它應

14、該從外部實體E1流向CCMS系統(tǒng)。 【問題4】 這道題要求將圖(b)中的加工補充完整。加工的名稱在說明中已經(jīng)明確給出了: 信用卡申請、信用卡激活、信用卡客戶信息管理以及交易信息查詢。下一步需要根據(jù)圖(b)中給出的數(shù)據(jù)流關系將這4個加工對號入座即可。這樣可以得到P1表示交易信息查詢;P2表示信用卡客戶信息管理;P3表示信用卡激活;P4表示信用卡申請。 3.某公司擬開發(fā)一多用戶電子郵件客戶端系統(tǒng),部分功能的初步需求分析結果如下: (1)郵件客戶端系統(tǒng)支持多個用戶,用戶信息主要包括用戶名和用戶密碼,且系統(tǒng)中的用戶名不可重復。 (2)郵件帳號信息包括郵件地址及

15、其相應的密碼,一個用戶可以擁有多個郵件地址(如userl@)。 (3)一個用戶可擁有一個地址薄,地址簿信息包括聯(lián)系人編號、姓名、電話、單位、地址、郵件地址1、郵件地址2、郵件地址3等信息。地址薄中一個聯(lián)系人只能屬于一個用戶,且聯(lián)系人編號唯一標識一個聯(lián)系人。 (4)一個郵件帳號可以含有多封郵件,一封郵件可以含有多個附件。郵件主要包括郵件號、發(fā)件人地址、收件人地址、郵件狀態(tài)、郵件主題、郵件內容、發(fā)送時間、接收時間。其中,郵件號在整個系統(tǒng)內唯一標識一封郵件,郵件狀態(tài)有己接收、待發(fā)送、已發(fā)送和已刪除4種,分別表示郵件是屬于收件箱、發(fā)件箱、己發(fā)送箱和廢件箱。一封郵件可以發(fā)送給多個用戶。附件信息主要包

16、括附件號、附件文件名、附件大小。一個附件只屬于一封郵件,附件號僅在一封郵件內唯一。 【問題1】(5分) 根據(jù)以上說明設計的E-R圖如圖2-1所示,請指出地址簿與用戶、電子郵件帳號與郵件、郵件與附件之間的聯(lián)系類型。 2-1電子郵件客戶端系統(tǒng)E-R圖 【問題2】(4分) 該郵件客戶端系統(tǒng)的主要關系模式如下,請?zhí)钛a(a)~(c)的空缺部分。 用戶(用戶名,用戶密碼) 地址簿((a),聯(lián)系人編號,姓名,電話,單位地址,郵件地址1,郵件地址2,郵件地址3) 郵件帳號(郵件地址,郵件密碼,用戶名) 郵件((b),收件人地址,郵件狀態(tài),郵件主題,郵件內容,發(fā)送時間,接收時間) 附件(

17、(c),附件號,附件文件名,附件大?。? 【問題3】(6分) (1)請指出【問題2】中給出的地址簿、郵件和附件關系模式的主鍵,如果關系模式存在外鍵請指出。 (2)附件屬于弱實體嗎?請用50字以內的文字說明原因?!締栴}1】(5分) (1)1(1分) (2)1(1分) (3)m或n或*(1分) (4)1(1分) (5)m或n或*(1分) 【問題2】(4分) (a)用戶名(1分) (b)郵件號,發(fā)件人地址(2分) 注:郵件號和發(fā)件人地址都答對方可給1分,郵件帳號答對給1分 (c)郵件號(1分) 【問題3】(6分) (1)(3分,每空0.5分)

18、 正確答案: 本題解析: 【問題1】(5分) (1)1(1分) (2)1(1分) (3)m或n或*(1分) (4)1(1分) (5)m或n或*(1分) 【問題2】(4分) (a)用戶名(1分) (b)郵件號,發(fā)件人地址(2分) 注:郵件號和發(fā)件人地址都答對方可給1分,郵件帳號答對給1分 (c)郵件號(1分) 【問題3】(6分) (1)(3分,每空0.5分) (2)附件屬于弱實體,因為附件的存在必須以郵件的存在為前提,即附件總是依附于某郵件。(3分) 本題考查數(shù)據(jù)庫系統(tǒng)中實體聯(lián)系模型(E-R模型)的設計

19、和關系模式的設計。 【問題1】 兩個實體模型之間的聯(lián)系可以分為三類:一對一聯(lián)系(1:1)、一對多聯(lián)系(1:n)和多對多聯(lián)系(m:n)。 根據(jù)題意,地址簿與用戶之間應該是一個1:1的聯(lián)系,空(1)應填1。電子郵件賬號與郵件之間應該是一個1:m的聯(lián)系,故空(2)和空(3)應分別填寫1和m。郵件與附件之間應該是一個1:m的聯(lián)系,故空(4)和空(5)應分別填寫1和m。得到的E-R圖如下圖所示。 【問題2】 空(a)分析:根據(jù)題意可知郵件客戶端系統(tǒng)支持多個用戶,用戶信息主要包括用戶名和用戶密碼,且系統(tǒng)中的用戶名不可重復,“用戶名”可以作為用戶關系模式主鍵。地址簿關系模式中與用戶關系模式是一

20、個1:1的聯(lián)系,必須將任一方的主鍵加入另一方,以建立它們之間的聯(lián)系,故空(a)處應填寫“用戶名”。 空(b)分析:根據(jù)題意可知郵件號在整個系統(tǒng)內唯一標識一封郵件,故郵件關系模式必須有屬性“郵件號”,另外一封郵件需要填寫“發(fā)件人地址”,故空(b)處應填寫“郵件號,發(fā)件人地址”。 空(c)分析:根據(jù)題意可知郵件和附件是一個1:m的聯(lián)系,按照E-R模型向關系模型的轉換規(guī)則對于1:m的聯(lián)系應將1端的主鍵并入多端,故空(c)處應填寫“郵件號”。 【問題3】 (1)地址簿關系模式的主鍵為“聯(lián)系人編號”,外鍵為“用戶名”,因為“用戶名”是參考用戶關系模式的“用戶名”主鍵。郵件關系模式的主鍵為“郵件號

21、”,外鍵為“發(fā)件人地址”或“收件人地址”,因為當用戶向其他人發(fā)郵件的時候,“發(fā)件人地址”是參考郵件賬號關系模式的“郵件地址”的主鍵;當用戶收郵件的時候,“收件人地址”是參考郵件賬號關系模式的“郵件地址”的主鍵。附件關系模式的主鍵為“郵件號,附件號”,外鍵為“郵件號”,因為該“郵件號”參考郵件關系模式的“郵件號”的主鍵。 (2)附件屬于弱實體,因為如果沒有郵件,附件也就不存在。 4.0-1背包問題可以描述為:有n個物品,對i=1,2,…,n,第i個物品價值為vi,重量為wi(vi,和wi為非負數(shù)),背包容量為W(W為非負數(shù)),選擇其中一些物品裝入背包,使裝入背包

22、物品的總價值最大,即,且總重量不超過背包容量,即,其中,xi∈{0,1},xi=0表示第i個物品不放入背包,xi=1表示第i個物品放入背包。 【問題1】(8分) 用回溯法求解此0-1背包問題,請?zhí)畛湎旅鎮(zhèn)未a中(1)~(4)處空缺。 回溯法是一種系統(tǒng)的搜索方法。在確定解空間后,回溯法從根結點開始,按照深度優(yōu)先策略遍歷解空間樹,搜索滿足約束條件的解。對每一個當前結點,若擴展該結點己經(jīng)不滿足約束條件,則不再繼續(xù)擴展。為了進一步提高算法的搜索效率,往往需要設計一個限界函數(shù),判斷并剪枝那些即使擴展了也不能得到最優(yōu)解的結點?,F(xiàn)在假設已經(jīng)設計了BOUND(v,w,k,W)函數(shù),其中v,w,k和W分別

23、表示當前已經(jīng)獲得的價值、當前背包的重量、己經(jīng)確定是否選擇的物品數(shù)和背包的總容量。對應于搜索樹中的某個結點,該函數(shù)值表示確定了部分物品是否選擇之后,對剩下的物品在滿足約束條件的前提下進行選擇可能獲得的最大價值,若該價值小于等于當前已經(jīng)得到的最優(yōu)解,則該結點無需再擴展。 下面給出0-1背包問題的回溯算法偽代碼。 函數(shù)參數(shù)說明如下: W:背包容量;n:物品個數(shù);w:重量數(shù)組;v:價值數(shù)組;fw:獲得最大價值時背包的重量;fp:背包獲得的最大價值;X:問題的最優(yōu)解。 變量說明如下: cw:當前的背包重量;cp:當前獲得的價值;k:當前考慮的物品編號;Y:當前已獲得的部分解。 BKNAP(W

24、,n,w,v,fw,fp,X) 1 cw←cp←0 2(1) 3 fp←-1 4?while true 5 while k≤n and cw+w[k]≤W do 6(2) 7 cp←cp+v[k] 8 Y[k]←1 9 k←k+1 10 if k>n then 11?if fp<cp then 12?fp←cp 13 fw←cw 14?k←n 15 x←Y 16?else Y(k)←0 17 while BOUND(cp,cw,k,W)≤fp do 18 while k≠0 and Y(k)≠1 do 19(3) 20 if k=0 then retur

25、n 21 Y(k)←0 22 cw←cw-w[k] 23?cp←cp-v[k] 24(4) 【問題2】(7分) 考慮表4-1的實例,假設有3個物品,背包容量為22。圖4-1中是根據(jù)上述算法構造的搜索樹,其中結點的編號表示了搜索樹生成的順序,邊上的數(shù)字1/0分別表示選擇/不選擇對應物品。除了根結點之外,每個左孩子結點旁邊的上下兩個數(shù)字分別表示當前背包的重量和已獲得的價值,右孩子結點旁邊的數(shù)字表示擴展了該結點后最多可能獲得的價值。為獲得最優(yōu)解,應該選擇物品(5),獲得的價值為(6)。 對于表4-1的實例,若采用窮舉法搜索整個解空間,則搜索樹的結點數(shù)為(7),而用了上述回溯法,

26、搜索樹的結點數(shù)為(8)。 正確答案: 本題解析: 【問題1】(共8分,各2分) (1)k←1或其等價形式 (2)cw←cw+w[k]或其等價形式 (3)k←k–1或其等價形式 (4)k←k+1或其等價形式 【問題2】(共7分) (5)物品2和物品3(2分) (6)35(1分) (7)15(2分) (8)8(2分) 本題考查算法設計技術——回溯法。 此類題目要求考生掌握基本的算法設計技術,包括分治法、動態(tài)規(guī)劃法、貪心算法、回溯法和分支限界法等,然后結合具體的問題,用對應的算法設計技術

27、來解決問題。 【問題1】 本題考查的是用回溯法求解0-1背包問題?;厮莘ㄓ袃深愃惴蚣埽悍沁f歸形式和遞歸形式,本題采用非遞歸形式表示。理解回溯法的基本思想和這兩類算法框架是正確解答本題的根本要求。 回溯法從第一項物品開始考慮是否應該裝入背包中,因此當前考慮的物品編號k從1開始,即k←1。然后逐項往后檢查,若能全部放入背包則將該項放入背包,此時背包的重量應該是當前的重量加上當前考慮物品的重量,即cw←cw+w[k],當然背包中物品的價值也為當前的價值加上當前考慮物品的價值。若己經(jīng)考慮完了所有的物品,則得到一個解,判斷該解是否為當前最優(yōu),若為最優(yōu),則將該解的信息放入變量fp、fw和X中。若還

28、沒有考慮完所有的物品,意味著有些物品不能放入背包,此時先判斷若不將當前的物品放入背包中,則其余物品放入背包是否可能得到比當前最優(yōu)解更優(yōu)的解,若得不到則回溯;否則繼續(xù)考慮其余的物品。 【問題2】 根據(jù)問題1中給出的偽代碼運行該實例,可以很容易得到此0-1背包問題的最優(yōu)解,應該選擇物品2和物品3,此時背包的重量為10+10=20,獲得的價值為17+18=35。 若采用窮舉法搜索整個解空間,即要構造一顆完全二叉樹,此時搜索樹的結點數(shù)應為24-1=15,而采用了上述回溯法,搜索樹的結點數(shù)僅為8個,如上圖所示。 5.現(xiàn)欲構造一文件/目錄樹,采用組合(Composit

29、e)設計模式來設計,得到的類圖如6-1所示: {圖} 圖6-1類圖 【Java代碼】 import java.util.ArrayList; import.java.util.List; (1)class AbstractFile{ protected String name; public void printName( ?。﹞System.out.println(name);} public abstract boolean addChild(AbstractFile file); public abstract boolean removeChild(AbstracF

30、ile file); public abstract List<AbstractFile>getChildren( ?。? } class File extends AbstractFile{ public File(String name){this.name=name;} public?boolean addChild(AbstractFile file){return false;} public?boolean?removeChild(AbstracFile file){return false;} public?List<AbstractFile>getChildren

31、( ?。﹞return(2);} } class Folder extends AbstractFile{ private List<AbstracFile>childList; public Folder(String name){ this.name=name; this.childList=new ArrayList<AbstractFile>(  ); } public boolean addChild(AbstractFile file){return childList.add(file);} public boolean removeChild(Abstract

32、File file){return childList.remove(file);} public(3)<AbstractFile>getChildren(  ){return(4);} } public class Client{ public static void main(String[]args){ //創(chuàng)造一個樹形的文件/目錄結構 AbstractFile rootFolder=new Folder(“c:\\”); AbstractFile compositeFolder=new Folder(“composite”); AbstractFile windowsF

33、older=new Folder(“windows”); AbstractFile file=new File(“TestComposite.java”); rootFolder.addChild(compositeFolder); rootFolder.addChild(windowsFolder); compositeFolder.addChild(file); //打印目錄文件數(shù) printTree(rootFolder); } private static void printTree(AbstractFile ifile){ ifile.printName(  );

34、 List<AbstractFile>children=ifile.getChildren( ?。? if(Children==null)return; for(AbstractFile file:Children){ (5); } } } 該程序運行后輸出結果為: c:\ composite TestComposite.java Windows 【Java代碼】 import java.util.ArrayList; import.java.util.List; (1)class AbstractFile{ protected String name; p

35、ublic void printName( ?。﹞System.out.println(name);} public abstract boolean addChild(AbstractFile file); public abstract boolean removeChild(AbstracFile file); public abstract List<AbstractFile>getChildren( ?。? } class File extends AbstractFile{ public File(String name){this.name=name;} publi

36、c?boolean addChild(AbstractFile file){return false;} public?boolean?removeChild(AbstracFile file){return false;} public?List<AbstractFile>getChildren(  ){return(2);} } class Folder extends AbstractFile{ private List<AbstracFile>childList; public Folder(String name){ this.name=name; this.chil

37、dList=new ArrayList<AbstractFile>( ?。? } public boolean addChild(AbstractFile file){return childList.add(file);} public boolean removeChild(AbstractFile file){return childList.remove(file);} public(3)<AbstractFile>getChildren( ?。﹞return(4);} } public class Client{ public static void main(Stri

38、ng[]args){ //創(chuàng)造一個樹形的文件/目錄結構 AbstractFile rootFolder=new Folder(“c:\\”); AbstractFile compositeFolder=new Folder(“composite”); AbstractFile windowsFolder=new Folder(“windows”); AbstractFile file=new File(“TestComposite.java”); rootFolder.addChild(compositeFolder); rootFolder.addChild(windowsFo

39、lder); compositeFolder.addChild(file); //打印目錄文件數(shù) printTree(rootFolder); } private static void printTree(AbstractFile ifile){ ifile.printName( ?。? List<AbstractFile>children=ifile.getChildren(  ): if(Children==null)return; for(AbstractFile file:Children){ (5); } } } 該程序運行后輸出結果為: c:\ c

40、omposite TestComposite.java Windows 正確答案: 本題解析: (1)abstract (2)null (3)List (4)childList (5)printTree(file) 本題考查基本面向對象設計中設計模式的運用能力。 組合設計模式主要是表達整體和部分的關系,并且對整體和部分對象的使用無差別。題目中AbstractFile是File類和Folder類的父類,它抽象了兩個類的共有屬性和行為,在后續(xù)main方法的使用中,不論是File對象還是Fol

41、der對象,都可被當作AbstractFile對象來使用。另外,由于Folder對象可以聚合其他的Folder對象和File對象,等價于Folder對象可以聚合另一個AbslractFile對象。 題目中AbstractFile類應該為抽象類,因此其修飾符應該包括abstract,空(2)處返回File類對象的孩子,但File類對象沒有孩子節(jié)點,因此其返回值應該為NULL。getChildren方法是繼承自抽象父類AbstractFile,所以其返回類型應該和父類的定義保持一致,空(4)處返回存儲孩子節(jié)點的集合對象childList。該程序的運行能夠打印出文件目錄樹,因此空(5)處應該為打印

42、方法的調用。 6.現(xiàn)欲構造一文件/目錄樹,采用組合(Composite)設計模式來設計,得到的類圖如5-1所示: 圖5-1類圖 【C++代碼】 #include<List> #include<iostrem> #include<string> using namespace std; class AbstractFile{ protected: string name;//文件或目錄名稱 public: void printName( ?。﹞cout<<name;}//打印文件或目錄名稱 virtual void addChild(A

43、bstractFile*file)=0;//給一個目錄增加子目錄或文件 virtual void removeChild(AbstractFile*file)=0;//刪除一個目錄的子目錄或文件 virtual list<AbstractFile*>*getChildren( ?。?0;//獲得一個目錄的子目錄或文件 }; class File:public AbstracFile{ public: File(string name){(1)=name;} void addChild(AbstractFile*file){return;} void removeChild(Ab

44、stractFile*file){return;} (2)getChildren(  ){return(3);} }; classFolder:public AbstractFile{ private: list<AbstractFile*>childList;//存儲子目錄或文件 public: Folder(string name){(4)name;} void addChild(AbstractFile*file){childList.push_back(file);} void removeChild(AbstractFile*file){childList.remo

45、ve(file);} list<AbstractFile*>*getChildren( ?。﹞return(5);} }; void main( ?。﹞ //構造一個樹形的文件/目錄結構 AbstractFile*rootFolder=new Folder(“c:\\”); AbstractFile*compositeFolder=new Folder(“composite”); AbstractFile*windowsFolder=new Folder(“windows”); AbstractFile*file=new File(“TestComposite.java”);

46、 rootFolder->addChild(compositeFolder); rootFolder->addChild(windowsFolder); compositeFolder->addChild(file); } 圖5-1類圖 【C++代碼】 #include<List> #include<iostrem> #include<string> using namespace std; class AbstractFile{ protected: string name;//文件或目錄名稱 public: void printName( ?。﹞cout<<

47、name;}//打印文件或目錄名稱 virtual void addChild(AbstractFile*file)=0;//給一個目錄增加子目錄或文件 virtual void removeChild(AbstractFile*file)=0;//刪除一個目錄的子目錄或文件 virtual list<AbstractFile>*getChildren( ?。?0;//獲得一個目錄的子目錄或文件 }; class File:public AbstractFile{ public: File(string name){(1)=name;} void addChild(Abstra

48、ctFile*file){return;} void removeChild(AbstractFile*file){return;} (2)getChildren( ?。﹞return(3);} }; classFolder:public AbstractFile{ private: list<AbstractFile*>childList;//存儲子目錄或文件 public: Folder(string name){(4)name;} void addChild(AbstractFile*file){childList.push_back(file);} void rem

49、oveChild(AbstractFile*file){childList.remove(file);} list<AbstractFile*>*getChildren( ?。﹞return(5);} }; void main( ?。﹞ //構造一個樹形的文件/目錄結構 AbstractFile*rootFolder=new Folder(“c:\\”); AbstractFile*compositeFolder=new Folder(“composite”); AbstractFile*windowsFolder=new Folder(“windows”); Abstract

50、File*file=new file(“TestComposite.java”); rootFolder->addChild(compositeFolder); rootFolder->addChild(windowsFolder); compositeFolder->addChild(file); } 正確答案: 本題解析: (1)this->name (2)list<AbstractFile*>* (3)NULL (4)this->name (5)&childList 本題考查基本

51、面向對象設計中設計模式的運用能力。 組合設計模式主要是表達整體和部分的關系,并且對整體和部分對象的使用無差別。題目中AbstractFile是File類和Folder類的父類,它抽象了兩個類的共有屬性和行為,在后續(xù)main方法的使用中,不論是File對象還是Folder對象,都可被當作AbstractFile對象來使用。另外,由于Folder對象可以聚合其他的Folder對象和File對象,等價于Folder對象可以聚合另一個AbslractFile對象。 在類File和類Folder的構造函數(shù)中都需要記錄文件或目錄的名稱,因此空(1)和空(4)處主要是設置對象的名稱。因為File對象不再聚合其他的對象,所以File對象沒有孩子節(jié)點,因此,空(3)處應該返回NULL。getChildren()方法繼承自AbstractFile類,因此其返回類型也應保持一致。對于空(5),要求返回Folder對象的孩子對象,因此返回其成員childList的地址。

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!