《軟件工程基礎(chǔ)》全套PPT課件
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
9.1 什么是面向?qū)ο笤O(shè)計(jì) 在面向?qū)ο蠓治鲭A段只考慮問(wèn)題域和系統(tǒng)責(zé)任,在面向?qū)ο蠓治鲭A段只考慮問(wèn)題域和系統(tǒng)責(zé)任,在面向?qū)ο笤O(shè)計(jì)階段則要考慮與具體實(shí)現(xiàn)有關(guān)的問(wèn)在面向?qū)ο笤O(shè)計(jì)階段則要考慮與具體實(shí)現(xiàn)有關(guān)的問(wèn)題,這樣做的主要目的是題,這樣做的主要目的是:使反映問(wèn)題域本質(zhì)的總體框架和組織結(jié)構(gòu)長(zhǎng)期穩(wěn)定,使反映問(wèn)題域本質(zhì)的總體框架和組織結(jié)構(gòu)長(zhǎng)期穩(wěn)定,而細(xì)節(jié)可變;而細(xì)節(jié)可變;把穩(wěn)定部分(問(wèn)題域部分)與可變部分(與實(shí)現(xiàn)有關(guān)把穩(wěn)定部分(問(wèn)題域部分)與可變部分(與實(shí)現(xiàn)有關(guān)的部分)分開(kāi),使得系統(tǒng)能從容地適應(yīng)變化;的部分)分開(kāi),使得系統(tǒng)能從容地適應(yīng)變化;有利于同一個(gè)分析模型用于不同的設(shè)計(jì)與實(shí)現(xiàn);有利于同一個(gè)分析模型用于不同的設(shè)計(jì)與實(shí)現(xiàn);支持系統(tǒng)族和相似系統(tǒng)的分析、設(shè)計(jì)或編程結(jié)果復(fù)用;支持系統(tǒng)族和相似系統(tǒng)的分析、設(shè)計(jì)或編程結(jié)果復(fù)用;9.1 什么是面向?qū)ο笤O(shè)計(jì) 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)要對(duì)要對(duì)OOA結(jié)果按實(shí)現(xiàn)條件進(jìn)行補(bǔ)充與調(diào)整。結(jié)果按實(shí)現(xiàn)條件進(jìn)行補(bǔ)充與調(diào)整。即,要即,要繼續(xù)運(yùn)用繼續(xù)運(yùn)用OOA的方法,包括概念、表示法及一部分策略。的方法,包括概念、表示法及一部分策略。問(wèn)題域問(wèn)題域部分部分人人機(jī)機(jī)交交互互部部分分?jǐn)?shù)數(shù)據(jù)據(jù)管管理理部部分分構(gòu)件部署構(gòu)件部署部分部分控制驅(qū)動(dòng)部分控制驅(qū)動(dòng)部分將將OOA模型搬到模型搬到OOD作為作為OOD的基礎(chǔ)的基礎(chǔ)OOA模型模型按實(shí)現(xiàn)條件按實(shí)現(xiàn)條件(編程語(yǔ)言,編程語(yǔ)言,網(wǎng)絡(luò)與操作網(wǎng)絡(luò)與操作系統(tǒng),復(fù)用系統(tǒng),復(fù)用支持等支持等)進(jìn))進(jìn)行必要的調(diào)行必要的調(diào)整。整。不但要根據(jù)實(shí)現(xiàn)條件進(jìn)行不但要根據(jù)實(shí)現(xiàn)條件進(jìn)行OOD設(shè)計(jì),而且由于需求變化或新發(fā)現(xiàn)了設(shè)計(jì),而且由于需求變化或新發(fā)現(xiàn)了錯(cuò)誤,也要對(duì)錯(cuò)誤,也要對(duì)OOA的結(jié)果進(jìn)行修改。的結(jié)果進(jìn)行修改。9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)(1)為復(fù)用設(shè)計(jì)與編程的類(lèi)而增加結(jié)構(gòu))為復(fù)用設(shè)計(jì)與編程的類(lèi)而增加結(jié)構(gòu)如果如果OOA識(shí)別和定義的類(lèi)是本次開(kāi)發(fā)中新定義的,那么識(shí)別和定義的類(lèi)是本次開(kāi)發(fā)中新定義的,那么需要進(jìn)行編程。需要進(jìn)行編程。如果已存在一些可復(fù)用的類(lèi),而且這些類(lèi)既有分析、設(shè)如果已存在一些可復(fù)用的類(lèi),而且這些類(lèi)既有分析、設(shè)計(jì)時(shí)的定義,又有源程序,那么,復(fù)用這些類(lèi)即可提高計(jì)時(shí)的定義,又有源程序,那么,復(fù)用這些類(lèi)即可提高開(kāi)發(fā)效率與質(zhì)量。開(kāi)發(fā)效率與質(zhì)量??蓮?fù)用的類(lèi)可能只是與可復(fù)用的類(lèi)可能只是與OOA模型中的類(lèi)相似,而不是完模型中的類(lèi)相似,而不是完全相同,因此需對(duì)二者進(jìn)行修改。全相同,因此需對(duì)二者進(jìn)行修改。目標(biāo):盡可能使復(fù)用成分增多,新開(kāi)發(fā)的成分減少目標(biāo):盡可能使復(fù)用成分增多,新開(kāi)發(fā)的成分減少目標(biāo):盡可能使復(fù)用成分增多,新開(kāi)發(fā)的成分減少目標(biāo):盡可能使復(fù)用成分增多,新開(kāi)發(fā)的成分減少9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)不同程度的復(fù)用不同程度的復(fù)用當(dāng)當(dāng)前前所所需需的的類(lèi)類(lèi)的的信信息息比比可可復(fù)復(fù)用用類(lèi)類(lèi)定定義義的的信信息息直接復(fù)用直接復(fù)用 通過(guò)繼承復(fù)用通過(guò)繼承復(fù)用 刪除可復(fù)用類(lèi)的多余信息刪除可復(fù)用類(lèi)的多余信息刪除多余信息,通過(guò)繼承而復(fù)用刪除多余信息,通過(guò)繼承而復(fù)用9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)車(chē)輛序號(hào)廠(chǎng)商式樣序號(hào)認(rèn)證可復(fù)用的類(lèi)序號(hào)顏色式樣出廠(chǎng)年月序號(hào)認(rèn)證車(chē)輛問(wèn)題域中的類(lèi)步驟:步驟:(1)把要復(fù)用的類(lèi)加到問(wèn)題域,)把要復(fù)用的類(lèi)加到問(wèn)題域,(2)標(biāo)以)標(biāo)以“復(fù)用復(fù)用”,劃掉(或標(biāo)出)不用的屬性與操作劃掉(或標(biāo)出)不用的屬性與操作(3)建立從復(fù)用類(lèi)到問(wèn)題域原有的類(lèi)之間的泛化關(guān)系)建立從復(fù)用類(lèi)到問(wèn)題域原有的類(lèi)之間的泛化關(guān)系(4)由于問(wèn)題域的類(lèi)繼承了)由于問(wèn)題域的類(lèi)繼承了“復(fù)用復(fù)用”類(lèi)的特征,類(lèi)的特征,所以有些屬性和操作不需要了所以有些屬性和操作不需要了劃掉。劃掉。(復(fù)用)(復(fù)用復(fù)用)車(chē)輛序號(hào)廠(chǎng)商式樣序號(hào)認(rèn)證可復(fù)用的類(lèi)第四種情況的的具體處理:第四種情況的的具體處理:第四種情況的的具體處理:第四種情況的的具體處理:可復(fù)用類(lèi)定義的信息可復(fù)用類(lèi)定義的信息當(dāng)前所需的類(lèi)的信息當(dāng)前所需的類(lèi)的信息把需要頻繁交換信息的對(duì)象,盡量地放在一臺(tái)處理機(jī)上。把需要頻繁交換信息的對(duì)象,盡量地放在一臺(tái)處理機(jī)上。增加屬性或類(lèi),以增加屬性或類(lèi),以保存中間結(jié)果保存中間結(jié)果提高或降低系統(tǒng)的并發(fā)度,可能要人為地增加或減少主動(dòng)對(duì)象。提高或降低系統(tǒng)的并發(fā)度,可能要人為地增加或減少主動(dòng)對(duì)象。合并通訊頻繁的類(lèi)合并通訊頻繁的類(lèi)流速控制器流速控制器指定流速指定流速當(dāng)前流速當(dāng)前流速流速調(diào)節(jié)流速調(diào)節(jié)流速探測(cè)流速探測(cè)流速調(diào)節(jié)器流速調(diào)節(jié)器指定流速指定流速流速調(diào)節(jié)流速調(diào)節(jié)流速探測(cè)器流速探測(cè)器當(dāng)前流速當(dāng)前流速流速探測(cè)流速探測(cè)取當(dāng)前流速取當(dāng)前流速合并前合并前合并后合并后(2)提高性能)提高性能9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)用聚合關(guān)系描述復(fù)雜類(lèi)用聚合關(guān)系描述復(fù)雜類(lèi)幀幀顯示顯示幀幀顯示顯示背景背景前景前景*1 11 11 1顯示顯示顯示顯示9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)為編程方便增加底層成分為編程方便增加底層成分細(xì)化對(duì)象的分類(lèi)細(xì)化對(duì)象的分類(lèi)例:將幾何圖形分成例:將幾何圖形分成多邊形、橢圓、扇形多邊形、橢圓、扇形等特殊類(lèi)等特殊類(lèi)幾何圖形幾何圖形繪圖多邊形多邊形扇形扇形橢圓橢圓繪圖繪圖繪圖9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)(3)增加一般類(lèi)以建立共同協(xié)議)增加一般類(lèi)以建立共同協(xié)議增加根類(lèi):增加根類(lèi):將所有的具有相似協(xié)議的類(lèi)組織在一起將所有的具有相似協(xié)議的類(lèi)組織在一起提供通用的協(xié)議提供通用的協(xié)議例如:提供創(chuàng)建、刪除、復(fù)制等服務(wù)例如:提供創(chuàng)建、刪除、復(fù)制等服務(wù)增加其他一般類(lèi):增加其他一般類(lèi):提供局部通用的協(xié)議提供局部通用的協(xié)議例如:提供永久存儲(chǔ)及恢復(fù)功能例如:提供永久存儲(chǔ)及恢復(fù)功能9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)(4)按編程語(yǔ)言調(diào)整繼承)按編程語(yǔ)言調(diào)整繼承起因:起因:OOA強(qiáng)調(diào)如實(shí)地反映問(wèn)題域,強(qiáng)調(diào)如實(shí)地反映問(wèn)題域,OOD考慮實(shí)現(xiàn)問(wèn)題,考慮實(shí)現(xiàn)問(wèn)題,所用語(yǔ)言不支持多繼承,甚至不支持繼承所用語(yǔ)言不支持多繼承,甚至不支持繼承多繼承模式示例多繼承模式示例狹義菱形狹義菱形廣義菱形廣義菱形9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)BACBAC因?yàn)榫酆虾头夯遣煌母拍睿@種方法并不是通用的因?yàn)榫酆虾头夯遣煌母拍?,這種方法并不是通用的(按定義)。在大多數(shù)情況下,在大多數(shù)情況下,需要考慮形成多繼承的原因需要考慮形成多繼承的原因,將本來(lái)在,將本來(lái)在特殊類(lèi)中顯式定義的信息離出來(lái),作為部分對(duì)象,以原來(lái)特殊類(lèi)中顯式定義的信息離出來(lái),作為部分對(duì)象,以原來(lái)的一般類(lèi)作為整體對(duì)象。的一般類(lèi)作為整體對(duì)象。把多繼承調(diào)整為單繼承把多繼承調(diào)整為單繼承9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)方法方法1 1:采用:采用聚合聚合公司人員公司人員雇主雇主職員職員雇主職員雇主職員公司人員公司人員身份身份雇主身份雇主身份職員身份職員身份0.21創(chuàng)建“雇主”對(duì)象創(chuàng)建“職員”對(duì)象創(chuàng)建“雇主職員”對(duì)象9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)公司人員公司人員雇主身份雇主身份職員身份職員身份10.1身份身份0.11公司人員公司人員雇主雇主職員職員雇主職員雇主職員9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)方法方法2 2:壓平:壓平公司人員公司人員顧主顧主職員職員顧主職員顧主職員問(wèn)題:有什么缺點(diǎn)?問(wèn)題:有什么缺點(diǎn)?顧主信息顧主信息職員信息職員信息問(wèn)題:改成繼承?問(wèn)題:改成繼承?9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)方法方法3 3:不支持不支持泛化泛化顧主顧主職員職員顧主職員顧主職員問(wèn)題:有什么缺點(diǎn)?問(wèn)題:有什么缺點(diǎn)?9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)對(duì)多態(tài)性的調(diào)整對(duì)多態(tài)性的調(diào)整9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)供貨商客戶(hù)0.*1.*供需合同賣(mài)方買(mǎi)方.11供貨商客戶(hù)0.*1.*把多對(duì)多關(guān)聯(lián)轉(zhuǎn)把多對(duì)多關(guān)聯(lián)轉(zhuǎn)化為一對(duì)多關(guān)聯(lián)化為一對(duì)多關(guān)聯(lián)(5)對(duì)復(fù)雜關(guān)聯(lián)的轉(zhuǎn)化并決定關(guān)聯(lián)的實(shí)現(xiàn)方式對(duì)復(fù)雜關(guān)聯(lián)的轉(zhuǎn)化并決定關(guān)聯(lián)的實(shí)現(xiàn)方式項(xiàng)目人員語(yǔ)言把多元關(guān)聯(lián)把多元關(guān)聯(lián)轉(zhuǎn)化為二元關(guān)聯(lián)轉(zhuǎn)化為二元關(guān)聯(lián)語(yǔ)言項(xiàng)目人員任務(wù)項(xiàng)項(xiàng)目名人員語(yǔ)言1 1.*1 1.*1.*公司公司雇員雇員*1.*工作工作薪水薪水把把把把關(guān)關(guān)關(guān)關(guān)聯(lián)聯(lián)聯(lián)聯(lián)類(lèi)類(lèi)類(lèi)類(lèi)轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)化化化化為為為為二二二二元元元元關(guān)關(guān)關(guān)關(guān)聯(lián)聯(lián)聯(lián)聯(lián)*1.*工作工作薪水薪水公司公司雇員雇員119.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)對(duì)關(guān)聯(lián)進(jìn)行調(diào)整后,要考慮關(guān)聯(lián)的實(shí)現(xiàn)方式。對(duì)關(guān)聯(lián)進(jìn)行調(diào)整后,要考慮關(guān)聯(lián)的實(shí)現(xiàn)方式。(1)聚合)聚合決決定定在在整整體體類(lèi)類(lèi)中中指指出出部部分分類(lèi)類(lèi)時(shí)時(shí),是是用用部部分分類(lèi)類(lèi)直直接接作作為為整整體體類(lèi)類(lèi)中中的的屬屬性性的的數(shù)數(shù)據(jù)據(jù)類(lèi)類(lèi)型型,還還是是把把部部分分類(lèi)類(lèi)用用作作指指針針或或?qū)?duì)象象標(biāo)標(biāo)識(shí)識(shí)的的基基類(lèi)類(lèi)型型,再再用用這這樣樣的的指指針針或或?qū)?duì)象象標(biāo)標(biāo)示示定定義義整整體體類(lèi)類(lèi)的的屬性。屬性。如如果果是是組組合合,最最好好用用第第1種種方方式式,否否則則就就需需要要在在程程序序中中保保證證整整體體對(duì)對(duì)象象與與部部分分對(duì)對(duì)象象的的生命周期的一致性。生命周期的一致性。Class AClass B A a;/組合 A*a;/聚合,B的對(duì)象管理A的對(duì)象組合void combination()9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)(2)關(guān)聯(lián))關(guān)聯(lián)通常,通過(guò)在對(duì)象中設(shè)立指針或?qū)ο髽?biāo)識(shí)以指向或記錄另一端的對(duì)象的通常,通過(guò)在對(duì)象中設(shè)立指針或?qū)ο髽?biāo)識(shí)以指向或記錄另一端的對(duì)象的方法,來(lái)實(shí)現(xiàn)關(guān)聯(lián)。方法,來(lái)實(shí)現(xiàn)關(guān)聯(lián)。(1)如果是單向關(guān)聯(lián),就在源端的類(lèi)中設(shè)立屬性,用來(lái)標(biāo)記另一端的類(lèi)將如果是單向關(guān)聯(lián),就在源端的類(lèi)中設(shè)立屬性,用來(lái)標(biāo)記另一端的類(lèi)將來(lái)創(chuàng)建的對(duì)象來(lái)創(chuàng)建的對(duì)象(2)如果是雙向關(guān)聯(lián),就在兩端類(lèi)中各設(shè)立屬性,用來(lái)標(biāo)記對(duì)方將來(lái)創(chuàng)建如果是雙向關(guān)聯(lián),就在兩端類(lèi)中各設(shè)立屬性,用來(lái)標(biāo)記對(duì)方將來(lái)創(chuàng)建的對(duì)象。的對(duì)象。(3)如果關(guān)聯(lián)中對(duì)方類(lèi)的多重性是如果關(guān)聯(lián)中對(duì)方類(lèi)的多重性是1,那么可在本方設(shè)立一個(gè)指向?qū)Ψ綄?duì),那么可在本方設(shè)立一個(gè)指向?qū)Ψ綄?duì)象的指針,或設(shè)立一個(gè)記錄對(duì)方對(duì)象引用的屬性。象的指針,或設(shè)立一個(gè)記錄對(duì)方對(duì)象引用的屬性。(4)如果對(duì)方類(lèi)的多重性大于如果對(duì)方類(lèi)的多重性大于1,那么可在本方設(shè)立一個(gè)指向?qū)Ψ綄?duì)象的指,那么可在本方設(shè)立一個(gè)指向?qū)Ψ綄?duì)象的指針集合或引用集合。針集合或引用集合。(5)若關(guān)聯(lián)的某端有角色名,最好把其作為另一端類(lèi)的屬性名,以訪(fǎng)問(wèn)與若關(guān)聯(lián)的某端有角色名,最好把其作為另一端類(lèi)的屬性名,以訪(fǎng)問(wèn)與角色名相鄰的類(lèi)。角色名相鄰的類(lèi)。Provider 1oldest1.*0.1ConsumerProvider*toProviderproviderSet *headstruct providerSet Provider p;struct providerSet*next;Consumer oldest9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)(6)調(diào)整與完善屬性)調(diào)整與完善屬性按照語(yǔ)法:可見(jiàn)性 屬性名:類(lèi)型=初始值 對(duì)屬性的定義進(jìn)行完善。每一個(gè)屬性或者包含單個(gè)值,或者包含作為一個(gè)整體的密切相關(guān)的一組值若要給出對(duì)屬性的性質(zhì)的約束,如“工齡60”或“0英語(yǔ)成績(jī)100”等,也要看語(yǔ)言是否對(duì)其直接支持,否則要在算法上考慮如何實(shí)現(xiàn)。9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì)(7)構(gòu)造和優(yōu)化算法)構(gòu)造和優(yōu)化算法對(duì)于需要設(shè)計(jì)的操作,要從如下幾方面進(jìn)行詳細(xì)地定義:對(duì)于需要設(shè)計(jì)的操作,要從如下幾方面進(jìn)行詳細(xì)地定義:(1)按照操作格式:按照操作格式:可見(jiàn)性可見(jiàn)性操作名操作名(參數(shù)列表參數(shù)列表):返回類(lèi)返回類(lèi)型型完善操作的定義。完善操作的定義。(2)從問(wèn)題域的角度,根據(jù)其責(zé)任,考慮實(shí)現(xiàn)操作的算法,即對(duì)象是)從問(wèn)題域的角度,根據(jù)其責(zé)任,考慮實(shí)現(xiàn)操作的算法,即對(duì)象是怎樣提供操作的。怎樣提供操作的。(3)若操作有前后置條件或不變式,考慮編程語(yǔ)言是否予以支持。若)若操作有前后置條件或不變式,考慮編程語(yǔ)言是否予以支持。若不支持,在操作的方法中要予以實(shí)現(xiàn)。不支持,在操作的方法中要予以實(shí)現(xiàn)。(4)建議進(jìn)一步地分析特定類(lèi)的對(duì)象相關(guān)的所有交互圖,找出其所有)建議進(jìn)一步地分析特定類(lèi)的對(duì)象相關(guān)的所有交互圖,找出其所有與之相關(guān)的消息。一個(gè)對(duì)象所要響應(yīng)的每個(gè)消息都要由該對(duì)象的操作處理,與之相關(guān)的消息。一個(gè)對(duì)象所要響應(yīng)的每個(gè)消息都要由該對(duì)象的操作處理,其中的一個(gè)操作也可能要使用其他操作。如果類(lèi)擁有狀態(tài)圖,還可根據(jù)內(nèi)其中的一個(gè)操作也可能要使用其他操作。如果類(lèi)擁有狀態(tài)圖,還可根據(jù)內(nèi)部轉(zhuǎn)換以及外部轉(zhuǎn)換上的動(dòng)作,設(shè)計(jì)算法的詳細(xì)邏輯。部轉(zhuǎn)換以及外部轉(zhuǎn)換上的動(dòng)作,設(shè)計(jì)算法的詳細(xì)邏輯。可用自然語(yǔ)言或進(jìn)行了一定結(jié)構(gòu)化的自然語(yǔ)言描述算法,也可以使用可用自然語(yǔ)言或進(jìn)行了一定結(jié)構(gòu)化的自然語(yǔ)言描述算法,也可以使用程序框圖或活動(dòng)圖描述算法。程序框圖或活動(dòng)圖描述算法。在算法中還要考慮對(duì)例外和特殊情況的處理。如在算法中還要考慮對(duì)例外和特殊情況的處理。如考慮對(duì)輸入錯(cuò)誤、來(lái)考慮對(duì)輸入錯(cuò)誤、來(lái)自中間件或其它軟硬件的錯(cuò)誤的消息以及其它例外情況的處理。自中間件或其它軟硬件的錯(cuò)誤的消息以及其它例外情況的處理。在系統(tǒng)較為復(fù)雜或需要處理大批量的數(shù)據(jù)的情況下,若系統(tǒng)在性能上在系統(tǒng)較為復(fù)雜或需要處理大批量的數(shù)據(jù)的情況下,若系統(tǒng)在性能上有要求,就要對(duì)系統(tǒng)的體系結(jié)構(gòu)和算法進(jìn)行優(yōu)化。有要求,就要對(duì)系統(tǒng)的體系結(jié)構(gòu)和算法進(jìn)行優(yōu)化。(8 8)決定對(duì)象間的可訪(fǎng)問(wèn)性)決定對(duì)象間的可訪(fǎng)問(wèn)性(M)(M)從類(lèi)從類(lèi)A A的對(duì)象到類(lèi)的對(duì)象到類(lèi)B B的對(duì)象有的對(duì)象有4 4種訪(fǎng)問(wèn)性種訪(fǎng)問(wèn)性屬性可見(jiàn)性屬性可見(jiàn)性:B B是是A A的一個(gè)屬性(關(guān)聯(lián)、聚合)的一個(gè)屬性(關(guān)聯(lián)、聚合)class Aclass A ;B b;B b;參數(shù)可見(jiàn)性參數(shù)可見(jiàn)性:B B的對(duì)象是的對(duì)象是A A的一個(gè)方法的參數(shù)(依賴(lài))的一個(gè)方法的參數(shù)(依賴(lài))A.amethod(BA.amethod(B b)/b)/間接地找到一個(gè)對(duì)象,并賦給間接地找到一個(gè)對(duì)象,并賦給b b。局部聲明可見(jiàn)性局部聲明可見(jiàn)性:B B的對(duì)象是在的對(duì)象是在A(yíng) A的一個(gè)方法中聲明的一個(gè)局部變量(依賴(lài))的一個(gè)方法中聲明的一個(gè)局部變量(依賴(lài))class A:amethodclass A:amethod ;B b;B b;全局可見(jiàn)性全局可見(jiàn)性:B B的對(duì)象在某種程度上全局可見(jiàn)(依賴(lài))的對(duì)象在某種程度上全局可見(jiàn)(依賴(lài))聲明聲明B B的全局實(shí)例變量的全局實(shí)例變量對(duì)對(duì)于于后后三三種種情情況況而而言言,從從類(lèi)類(lèi)A到到類(lèi)類(lèi)B間間存存在在著著依依賴(lài)賴(lài)關(guān)關(guān)系系,在在程程序序運(yùn)運(yùn)行行期期間間A的的對(duì)對(duì)象象與與B的的對(duì)對(duì)象象存存在在著著臨臨時(shí)時(shí)性性的的連連接接(臨臨時(shí)時(shí)鏈鏈),而而第第一一種種情情況況中中的的鏈鏈?zhǔn)鞘怯捎蓮膹念?lèi)類(lèi)A到到類(lèi)類(lèi)B間間的關(guān)聯(lián)實(shí)例化而來(lái)的。的關(guān)聯(lián)實(shí)例化而來(lái)的。(9)定義對(duì)象實(shí)例定義對(duì)象實(shí)例在邏輯上,一個(gè)類(lèi)是對(duì)一組對(duì)象的抽象描述。在邏輯上,一個(gè)類(lèi)是對(duì)一組對(duì)象的抽象描述。在物理上,一個(gè)類(lèi)所創(chuàng)建的各對(duì)象,在物理上,一個(gè)類(lèi)所創(chuàng)建的各對(duì)象,要么在內(nèi)存中(用一個(gè)變量記錄對(duì)象的標(biāo)識(shí));要么在內(nèi)存中(用一個(gè)變量記錄對(duì)象的標(biāo)識(shí));要么在外存中(把對(duì)象保存在一個(gè)文件中或一個(gè)數(shù)據(jù)庫(kù)表中)要么在外存中(把對(duì)象保存在一個(gè)文件中或一個(gè)數(shù)據(jù)庫(kù)表中)根據(jù)不同的實(shí)現(xiàn)條件和實(shí)現(xiàn)策略,可以按如下的方式定義對(duì)象:根據(jù)不同的實(shí)現(xiàn)條件和實(shí)現(xiàn)策略,可以按如下的方式定義對(duì)象:(1)用相應(yīng)的類(lèi)定義內(nèi)存中的全局性對(duì)象,包括靜態(tài)聲明和動(dòng)態(tài)創(chuàng)建兩用相應(yīng)的類(lèi)定義內(nèi)存中的全局性對(duì)象,包括靜態(tài)聲明和動(dòng)態(tài)創(chuàng)建兩種方式。可以一次針對(duì)一個(gè)對(duì)象定義一個(gè)變量,也可以成批地定義對(duì)象。種方式??梢砸淮吾槍?duì)一個(gè)對(duì)象定義一個(gè)變量,也可以成批地定義對(duì)象。例如,可以定義一個(gè)數(shù)組,它的每個(gè)元素是一個(gè)對(duì)象變量,以此來(lái)成批例如,可以定義一個(gè)數(shù)組,它的每個(gè)元素是一個(gè)對(duì)象變量,以此來(lái)成批地定義對(duì)象。地定義對(duì)象。Class AClass B A a10;A*a10;9.2 問(wèn)題域部分的設(shè)計(jì)問(wèn)題域部分的設(shè)計(jì) (2)當(dāng)系統(tǒng)需要通過(guò)從外存讀取數(shù)據(jù)來(lái)創(chuàng)建一個(gè)對(duì)象時(shí))當(dāng)系統(tǒng)需要通過(guò)從外存讀取數(shù)據(jù)來(lái)創(chuàng)建一個(gè)對(duì)象時(shí),先創(chuàng)建該對(duì)先創(chuàng)建該對(duì)象,再?gòu)耐獯嬷凶x取這個(gè)對(duì)象數(shù)據(jù),把數(shù)據(jù)賦值給對(duì)象的相應(yīng)屬性。象,再?gòu)耐獯嬷凶x取這個(gè)對(duì)象數(shù)據(jù),把數(shù)據(jù)賦值給對(duì)象的相應(yīng)屬性。按照一定的策略,內(nèi)存中的永久對(duì)象要保存到外存中,請(qǐng)參看數(shù)據(jù)按照一定的策略,內(nèi)存中的永久對(duì)象要保存到外存中,請(qǐng)參看數(shù)據(jù)管理部分。管理部分。無(wú)論那種方式,都需要在在無(wú)論那種方式,都需要在在OOD文檔中加以說(shuō)明。按如下格式在類(lèi)文檔中加以說(shuō)明。按如下格式在類(lèi)描述模板的定義對(duì)象部分進(jìn)行描述:描述模板的定義對(duì)象部分進(jìn)行描述:處理機(jī):處理機(jī):,;內(nèi)存對(duì)象:內(nèi)存對(duì)象:(n元數(shù)組)元數(shù)組);外存對(duì)象:外存對(duì)象:;對(duì)象屬性1屬性n外存外存外存外存內(nèi)存內(nèi)存內(nèi)存內(nèi)存9.3 人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì) 簡(jiǎn)單的講,人機(jī)交互部分是人和計(jì)算機(jī)之間交互簡(jiǎn)單的講,人機(jī)交互部分是人和計(jì)算機(jī)之間交互簡(jiǎn)單的講,人機(jī)交互部分是人和計(jì)算機(jī)之間交互簡(jiǎn)單的講,人機(jī)交互部分是人和計(jì)算機(jī)之間交互信息的媒介,對(duì)它的設(shè)計(jì)涉及到計(jì)算機(jī)科學(xué)、心理學(xué)、信息的媒介,對(duì)它的設(shè)計(jì)涉及到計(jì)算機(jī)科學(xué)、心理學(xué)、信息的媒介,對(duì)它的設(shè)計(jì)涉及到計(jì)算機(jī)科學(xué)、心理學(xué)、信息的媒介,對(duì)它的設(shè)計(jì)涉及到計(jì)算機(jī)科學(xué)、心理學(xué)、藝術(shù)學(xué)、認(rèn)知科學(xué)和人機(jī)工程學(xué)等學(xué)科。本節(jié)闡述的藝術(shù)學(xué)、認(rèn)知科學(xué)和人機(jī)工程學(xué)等學(xué)科。本節(jié)闡述的藝術(shù)學(xué)、認(rèn)知科學(xué)和人機(jī)工程學(xué)等學(xué)科。本節(jié)闡述的藝術(shù)學(xué)、認(rèn)知科學(xué)和人機(jī)工程學(xué)等學(xué)科。本節(jié)闡述的是人機(jī)交互的軟件方面的設(shè)計(jì)。是人機(jī)交互的軟件方面的設(shè)計(jì)。是人機(jī)交互的軟件方面的設(shè)計(jì)。是人機(jī)交互的軟件方面的設(shè)計(jì)??刂平涌诓糠挚刂平涌诓糠謫?wèn)題域問(wèn)題域部分部分?jǐn)?shù)數(shù)據(jù)據(jù)管管理理部部分分人人機(jī)機(jī)交交互互部部分分OSF/Motif人人機(jī)機(jī)交交互互部部分分X-Window人人機(jī)機(jī)交交互互部部分分MS-Windows把人機(jī)交互部分作為系統(tǒng)中一個(gè)獨(dú)立的組成部分,進(jìn)行分析把人機(jī)交互部分作為系統(tǒng)中一個(gè)獨(dú)立的組成部分,進(jìn)行分析和設(shè)計(jì),有利于隔離界面支持系統(tǒng)的變化對(duì)問(wèn)題域部分的影響和設(shè)計(jì),有利于隔離界面支持系統(tǒng)的變化對(duì)問(wèn)題域部分的影響.什么是人機(jī)交互部分什么是人機(jī)交互部分9.3 人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的需求分析人機(jī)交互部分的需求分析對(duì)使用系統(tǒng)的人進(jìn)行分析對(duì)使用系統(tǒng)的人進(jìn)行分析以便設(shè)計(jì)出適合其特點(diǎn)的交互方式和界面表現(xiàn)形式;對(duì)人和機(jī)器的交互過(guò)程進(jìn)行分析對(duì)人和機(jī)器的交互過(guò)程進(jìn)行分析核心問(wèn)題是人如何命令系統(tǒng),以及系統(tǒng)如何向人提交信息。1、分析與系統(tǒng)交互的人、分析與系統(tǒng)交互的人人員參與者人員參與者 人對(duì)界面的需求,不僅在于人機(jī)交互的內(nèi)容,而且在于他們對(duì)界面表現(xiàn)形式、風(fēng)格等方面的愛(ài)好。前者是客觀(guān)需求客觀(guān)需求*,對(duì)誰(shuí)都一樣;后者是主觀(guān)需求主觀(guān)需求,因人而異。(1)列舉所有的人員參與者(2)調(diào)查研究(3)區(qū)分人員類(lèi)型(4)統(tǒng)計(jì)(或估算)各類(lèi)人員的比例(5)了解使用者的主觀(guān)需求(6)按照一定的準(zhǔn)則進(jìn)行折中與均衡2、對(duì)人和機(jī)器的交互過(guò)程進(jìn)行分析、對(duì)人和機(jī)器的交互過(guò)程進(jìn)行分析從從usecase分析人機(jī)交互分析人機(jī)交互usecase的構(gòu)成的構(gòu)成 參與者的行為和系統(tǒng)行為按時(shí)序出現(xiàn),形成交叉排列的段落。每個(gè)段落至少含有一個(gè)輸入語(yǔ)句或輸出語(yǔ)句;有若干純屬參與者自身或系統(tǒng)自身的行為陳述;可能包含一些控制語(yǔ)句或括號(hào)。抽取方法:抽取方法:刪除所有與輸入、輸出無(wú)關(guān)的語(yǔ)句和不再包含任何內(nèi)容的控制語(yǔ)句與括號(hào),剩下的就是對(duì)一個(gè)參與者(人)使用一項(xiàng)系統(tǒng)功能時(shí)的人機(jī)交互描述。9.3 人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)收款員收款(收款員收款(use caseuse case)輸入開(kāi)始本次收款的命令;作好收款準(zhǔn)備,應(yīng)收款總數(shù)置為0,輸出提示信息;forfor 顧客選購(gòu)的每種商品 dodo 輸入商品編號(hào);ifif 此種商品多于一件 thenthen 輸入商品數(shù)量 end ifend if;檢索商品名稱(chēng)及單價(jià);貨架商品數(shù)減去售出數(shù);ifif 貨架商品數(shù)低于下限 thenthen 通知供貨員請(qǐng)求上貨end ifend if;計(jì)算本種商品總價(jià)并打印編號(hào)、名稱(chēng)、數(shù)量、單價(jià)、總價(jià);總價(jià)累加到應(yīng)收款總數(shù);end forend for;打印應(yīng)收款總數(shù);輸入顧客交來(lái)的款數(shù);計(jì)算應(yīng)找回的款數(shù),打印以上兩個(gè)數(shù)目,收款數(shù)計(jì)入賬冊(cè)。(a)一個(gè)use case的例子 從use case提取人機(jī)交互描述收款員收款(人機(jī)交互)收款員收款(人機(jī)交互)輸入開(kāi)始本次收款的命令;輸出提示信息;for 顧客選購(gòu)的每種商品 輸入商品編號(hào);if 此種商品多于一件 then 輸入商品數(shù)量endif;打印商品編號(hào)、名稱(chēng)、數(shù)量、單價(jià)、總價(jià);endfor;打印應(yīng)收款總數(shù)輸入顧客交來(lái)的款數(shù)打印交款數(shù)及找回款數(shù);(b)人機(jī)交互描述9.3 人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)一、輸入與輸出設(shè)計(jì)一、輸入與輸出設(shè)計(jì)(1)輸入的細(xì)化輸入步驟的細(xì)化輸入設(shè)備的選擇輸入信息表現(xiàn)形式的選擇(命令,數(shù)據(jù))(2)輸出的細(xì)化輸出步驟的細(xì)化輸出設(shè)備的選擇輸出信息表現(xiàn)形式的選擇人機(jī)界面的人機(jī)界面的OO設(shè)計(jì)設(shè)計(jì)9.3 人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)二、命令的組織二、命令的組織不受歡迎的命令組織方式:不受歡迎的命令組織方式:(1)一條命令含有大量的參數(shù)和任選項(xiàng)(2)系統(tǒng)有大量命令,不加任何組織和引導(dǎo)基本命令:基本命令:使用一項(xiàng)獨(dú)立的系統(tǒng)功能的命令提取后的用況提取后的用況提取后的用況提取后的用況命令步:命令步:在執(zhí)行一條基本命令的交互過(guò)程中所包含的具體輸入步驟。高層命令:高層命令:如果一條命令是在另一條命令的引導(dǎo)下被選用的,則后者稱(chēng)作前者的高層命令。命令的組織措施命令的組織措施分解與組合分解與組合(1)分解:將一條含有許多參數(shù)和選項(xiàng)的命令分解為若干命令步(2)組合:將基本命令組織成高層命令,從高層命令引向基本命令9.3 人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)兩層命令之間的兩層命令之間的輸出信息結(jié)構(gòu)輸出信息結(jié)構(gòu)反饋信息處理結(jié)果提示信息反饋信息處理結(jié)果處理結(jié)果提示信息提示信息處理結(jié)果提示信息提示信息9.3 人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)在建立命令樹(shù)時(shí),應(yīng)遵循如下策略:在建立命令樹(shù)時(shí),應(yīng)遵循如下策略:n把使用最頻繁的命令放在前面,按照用戶(hù)的工作步驟進(jìn)行把使用最頻繁的命令放在前面,按照用戶(hù)的工作步驟進(jìn)行排列。排列。n在命令中發(fā)現(xiàn)整體在命令中發(fā)現(xiàn)整體-部分模式,以幫助對(duì)命令的組織與分部分模式,以幫助對(duì)命令的組織與分塊。塊。n每層命令的個(gè)數(shù)應(yīng)遵循每層命令的個(gè)數(shù)應(yīng)遵循7+2原則,命令的層次深度盡量要原則,命令的層次深度盡量要控制在三層以?xún)?nèi)??刂圃谌龑右?xún)?nèi)。9.3 人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)1、選擇界面支持系統(tǒng)(窗口系統(tǒng)、圖形用戶(hù)界面、可視化編程環(huán)境)2、設(shè)計(jì)報(bào)表及報(bào)告.對(duì)要生成的報(bào)表和報(bào)告格式等進(jìn)行設(shè)計(jì)。每一種報(bào)表或報(bào)告應(yīng)對(duì)應(yīng)于一個(gè)類(lèi)。3 3、設(shè)計(jì)諸如安全/登錄、設(shè)置和業(yè)務(wù)功能之類(lèi)的窗口。每一種窗口對(duì)應(yīng)于一個(gè)類(lèi)。4、在窗口中,按照命令的邏輯層次,部署所需要的元素,如菜單、工作區(qū)和對(duì)話(huà)框等。窗口中的部件元素對(duì)應(yīng)窗口類(lèi)的部分類(lèi),部分類(lèi)與窗口類(lèi)形成聚合關(guān)系。5發(fā)現(xiàn)窗口類(lèi)間的共性以及部件類(lèi)間的共性,定義較一般的窗口類(lèi)和部件類(lèi),分別形成窗口類(lèi)間以及部件類(lèi)間的泛化關(guān)系。6.用類(lèi)的屬性表示窗口或部件的靜態(tài)特征,如尺寸、位置、顏色和選項(xiàng)等。7.用操作表示窗口或部件的動(dòng)態(tài)特征,如選中、移動(dòng)和滾屏等。有的操作要涉及到問(wèn)題域中的類(lèi)。8.發(fā)現(xiàn)界面類(lèi)之間的聯(lián)系,在其間建立關(guān)聯(lián)。必要時(shí),進(jìn)一步地繪制用戶(hù)與系統(tǒng)會(huì)話(huà)的順序圖。三、用三、用OO概念表達(dá)所有的界面成分概念表達(dá)所有的界面成分*在可視化的編程環(huán)境下,能節(jié)省很多界面設(shè)計(jì)工作在可視化的編程環(huán)境下,能節(jié)省很多界面設(shè)計(jì)工作9.3 人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)9.9.建立界面類(lèi)與問(wèn)題域類(lèi)之間的聯(lián)系。有些界面對(duì)象要與問(wèn)建立界面類(lèi)與問(wèn)題域類(lèi)之間的聯(lián)系。有些界面對(duì)象要與問(wèn)建立界面類(lèi)與問(wèn)題域類(lèi)之間的聯(lián)系。有些界面對(duì)象要與問(wèn)建立界面類(lèi)與問(wèn)題域類(lèi)之間的聯(lián)系。有些界面對(duì)象要與問(wèn)題域中的對(duì)象進(jìn)行通訊,故要對(duì)二者之間的通訊進(jìn)行設(shè)計(jì)。題域中的對(duì)象進(jìn)行通訊,故要對(duì)二者之間的通訊進(jìn)行設(shè)計(jì)。題域中的對(duì)象進(jìn)行通訊,故要對(duì)二者之間的通訊進(jìn)行設(shè)計(jì)。題域中的對(duì)象進(jìn)行通訊,故要對(duì)二者之間的通訊進(jìn)行設(shè)計(jì)。(a)人機(jī)界面只負(fù)責(zé)輸入與輸出和窗口更新這樣的工作,并把所有面向問(wèn)人機(jī)界面只負(fù)責(zé)輸入與輸出和窗口更新這樣的工作,并把所有面向問(wèn)題域部分的請(qǐng)求轉(zhuǎn)發(fā)給問(wèn)題域部分,即在界面對(duì)象中不應(yīng)該對(duì)業(yè)務(wù)邏輯進(jìn)行題域部分的請(qǐng)求轉(zhuǎn)發(fā)給問(wèn)題域部分,即在界面對(duì)象中不應(yīng)該對(duì)業(yè)務(wù)邏輯進(jìn)行處理。處理。(b)一種常見(jiàn)的作法是,問(wèn)題域部分的對(duì)象不應(yīng)該主動(dòng)發(fā)起與界面部分對(duì)一種常見(jiàn)的作法是,問(wèn)題域部分的對(duì)象不應(yīng)該主動(dòng)發(fā)起與界面部分對(duì)象之間的通訊,而只能對(duì)界面部分對(duì)象進(jìn)行響應(yīng),也就是說(shuō),只有界面部分象之間的通訊,而只能對(duì)界面部分對(duì)象進(jìn)行響應(yīng),也就是說(shuō),只有界面部分的對(duì)象才能訪(fǎng)問(wèn)問(wèn)題域部分的對(duì)象。通常把界面對(duì)象向問(wèn)題域部分對(duì)象傳輸?shù)膶?duì)象才能訪(fǎng)問(wèn)問(wèn)題域部分的對(duì)象。通常把界面對(duì)象向問(wèn)題域部分對(duì)象傳輸?shù)男畔⒒虬l(fā)布命令看作是的信息或發(fā)布命令看作是“請(qǐng)求請(qǐng)求”,而把從問(wèn)題域部分對(duì)象向界面部分對(duì)象,而把從問(wèn)題域部分對(duì)象向界面部分對(duì)象傳輸?shù)男畔⒖醋魇莻鬏數(shù)男畔⒖醋魇恰盎貞?yīng)回應(yīng)”或或“通知通知”。(c)盡量減少界面部分與問(wèn)題域部分的耦合。由于界面是易變的,從易于盡量減少界面部分與問(wèn)題域部分的耦合。由于界面是易變的,從易于維護(hù)和易于復(fù)用的角度出發(fā),問(wèn)題域部分和界面部分應(yīng)該是低耦合的。維護(hù)和易于復(fù)用的角度出發(fā),問(wèn)題域部分和界面部分應(yīng)該是低耦合的。問(wèn) 題 域部分人機(jī)交互部分也可以通過(guò)在人機(jī)交互部分和問(wèn)題域部分之間增加控制器或協(xié)調(diào)類(lèi)的方也可以通過(guò)在人機(jī)交互部分和問(wèn)題域部分之間增加控制器或協(xié)調(diào)類(lèi)的方式解決這種問(wèn)題,如可采用下面將要講述的出版式解決這種問(wèn)題,如可采用下面將要講述的出版-訂閱模式,還有一些相關(guān)的訂閱模式,還有一些相關(guān)的模式模式.例題:出版例題:出版-訂閱模式(觀(guān)察者模式)訂閱模式(觀(guān)察者模式)解決問(wèn)題域中的對(duì)象 對(duì)界面層對(duì)象的訪(fǎng)問(wèn)問(wèn)題。出版者出版者訂閱者訂閱者管理者管理者1111.*有變化時(shí),向管理者發(fā)布事件。維護(hù)出版者和訂閱者間的映射,把出版者發(fā)布信息,利用參數(shù)通知給訂閱者。向管理者訂閱事件。a=50%b=30%c=20%展示展示計(jì)算計(jì)算 控制驅(qū)動(dòng)部分是控制驅(qū)動(dòng)部分是OOD模型的一個(gè)組成部分,模型的一個(gè)組成部分,這部分由系統(tǒng)中全部的主動(dòng)類(lèi)構(gòu)成,每個(gè)這部分由系統(tǒng)中全部的主動(dòng)類(lèi)構(gòu)成,每個(gè)主動(dòng)類(lèi)是對(duì)一類(lèi)主動(dòng)事物的抽象主動(dòng)類(lèi)是對(duì)一類(lèi)主動(dòng)事物的抽象 9.4 控制驅(qū)動(dòng)部分的設(shè)計(jì)控制驅(qū)動(dòng)部分的設(shè)計(jì) 控制流控制流進(jìn)程(進(jìn)程(process)或線(xiàn)程)或線(xiàn)程(thread)的別稱(chēng)的別稱(chēng)有多個(gè)有多個(gè)控制流控制流(任務(wù))并發(fā)執(zhí)行的系統(tǒng),稱(chēng)作(任務(wù))并發(fā)執(zhí)行的系統(tǒng),稱(chēng)作多任多任務(wù)系統(tǒng)務(wù)系統(tǒng)或或并發(fā)系統(tǒng)。并發(fā)系統(tǒng)。大量的系統(tǒng)都是并發(fā)系統(tǒng)(多任務(wù)系統(tǒng)),例如:大量的系統(tǒng)都是并發(fā)系統(tǒng)(多任務(wù)系統(tǒng)),例如:對(duì)若干臺(tái)設(shè)備進(jìn)行實(shí)時(shí)控制的系統(tǒng)對(duì)若干臺(tái)設(shè)備進(jìn)行實(shí)時(shí)控制的系統(tǒng)多用戶(hù)系統(tǒng),如全國(guó)飛機(jī)票銷(xiāo)售系統(tǒng)多用戶(hù)系統(tǒng),如全國(guó)飛機(jī)票銷(xiāo)售系統(tǒng)大型生產(chǎn)企業(yè)生產(chǎn)管理系統(tǒng)大型生產(chǎn)企業(yè)生產(chǎn)管理系統(tǒng)電子政務(wù)系統(tǒng)電子政務(wù)系統(tǒng) 9.4.1 什么是控制驅(qū)動(dòng)部分 控制流驅(qū)動(dòng)控制流驅(qū)動(dòng)部分,用于定義和表示并發(fā)系統(tǒng)部分,用于定義和表示并發(fā)系統(tǒng)中的每個(gè)中的每個(gè)控制流控制流。用主動(dòng)對(duì)象表示每個(gè)控制流用主動(dòng)對(duì)象表示每個(gè)控制流(進(jìn)程、線(xiàn)進(jìn)程、線(xiàn)程程)所有的主動(dòng)類(lèi)構(gòu)成控制流驅(qū)動(dòng)部分所有的主動(dòng)類(lèi)構(gòu)成控制流驅(qū)動(dòng)部分 為了為了描述問(wèn)題域固有的并發(fā)行為,表達(dá)實(shí)現(xiàn)描述問(wèn)題域固有的并發(fā)行為,表達(dá)實(shí)現(xiàn)所需的設(shè)計(jì)決策,需要在所需的設(shè)計(jì)決策,需要在OOD部分對(duì)控制驅(qū)動(dòng)部分對(duì)控制驅(qū)動(dòng)部分進(jìn)行建模。部分進(jìn)行建模。9.4.1 什么是控制驅(qū)動(dòng)部分 1、進(jìn)程、進(jìn)程 進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序 在一個(gè)在一個(gè)數(shù)據(jù)集合上的一次動(dòng)態(tài)執(zhí)行的過(guò)程。數(shù)據(jù)集合上的一次動(dòng)態(tài)執(zhí)行的過(guò)程。在大多數(shù)操作系統(tǒng)中在大多數(shù)操作系統(tǒng)中(如如WindowsWindows和和Unix)Unix),每,每個(gè)程序都在它自己的地址空間里作為一個(gè)進(jìn)程運(yùn)個(gè)程序都在它自己的地址空間里作為一個(gè)進(jìn)程運(yùn)行。行。進(jìn)程既是處理機(jī)的分配單位,也是其它計(jì)算進(jìn)程既是處理機(jī)的分配單位,也是其它計(jì)算機(jī)資源的分配單位。在一般情況下,一臺(tái)計(jì)算機(jī)機(jī)資源的分配單位。在一般情況下,一臺(tái)計(jì)算機(jī)上的各進(jìn)程競(jìng)爭(zhēng)這臺(tái)計(jì)算機(jī)上的資源。上的各進(jìn)程競(jìng)爭(zhēng)這臺(tái)計(jì)算機(jī)上的資源。9.4.2控制流 2、線(xiàn)程、線(xiàn)程在一個(gè)進(jìn)程內(nèi)部可定義一些能夠分別占用在一個(gè)進(jìn)程內(nèi)部可定義一些能夠分別占用處理機(jī),而且要同時(shí)進(jìn)行計(jì)算的執(zhí)行單位,這處理機(jī),而且要同時(shí)進(jìn)行計(jì)算的執(zhí)行單位,這樣的每一個(gè)單位就是一個(gè)樣的每一個(gè)單位就是一個(gè)線(xiàn)程線(xiàn)程。線(xiàn)程駐留在進(jìn)程內(nèi)部,并在進(jìn)程的地址空線(xiàn)程駐留在進(jìn)程內(nèi)部,并在進(jìn)程的地址空間內(nèi)部運(yùn)行,由進(jìn)程進(jìn)行管理。在一個(gè)進(jìn)程中間內(nèi)部運(yùn)行,由進(jìn)程進(jìn)行管理。在一個(gè)進(jìn)程中的所有線(xiàn)程,共享該進(jìn)程所獲得的資源;對(duì)于的所有線(xiàn)程,共享該進(jìn)程所獲得的資源;對(duì)于處理器資源,每個(gè)線(xiàn)程是一個(gè)獨(dú)立的分配單位。處理器資源,每個(gè)線(xiàn)程是一個(gè)獨(dú)立的分配單位。9.4.2控制流 3 3、控制流、控制流 在面向?qū)ο笤O(shè)計(jì)中,用一個(gè)主動(dòng)對(duì)象在面向?qū)ο笤O(shè)計(jì)中,用一個(gè)主動(dòng)對(duì)象表示表示一個(gè)獨(dú)一個(gè)獨(dú)立的控制流,該對(duì)象驅(qū)動(dòng)進(jìn)程或線(xiàn)程,也即每個(gè)控立的控制流,該對(duì)象驅(qū)動(dòng)進(jìn)程或線(xiàn)程,也即每個(gè)控制流都以一個(gè)表示獨(dú)立的進(jìn)程或線(xiàn)程的主動(dòng)對(duì)象為制流都以一個(gè)表示獨(dú)立的進(jìn)程或線(xiàn)程的主動(dòng)對(duì)象為根。根。(1)(1)在在在在順順順順序序序序系系系系統(tǒng)統(tǒng)統(tǒng)統(tǒng)中中中中,只只有有一一個(gè)個(gè)控控制制流流。這這意意味味著著在在一一個(gè)個(gè)時(shí)時(shí)間間點(diǎn)點(diǎn)有有且且僅僅有有一一件件事事情情在在發(fā)發(fā)生生。當(dāng)當(dāng)一一個(gè)個(gè)順順序序程程序序開(kāi)開(kāi)始始時(shí)時(shí),控控制制處處于于程程序序的的開(kāi)開(kāi)頭頭,操操作作一一個(gè)個(gè)接接一個(gè)地被執(zhí)行。一個(gè)地被執(zhí)行。9.4.2控制流 順序系統(tǒng)的示意圖順序系統(tǒng)的示意圖主動(dòng)對(duì)象主動(dòng)對(duì)象A A被動(dòng)對(duì)象被動(dòng)對(duì)象B Bb b被動(dòng)對(duì)象被動(dòng)對(duì)象C Cc c被動(dòng)對(duì)象被動(dòng)對(duì)象D Dd1d2運(yùn)行開(kāi)始運(yùn)行開(kāi)始運(yùn)行結(jié)束運(yùn)行結(jié)束操作執(zhí)行操作執(zhí)行消息發(fā)送消息發(fā)送控制點(diǎn)返回示意控制點(diǎn)返回示意a a(1)消息都是同步的。接收者執(zhí)行消息所請(qǐng)求的操作。發(fā)送者等待消息處理完畢再繼續(xù)執(zhí)行。(2)每個(gè)消息只有唯一的接收者。并發(fā)系統(tǒng)的示意圖并發(fā)系統(tǒng)的示意圖控制線(xiàn)程內(nèi)部控制線(xiàn)程內(nèi)部同順序系統(tǒng)同順序系統(tǒng)控制線(xiàn)程之間控制線(xiàn)程之間情況復(fù)雜得多情況復(fù)雜得多(1)消息有同步與異步之分 接收者對(duì)消息有不同響應(yīng)方式 發(fā)送者對(duì)消息處理結(jié)果有不同期待方式(2)消息的接收者可能不唯一主動(dòng)對(duì)象A主動(dòng)對(duì)象B被動(dòng)對(duì)象C被動(dòng)對(duì)象D被動(dòng)對(duì)象E控制流控制流1 1 線(xiàn)程線(xiàn)程 TaTa控制線(xiàn)程內(nèi)部 的消息控制線(xiàn)程之間 的消息 控制點(diǎn)返回控制流控制流2 2線(xiàn)程線(xiàn)程 TbTb(2 2)在并發(fā)系統(tǒng)中,)在并發(fā)系統(tǒng)中,)在并發(fā)系統(tǒng)中,)在并發(fā)系統(tǒng)中,存在多個(gè)控存在多個(gè)控存在多個(gè)控存在多個(gè)控制流制流制流制流。既然每個(gè)控制流都以一個(gè)表示進(jìn)程或線(xiàn)程既然每個(gè)控制流都以一個(gè)表示進(jìn)程或線(xiàn)程的主動(dòng)對(duì)象為根,這意味著:控制流的創(chuàng)建與的主動(dòng)對(duì)象為根,這意味著:控制流的創(chuàng)建與撤消的時(shí)機(jī)分別為:撤消的時(shí)機(jī)分別為:創(chuàng)建一個(gè)主動(dòng)對(duì)象,就啟動(dòng)了相關(guān)的控制流,創(chuàng)建一個(gè)主動(dòng)對(duì)象,就啟動(dòng)了相關(guān)的控制流,從此按照程序的操作邏輯,就開(kāi)始了層層調(diào)從此按照程序的操作邏輯,就開(kāi)始了層層調(diào)用,形成了一個(gè)控制流。用,形成了一個(gè)控制流。撤消主動(dòng)對(duì)象,就終止了相關(guān)的控制流;也撤消主動(dòng)對(duì)象,就終止了相關(guān)的控制流;也即在主動(dòng)對(duì)象被撤消后,它所代表的線(xiàn)程或即在主動(dòng)對(duì)象被撤消后,它所代表的線(xiàn)程或進(jìn)程就終止了。進(jìn)程就終止了。9.4.2控制流 對(duì)控制驅(qū)動(dòng)部分建模:對(duì)控制驅(qū)動(dòng)部分建模:通常,通常,用包括主動(dòng)類(lèi)的類(lèi)圖捕捉控制流的靜用包括主動(dòng)類(lèi)的類(lèi)圖捕捉控制流的靜態(tài)結(jié)構(gòu)態(tài)結(jié)構(gòu)用包括主動(dòng)對(duì)象的順序圖捕捉控制流用包括主動(dòng)對(duì)象的順序圖捕捉控制流的動(dòng)態(tài)行為的動(dòng)態(tài)行為9.4.2控制流 1)OOA定義的主動(dòng)對(duì)象定義的主動(dòng)對(duì)象這是由業(yè)務(wù)邏輯所決定的這是由業(yè)務(wù)邏輯所決定的2)系統(tǒng)的并發(fā)需求所要求的多控制流)系統(tǒng)的并發(fā)需求所要求的多控制流若要求多項(xiàng)工作同時(shí)進(jìn)行,則每一項(xiàng)工作就是若要求多項(xiàng)工作同時(shí)進(jìn)行,則每一項(xiàng)工作就是一個(gè)控制流。例如,銷(xiāo)售與統(tǒng)計(jì)。一個(gè)控制流。例如,銷(xiāo)售與統(tǒng)計(jì)。3)系統(tǒng)分布方案所要求的多控制流)系統(tǒng)分布方案所要求的多控制流每一個(gè)分布站點(diǎn)至少有一個(gè)控制流每一個(gè)分布站點(diǎn)至少有一個(gè)控制流識(shí)別控制流識(shí)別控制流9.4.3 如何設(shè)計(jì)控制驅(qū)動(dòng)部分如何設(shè)計(jì)控制驅(qū)動(dòng)部分4)根據(jù)任務(wù)的緊急程度設(shè)置控制流)根據(jù)任務(wù)的緊急程度設(shè)置控制流高優(yōu)先控制流,低優(yōu)先控制流,緊急控制流;高優(yōu)先控制流,低優(yōu)先控制流,緊急控制流;5)為實(shí)現(xiàn)方便設(shè)立的控制流)為實(shí)現(xiàn)方便設(shè)立的控制流例如:負(fù)責(zé)處理機(jī)之間通訊的控制流例如:負(fù)責(zé)處理機(jī)之間通訊的控制流6 6)對(duì)異常事件的處理)對(duì)異常事件的處理 由于異常事件的發(fā)生,不能在程序的某個(gè)可由于異常事件的發(fā)生,不能在程序的某個(gè)可預(yù)知的控制點(diǎn)進(jìn)行處理,應(yīng)該設(shè)立一個(gè)專(zhuān)門(mén)的預(yù)知的控制點(diǎn)進(jìn)行處理,應(yīng)該設(shè)立一個(gè)專(zhuān)門(mén)的控制流進(jìn)行處理異常事件??刂屏鬟M(jìn)行處理異常事件。9.4.3 如何設(shè)計(jì)控制驅(qū)動(dòng)部分如何設(shè)計(jì)控制驅(qū)動(dòng)部分問(wèn)題問(wèn)題劃分劃分通訊通訊組合組合映射映射7)實(shí)現(xiàn)并行計(jì)算)實(shí)現(xiàn)并行計(jì)算通常用一個(gè)進(jìn)程實(shí)現(xiàn)一個(gè)計(jì)算任務(wù),用通常用一個(gè)進(jìn)程實(shí)現(xiàn)一個(gè)計(jì)算任務(wù),用線(xiàn)程實(shí)現(xiàn)各子任務(wù)。線(xiàn)程實(shí)現(xiàn)各子任務(wù)。9.4.3 如何設(shè)計(jì)控制驅(qū)動(dòng)部分如何設(shè)計(jì)控制驅(qū)動(dòng)部分8)設(shè)置起協(xié)調(diào)者作用的控制流)設(shè)置起協(xié)調(diào)者作用的控制流若有多個(gè)控制流需要相互交換信息,可考慮若有多個(gè)控制流需要相互交換信息,可考慮增設(shè)一個(gè)或多個(gè)控制流,對(duì)相應(yīng)的控制流起協(xié)增設(shè)一個(gè)或多個(gè)控制流,對(duì)相應(yīng)的控制流起協(xié)調(diào)者的作用。調(diào)者的作用。審查與調(diào)整審查與調(diào)整過(guò)度并發(fā)性意味著執(zhí)行效率的損失;過(guò)度并發(fā)性意味著執(zhí)行效率的損失;考慮控制流之間職責(zé)的均衡分布情況,它考慮控制流之間職責(zé)的均衡分布情況,它們之間協(xié)作的情況,以保證每個(gè)控制流是高們之間協(xié)作的情況,以保證每個(gè)控制流是高內(nèi)聚的,且與相關(guān)的控制流是松耦合的;內(nèi)聚的,且與相關(guān)的控制流是松耦合的;每個(gè)控制流應(yīng)該有以上列舉的理由之一,每個(gè)控制流應(yīng)該有以上列舉的理由之一,除非由明確的其他理由。除非由明確的其他理由。9.4.3 如何設(shè)計(jì)控制驅(qū)動(dòng)部分如何設(shè)計(jì)控制驅(qū)動(dòng)部分定義各控制流定義各控制流 l l描述控制流描述控制流 對(duì)控制流命名,并進(jìn)行簡(jiǎn)要說(shuō)明。對(duì)控制流命名,并進(jìn)行簡(jiǎn)要說(shuō)明。l為控制流指定操作為控制流指定操作 對(duì)對(duì)設(shè)設(shè)計(jì)計(jì)部部分分的的每每個(gè)個(gè)操操作作指指定定它它屬屬于于哪哪個(gè)個(gè)控控制制流流。要要保保證證每每個(gè)操作屬于一個(gè)控制流。個(gè)操作屬于一個(gè)控制流。l定義各控制流的細(xì)節(jié)定義各控制流的細(xì)節(jié)若控制流由事件驅(qū)動(dòng),則要描述觸發(fā)控制流的條件。若控制流由事件驅(qū)動(dòng),則要描述觸發(fā)控制流的條件。例如,若控制流由時(shí)鐘驅(qū)動(dòng),則可能要描述觸發(fā)之前所例如,若控制流由時(shí)鐘驅(qū)動(dòng),則可能要描述觸發(fā)之前所經(jīng)歷的時(shí)間間隔。經(jīng)歷的時(shí)間間隔。考慮描述控制流從那里取數(shù)據(jù)和往那里送數(shù)據(jù)之類(lèi)考慮描述控制流從那里取數(shù)據(jù)和往那里送數(shù)據(jù)之類(lèi)的情況的情況l定義控制流協(xié)調(diào)情況定義控制流協(xié)調(diào)情況(見(jiàn)見(jiàn)9.3.5)操作1.操作5.操作9.類(lèi)名類(lèi)名屬性屬性 操作操作 類(lèi)名類(lèi)名process屬性屬性 操作操作 類(lèi)名類(lèi)名thread屬性屬性 操作操作 進(jìn)程或進(jìn)程或線(xiàn)程線(xiàn)程的表示法的表示法控制流間的通信控制流間的通信控制流間的通信機(jī)制主要有控制流間的通信機(jī)制主要有4種:種:操作調(diào)用操作調(diào)用 一個(gè)控制流中的對(duì)象調(diào)用另一個(gè)控制流中的對(duì)象的一個(gè)控制流中的對(duì)象調(diào)用另一個(gè)控制流中的對(duì)象的操作,是通過(guò)發(fā)送了一條同步消息來(lái)實(shí)現(xiàn)的。具體的操作,是通過(guò)發(fā)送了一條同步消息來(lái)實(shí)現(xiàn)的。具體的執(zhí)行步驟為:執(zhí)行步驟為:(1)(1)調(diào)用者調(diào)用操作調(diào)用者調(diào)用操作 (2)(2)調(diào)用者等待接收者接收這個(gè)調(diào)用調(diào)用者等待接收者接收這個(gè)調(diào)用 (3)(3)接收者的操作被喚醒接收者的操作被喚醒 (4)(4)計(jì)算結(jié)果返回給調(diào)用者計(jì)算結(jié)果返回給調(diào)用者 (5)(5)調(diào)用者繼續(xù)它的執(zhí)行。調(diào)用者繼續(xù)它的執(zhí)行。9.4.3 如何設(shè)計(jì)控制驅(qū)動(dòng)部分如何設(shè)計(jì)控制驅(qū)動(dòng)部分郵箱郵箱 一個(gè)控制流的對(duì)象異步地向另一個(gè)控制流中的對(duì)象發(fā)送一個(gè)一個(gè)控制流的對(duì)象異步地向另一個(gè)控制流中的對(duì)象發(fā)送一個(gè)信號(hào)信號(hào)。具體的執(zhí)行步驟為:。具體的執(zhí)行步驟為:(1 1)請(qǐng)求者發(fā)送信號(hào),然后就繼續(xù)它自己的執(zhí)行;)請(qǐng)求者發(fā)送信號(hào),然后就繼續(xù)它自己的執(zhí)行;(2 2)接收者只有在準(zhǔn)備好時(shí)或在適當(dāng)?shù)臅r(shí)候)接收者只有在準(zhǔn)備好時(shí)或在適當(dāng)?shù)臅r(shí)候,才到指定的郵才到指定的郵箱去接收信號(hào)并進(jìn)行處理,完成后可能向請(qǐng)求者發(fā)信號(hào)來(lái)回傳箱去接收信號(hào)并進(jìn)行處理,完成后可能向請(qǐng)求者發(fā)信號(hào)來(lái)回傳處理結(jié)果,接著向下執(zhí)行。處理結(jié)果,接著向下執(zhí)行。主動(dòng)對(duì)象A主動(dòng)對(duì)象B控制流控制流1 1 線(xiàn)程線(xiàn)程 TaTa控制流控制流2 2線(xiàn)程線(xiàn)程 TbTb郵箱郵箱9.4.3 如何設(shè)計(jì)控制驅(qū)動(dòng)部分如何設(shè)計(jì)控制驅(qū)動(dòng)部分 這樣的郵箱機(jī)制也可以是同步的,但收發(fā)信號(hào)的雙方事先要這樣的郵箱機(jī)制也可以是同步的,但收發(fā)信號(hào)的雙方事先要做好約定。做好約定。主動(dòng)對(duì)象A主動(dòng)對(duì)象B控制流控制流1 1 線(xiàn)程線(xiàn)程 TaTa控制流控制流2 2線(xiàn)程線(xiàn)程 TbTb郵箱郵箱9.4.3 如何設(shè)計(jì)控制驅(qū)動(dòng)部分如何設(shè)計(jì)控制驅(qū)動(dòng)部分共享存儲(chǔ)器共享存儲(chǔ)器 兩個(gè)或幾個(gè)控制流中的對(duì)象利用一塊公兩個(gè)或幾個(gè)控制流中的對(duì)象利用一塊公共的存儲(chǔ)器,作為通信區(qū)域。共的存儲(chǔ)器,作為通信區(qū)域。通常傳輸具有較復(fù)雜和較大的數(shù)據(jù)結(jié)構(gòu)通常傳輸具有較復(fù)雜和較大的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)時(shí),才使用共享存儲(chǔ)器方式。的數(shù)據(jù)時(shí),才使用共享存儲(chǔ)器方式。生產(chǎn)者生產(chǎn)者消費(fèi)者消費(fèi)者公共的存儲(chǔ)器公共的存儲(chǔ)器 使用此方式,要注意同步問(wèn)題。使用此方式,要注意同步問(wèn)題。9.4.3 如何設(shè)計(jì)控制驅(qū)動(dòng)部分如何設(shè)計(jì)控制驅(qū)動(dòng)部分遠(yuǎn)程過(guò)程調(diào)用遠(yuǎn)程過(guò)程調(diào)用用于在不同計(jì)算機(jī)中的并發(fā)進(jìn)程:用于在不同計(jì)算機(jī)中的并發(fā)進(jìn)程:(1)調(diào)用進(jìn)程標(biāo)示它想要請(qǐng)求的一個(gè)對(duì)象的操作,然后)調(diào)用進(jìn)程標(biāo)示它想要請(qǐng)求的一個(gè)對(duì)象的操作,然后把它放在遠(yuǎn)程過(guò)程調(diào)用庫(kù)中;把它放在遠(yuǎn)程過(guò)程調(diào)用庫(kù)中;(2)遠(yuǎn)程過(guò)程調(diào)用機(jī)制在網(wǎng)絡(luò)上尋找目標(biāo)對(duì)象,找到后)遠(yuǎn)程過(guò)程調(diào)用機(jī)制在網(wǎng)絡(luò)上尋找目標(biāo)對(duì)象,找到后將請(qǐng)求打包發(fā)送給目標(biāo)對(duì)象;將請(qǐng)求打包發(fā)送給目標(biāo)對(duì)象;(3)目標(biāo)方接到后將請(qǐng)求轉(zhuǎn)換成本地格式,執(zhí)行所請(qǐng)求)目標(biāo)方接到后將請(qǐng)求轉(zhuǎn)換成本地格式,執(zhí)行所請(qǐng)求的操作;執(zhí)行完畢后,將結(jié)果以上述同樣的方式返回給發(fā)送的操作;執(zhí)行完畢后,將結(jié)果以上述同樣的方式返回給發(fā)送方。方。過(guò)程過(guò)程a.x()遠(yuǎn)程過(guò)程調(diào)用庫(kù)遠(yuǎn)程過(guò)程調(diào)用庫(kù)過(guò)程過(guò)程ax()對(duì)線(xiàn)程間的通訊建模對(duì)線(xiàn)程間的通訊建模可以使用郵箱、共享存儲(chǔ)器或操作調(diào)用進(jìn)行線(xiàn)程間的可以使用郵箱、共享存儲(chǔ)器或操作調(diào)用進(jìn)行線(xiàn)程間的通訊。通訊。c:BlackboardControllers:Blackboardb:KnowledgeSourcec:初始化c:開(kāi)始搜索c:evaluate()b:提示線(xiàn)索b:放置部分解決方案s:初始化完畢表示進(jìn)程或線(xiàn)表示進(jìn)程或線(xiàn)程的一種方法程的一種方法是用通訊圖是用通訊圖Blackboard(黑板)(黑板)負(fù)責(zé)保存系統(tǒng)輸入、問(wèn)題求解的局部和中間結(jié)果以及反映問(wèn)題求解的負(fù)責(zé)保存系統(tǒng)輸入、問(wèn)題求解的局部和中間結(jié)果以及反映問(wèn)題求解的狀態(tài)。狀態(tài)。KnowledgeSource(知識(shí)源)包含對(duì)問(wèn)題求解的條件和執(zhí)行的操作,以及對(duì)控制決策進(jìn)行(知識(shí)源)包含對(duì)問(wèn)題求解的條件和執(zhí)行的操作,以及對(duì)控制決策進(jìn)行評(píng)價(jià)的知識(shí)。評(píng)價(jià)的知識(shí)。BlackboardController(黑板控制器)負(fù)責(zé)監(jiān)視黑板上的信息和狀態(tài)的變化,并要根據(jù)變(黑板控制器)負(fù)責(zé)監(jiān)視黑板上的信息和狀態(tài)的變化,并要根據(jù)變化采取相應(yīng)的行動(dòng)?;扇∠鄳?yīng)的行動(dòng)。示例:進(jìn)程間通訊示例:進(jìn)程間通訊旅行預(yù)定旅行預(yù)定processt:TripPlannerlocation=clientt:planTrip()r:postResults()r:make()processr:ReservationAgentlocation=reservationserverprocessh:HotelAgentlocation=hotelserverprocesstm:TicketingManagerlocation=ticketingtserverr:make()可以使用郵箱、遠(yuǎn)程過(guò)程調(diào)用和共享存儲(chǔ)器進(jìn)行進(jìn)程之間的可以使用郵箱、遠(yuǎn)程過(guò)程調(diào)用和共享存儲(chǔ)器進(jìn)行進(jìn)程之間的通信通信。tm:Results()h:Results()對(duì)進(jìn)程間的通訊建模對(duì)進(jìn)程間的通訊建模 9.4.3 如何設(shè)計(jì)控制驅(qū)動(dòng)部分如何設(shè)計(jì)控制驅(qū)動(dòng)部分控制流的控制流的協(xié)調(diào)者協(xié)調(diào)者 若若有有多多個(gè)個(gè)控控制制流流,可可能能就就需需要要考考慮慮增增加加一一個(gè)個(gè)控控制制流,起協(xié)調(diào)者的作用流,起協(xié)調(diào)者的作用控制流協(xié)調(diào)者控制流協(xié)調(diào)者協(xié)調(diào)協(xié)調(diào)控制流控制流名字名字描述描述優(yōu)先級(jí)優(yōu)先級(jí)包含的操作包含的操作由誰(shuí)協(xié)調(diào)由誰(shuí)協(xié)調(diào)開(kāi)始開(kāi)始初始化初始化待命待命終結(jié)終結(jié)1 0.*例如:例如:設(shè)計(jì)一個(gè)主進(jìn)程,負(fù)責(zé):系統(tǒng)的啟動(dòng)和初始化、其他進(jìn)程的創(chuàng)設(shè)計(jì)一個(gè)主進(jìn)程,負(fù)責(zé):系統(tǒng)的啟動(dòng)和初始化、其他進(jìn)程的創(chuàng)建與撤消、資源分配、優(yōu)先級(jí)的授予等工作。建與撤消、資源分配、優(yōu)先級(jí)的授予等工作。也可以把負(fù)責(zé)協(xié)調(diào)的控制流設(shè)計(jì)成一個(gè)進(jìn)程,而把其他控制流也可以把負(fù)責(zé)協(xié)調(diào)的控制流設(shè)計(jì)成一個(gè)進(jìn)程,而把其他控制流設(shè)計(jì)成它的內(nèi)部線(xiàn)程。設(shè)計(jì)成它的內(nèi)部線(xiàn)程。設(shè)置控制流協(xié)調(diào)者設(shè)置控制流協(xié)調(diào)者 為整個(gè)系統(tǒng)設(shè)置一個(gè)控制流協(xié)調(diào)者為整個(gè)系統(tǒng)設(shè)置一個(gè)控制流協(xié)調(diào)者 為一個(gè)主動(dòng)類(lèi)設(shè)置一個(gè)控制流協(xié)調(diào)者為一個(gè)主動(dòng)類(lèi)設(shè)置一個(gè)控制流協(xié)調(diào)者 為一個(gè)含有主動(dòng)行為的用況設(shè)置一個(gè)控制流為一個(gè)含有主動(dòng)行為的用況設(shè)置一個(gè)控制流協(xié)調(diào)者。協(xié)調(diào)者。9.4.3 如何設(shè)計(jì)控制驅(qū)動(dòng)部分如何設(shè)計(jì)控制驅(qū)動(dòng)部分?jǐn)?shù)據(jù)管理部分是負(fù)責(zé)在特定的數(shù)據(jù)管理系統(tǒng)中存儲(chǔ)和檢數(shù)據(jù)管理部分是負(fù)責(zé)在特定的數(shù)據(jù)管理系統(tǒng)中存儲(chǔ)和檢索對(duì)象的組成部分。索對(duì)象的組成部分。其目的是,存儲(chǔ)問(wèn)題域的持久對(duì)象、封裝這些對(duì)象的查找其目的是,存儲(chǔ)問(wèn)題域的持久對(duì)象、封裝這些對(duì)象的查找和存儲(chǔ)機(jī)制,以及為了隔離數(shù)據(jù)管理方案的影響。和存儲(chǔ)機(jī)制,以及為了隔離數(shù)據(jù)管理方案的影響。問(wèn)題范圍:?jiǎn)栴}范圍:對(duì)象在永久性存儲(chǔ)介質(zhì)上的存儲(chǔ)對(duì)象在永久性存儲(chǔ)介質(zhì)上的存儲(chǔ)可能只有一部分對(duì)象需要長(zhǎng)久存儲(chǔ)可能只有一部分對(duì)象需要長(zhǎng)久存儲(chǔ)只存儲(chǔ)對(duì)象的屬性部分只存儲(chǔ)對(duì)象的屬性部分9.5.1什么是數(shù)據(jù)管理部分什么是數(shù)據(jù)管理部分不同的數(shù)據(jù)管理系統(tǒng):不同的數(shù)據(jù)管理系統(tǒng):文件系統(tǒng)、文件系統(tǒng)、R-DBMS、OODBMS對(duì)數(shù)據(jù)管理部分的設(shè)計(jì)有不同的影響對(duì)數(shù)據(jù)管理部分的設(shè)計(jì)有不同的影響9.5 數(shù)據(jù)管理部分的設(shè)計(jì)數(shù)據(jù)管理部分的設(shè)計(jì) 為了隔離數(shù)據(jù)管理系統(tǒng)對(duì)其它部分的影響,為了隔離數(shù)據(jù)管理系統(tǒng)對(duì)其它部分的影響,使得選用不同的數(shù)據(jù)管理系統(tǒng)時(shí),問(wèn)題域部分基本相同。使得選用不同的數(shù)據(jù)管理系統(tǒng)時(shí),問(wèn)題域部分基本相同。為什么需要數(shù)據(jù)管理部分為什么需要數(shù)據(jù)管理部分人人機(jī)機(jī)交交互互部部分分控制流管理部分控制流管理部分問(wèn)題域問(wèn)題域部分部分?jǐn)?shù)數(shù)據(jù)據(jù)管管理理部部分分文件系統(tǒng)文件系統(tǒng)數(shù)數(shù)據(jù)據(jù)管管理理部部分分文件系統(tǒng)文件系統(tǒng)數(shù)數(shù)據(jù)據(jù)管管理理部部分分關(guān)系型關(guān)系型DBMS數(shù)數(shù)據(jù)據(jù)管管理理部部分分OO-DBMS9.5.1 什么是數(shù)據(jù)管理部分什么是數(shù)據(jù)管理部分 數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)是存儲(chǔ)、管理、處理和維護(hù)數(shù)據(jù)的軟件系統(tǒng),由是存儲(chǔ)、管理、處理和維護(hù)數(shù)據(jù)的軟件系統(tǒng),由數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管數(shù)據(jù)庫(kù)管理系統(tǒng)理系統(tǒng)和有關(guān)軟件組成。和有關(guān)軟件組成。數(shù)據(jù)庫(kù)是長(zhǎng)期存在計(jì)算機(jī)內(nèi)、有組織、可共享的數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)是長(zhǎng)期存在計(jì)算機(jī)內(nèi)、有組織、可共享的數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)管理系統(tǒng)是用于建立、使用和維護(hù)數(shù)據(jù)庫(kù)的軟件,它對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一數(shù)據(jù)庫(kù)管理系統(tǒng)是用于建立、使用和維護(hù)數(shù)據(jù)庫(kù)的軟件,它對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一管理和控制,以保證數(shù)據(jù)庫(kù)的完整性和安全性。管理和控制,以保證數(shù)據(jù)庫(kù)的完整性和安全性。應(yīng)用程序用戶(hù)數(shù)據(jù)庫(kù)管理員應(yīng)用程序接口終端用戶(hù)查詢(xún)處理器數(shù)據(jù)定義接口數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)和控制邏輯數(shù)據(jù)庫(kù)管理系統(tǒng)物理數(shù)據(jù)存儲(chǔ)模式數(shù)據(jù)庫(kù)9.5.2數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)是采用關(guān)系模型的數(shù)據(jù)庫(kù)。是采用關(guān)系模型的數(shù)據(jù)庫(kù)。關(guān)系模型用二維表結(jié)構(gòu)來(lái)表示各類(lèi)實(shí)體及其間的聯(lián)系。關(guān)系模型用二維表結(jié)構(gòu)來(lái)表示各類(lèi)實(shí)體及其間的聯(lián)系。二維表由行和列組成。一個(gè)關(guān)系數(shù)據(jù)庫(kù)由多張表組成二維表由行和列組成。一個(gè)關(guān)系數(shù)據(jù)庫(kù)由多張表組成人員-ID 人員姓名 地址 身份證號(hào)1 張三 海淀路11號(hào) 2131251255 李四 清華西路123號(hào) 12555125471 張三 天津海河路2號(hào) 5626 4246 人員-ID 祖籍1 山東5 云南71 浙江元組、記錄屬性、字段屬性、字段侯選關(guān)鍵字侯選關(guān)鍵字:可保證表的每個(gè)元組唯一性的任何屬性的集合??杀WC表的每個(gè)元組唯一性的任何屬性的集合。指定侯選關(guān)鍵字中的一個(gè)為表的指定侯選關(guān)鍵字中的一個(gè)為表的主關(guān)鍵字主關(guān)鍵字主關(guān)鍵字主關(guān)鍵字。外鍵外鍵:連接表的關(guān)鍵字。連接表的關(guān)鍵字。數(shù)據(jù)庫(kù)中的表要滿(mǎn)足一些范式,如下為三個(gè)范式的定義。數(shù)據(jù)庫(kù)中的表要滿(mǎn)足一些范式,如下為三個(gè)范式的定義。第一范式:第一范式:關(guān)系(表)的每個(gè)屬性都應(yīng)該是原子的。關(guān)系(表)的每個(gè)屬性都應(yīng)該是原子的。第二范式:第二范式:如如果果一一個(gè)個(gè)關(guān)關(guān)系系的的所所有有非非關(guān)關(guān)鍵鍵字字屬屬性性,都都只只依依賴(lài)賴(lài)整整個(gè)個(gè)關(guān)關(guān)鍵鍵字字,則則該關(guān)系滿(mǎn)足第二范式。該關(guān)系滿(mǎn)足第二范式。(學(xué)號(hào)學(xué)號(hào)學(xué)號(hào)學(xué)號(hào),系名,住處系名,住處,課程號(hào)課程號(hào)課程號(hào)課程號(hào),成績(jī)),成績(jī))第三范式:第三范式:如果一個(gè)關(guān)系滿(mǎn)足第二范式,且沒(méi)有傳遞依賴(lài),則該關(guān)系滿(mǎn)足如果一個(gè)關(guān)系滿(mǎn)足第二范式,且沒(méi)有傳遞依賴(lài),則該關(guān)系滿(mǎn)足第三范式。第三范式。Boyce-Codd范式(范式(BCNF)等9.5.2數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng) 面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)是OO設(shè)計(jì)和編程的之間擴(kuò)展,是為了存儲(chǔ)對(duì)象并與面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言交互而專(zhuān)門(mén)設(shè)計(jì)的。它是按對(duì)象存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)管理系統(tǒng)。面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)有兩方面的特征:(1)是面向?qū)ο蟮?,?yīng)支持對(duì)象、類(lèi)、屬性、繼承和關(guān)聯(lián)等面向?qū)ο蟾拍?;?)具有數(shù)據(jù)庫(kù)系統(tǒng)所應(yīng)具有的特點(diǎn)和功能。9.5.2數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng) 面向?qū)ο蟮臄?shù)據(jù)庫(kù)系統(tǒng)與應(yīng)用系統(tǒng)的邏輯模型都是一致的,不需要再設(shè)計(jì)負(fù)責(zé)保存與恢復(fù)其他類(lèi)的對(duì)象的類(lèi),因?yàn)槊總€(gè)類(lèi)的對(duì)象都可以直接在OODBMS中保存。面向?qū)ο蟮臄?shù)據(jù)庫(kù)系統(tǒng)相對(duì)來(lái)說(shuō)還比較新,在理論上和技術(shù)上還不太完善,而且目前還沒(méi)有被廣泛接受的標(biāo)準(zhǔn)。由對(duì)象數(shù)據(jù)庫(kù)管理組ODMG提出的一些數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)正在逐漸地得到廣泛的接收,如對(duì)象定義語(yǔ)言(ODL)。ODL是一種描述對(duì)象數(shù)據(jù)庫(kù)結(jié)構(gòu)和內(nèi)容的語(yǔ)言。在若干年后,ODBMS有望取代RDBMS。9.5.2數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng)首先要根據(jù)實(shí)現(xiàn)條件選擇數(shù)據(jù)管理系統(tǒng):R-DBMS,OO-DBMS,文件系統(tǒng)文件系統(tǒng)利用關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行數(shù)據(jù)存儲(chǔ)設(shè)計(jì)利用關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行數(shù)據(jù)存儲(chǔ)設(shè)計(jì) 1 1、面向、面向?qū)ο?、?shí)體對(duì)象、實(shí)體-關(guān)系以及關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中的概念間的對(duì)應(yīng)關(guān)系關(guān)系以及關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中的概念間的對(duì)應(yīng)關(guān)系 面向?qū)ο竺嫦驅(qū)ο髮?shí)體實(shí)體聯(lián)系聯(lián)系關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)類(lèi) 實(shí)體類(lèi)型 表對(duì)象 實(shí)體實(shí)例 行屬性 屬性 列關(guān)系 關(guān)系 表9.5.3 如何設(shè)計(jì)數(shù)據(jù)管理部分如何設(shè)計(jì)數(shù)據(jù)管理部分創(chuàng)建對(duì)象查詢(xún)對(duì)象修改對(duì)象數(shù)據(jù)存儲(chǔ)及應(yīng)用示意圖數(shù)據(jù)存儲(chǔ)及應(yīng)用示意圖數(shù)據(jù)存儲(chǔ)及應(yīng)用示意圖數(shù)據(jù)存儲(chǔ)及應(yīng)用示意圖問(wèn)題域部分問(wèn)題域部分UPDATEFROMWHERESELECTFROMWHERECREATE數(shù)據(jù)管理部分?jǐn)?shù)據(jù)庫(kù)RDBMS2、對(duì)象標(biāo)識(shí)、對(duì)象標(biāo)識(shí)在程序運(yùn)行時(shí)的對(duì)象標(biāo)識(shí)是唯一的,對(duì)程序員來(lái)說(shuō)通常是在程序運(yùn)行時(shí)的對(duì)象標(biāo)識(shí)是唯一的,對(duì)程序員來(lái)說(shuō)通常是不可以訪(fǎng)問(wèn)的,只是通過(guò)對(duì)象名來(lái)訪(fǎng)問(wèn)對(duì)象。不可以訪(fǎng)問(wèn)的,只是通過(guò)對(duì)象名來(lái)訪(fǎng)問(wèn)對(duì)象。永久對(duì)象的標(biāo)識(shí)在一個(gè)表中是唯一的。永久對(duì)象的標(biāo)識(shí)在一個(gè)表中是唯一的。由類(lèi)導(dǎo)出的表用一個(gè)主關(guān)鍵字作為表中所存儲(chǔ)的對(duì)象的唯由類(lèi)導(dǎo)出的表用一個(gè)主關(guān)鍵字作為表中所存儲(chǔ)的對(duì)象的唯一標(biāo)識(shí)一標(biāo)識(shí)。由關(guān)聯(lián)導(dǎo)出的表用相關(guān)聯(lián)的表的主關(guān)鍵字組合作為主關(guān)鍵由關(guān)聯(lián)導(dǎo)出的表用相關(guān)聯(lián)的表的主關(guān)鍵字組合作為主關(guān)鍵字字。在程序中使用對(duì)象名,在表中使用主關(guān)鍵字在程序中使用對(duì)象名,在表中使用主關(guān)鍵字在程序中使用對(duì)象名,在表中使用主關(guān)鍵字在程序中使用對(duì)象名,在表中使用主關(guān)鍵字。9.5.3 如何設(shè)計(jì)數(shù)據(jù)管理部分如何設(shè)計(jì)數(shù)據(jù)管理部分3、永久類(lèi)的存放設(shè)
收藏
編號(hào):65494723
類(lèi)型:共享資源
大?。?span id="olibmqs" class="font-tahoma">6.60MB
格式:ZIP
上傳時(shí)間:2022-03-24
40
積分
- 關(guān) 鍵 詞:
-
軟件工程基礎(chǔ)
軟件工程
基礎(chǔ)
全套
PPT
課件
- 資源描述:
-
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
展開(kāi)閱讀全文
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶(hù)自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶(hù)書(shū)面授權(quán),請(qǐng)勿作他用。