定義對(duì)象間關(guān)系課件_第1頁(yè)
定義對(duì)象間關(guān)系課件_第2頁(yè)
定義對(duì)象間關(guān)系課件_第3頁(yè)
定義對(duì)象間關(guān)系課件_第4頁(yè)
定義對(duì)象間關(guān)系課件_第5頁(yè)
已閱讀5頁(yè),還剩133頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件建模與分析

2015.9-2015.10

計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)與軟件工程專業(yè)

軟件建模與分析

2015.9-2015.10

計(jì)算機(jī)第二部分:分析篇第二部分:分析篇對(duì)象之間的四種關(guān)系1.一般-特殊關(guān)系——又稱繼承關(guān)系,反映事物的分類。由這種關(guān)系可以形成一般-特殊結(jié)構(gòu)。2.整體-部分關(guān)系——即聚合關(guān)系。反映事物的構(gòu)成。由這種關(guān)系可以形成整體-部分結(jié)構(gòu)。3.關(guān)聯(lián)關(guān)系——對(duì)象實(shí)例集合(類)上的一個(gè)關(guān)系,其中的元素提供了被開(kāi)發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。4.消息關(guān)系——對(duì)象之間的動(dòng)態(tài)聯(lián)系,即一個(gè)對(duì)象在執(zhí)行其操作時(shí),請(qǐng)求其他對(duì)象為它執(zhí)行某個(gè)操作,或者向其他對(duì)象傳送某些信息。反映了事物之間的行為依賴關(guān)系。這些關(guān)系形成了類圖的關(guān)系層對(duì)象之間的四種關(guān)系這些關(guān)系形成了類圖的關(guān)系層概念——同義詞和

近義詞繼承(inheritance)是描述一般類和特殊類之間關(guān)系的最傳統(tǒng)、最經(jīng)典的術(shù)語(yǔ)。有時(shí)作為動(dòng)詞或形容詞出現(xiàn)。一般-特殊(generalization-specialization)含義最準(zhǔn)確,而且不容易產(chǎn)生誤解,恰切地反映了一般類(概念)和特殊類(概念)之間的相對(duì)(二元)關(guān)系;也用于描述結(jié)構(gòu),即一般-特殊結(jié)構(gòu)。缺點(diǎn)是書(shū)寫(xiě)和閱讀比較累贅。泛化(generalization)取“一般-特殊”的一半,是UML的做法。比較簡(jiǎn)練,但是只反映了問(wèn)題的一方面。作為關(guān)系的名稱尚可,說(shuō)結(jié)構(gòu)是一個(gè)“泛化”則很勉強(qiáng)。分類(classification)接近人類日常的語(yǔ)言習(xí)慣,體現(xiàn)了類的層次劃分,也作為結(jié)構(gòu)的名稱。在許多的場(chǎng)合被作為一種原則。本書(shū)主要采用“一般-特殊”這個(gè)術(shù)語(yǔ)8.1 一般-特殊結(jié)構(gòu)相關(guān)概念:一般類、特殊類、繼承、多繼承、多態(tài)語(yǔ)義:“isakindof”概念——同義詞和近義詞8.1 一般-特殊結(jié)構(gòu)相關(guān)概念:一一般-特殊關(guān)系(繼承關(guān)系)是類之間的一種二元關(guān)系——是一種基本的模型元素;由這種關(guān)系所形成的結(jié)構(gòu)是一般-特殊結(jié)構(gòu)——是一種復(fù)合的模型成分。人員股東職員顧客股東職員例:這是1個(gè)一般-特殊結(jié)構(gòu)

包含5個(gè)一般特殊關(guān)系一般-特殊關(guān)系(繼承關(guān)系)是類之間的一種二元關(guān)系人員股東職員特殊類一般類的特征一般類特殊類的特征只要有這些特征必須有這些特征對(duì)象實(shí)例集合特征集合理解一般類與特殊類之間的關(guān)系定義1:如果類A具有類B的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,則A叫做B的特殊類,B叫做A的一般類。一般類與特殊類又稱父類與子類。定義2:如果類A的全部對(duì)象都是類B的對(duì)象,而且類B中存在不屬于類A的對(duì)象,則A是B的特殊類,B是A的一般類?!獣?shū)中證明,以上兩種定義是等價(jià)的一般類和特殊類的兩個(gè)定義特殊類一般類的特征一般類特殊類的特征只要有這些特征必須有這些表示法

*對(duì)繼承的屬性或操作重新定義×拒絕繼承多態(tài)性的表示符號(hào)一般類特殊類特殊類集中式一般類特殊類特殊類分散式人員股東職員顧客股東職員例:表示法*對(duì)繼承的屬性或操作重新定義多態(tài)性的表示符號(hào)如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu)(1)學(xué)習(xí)當(dāng)前領(lǐng)域的分類學(xué)知識(shí)(2)按常識(shí)考慮事物的分類(3)根據(jù)一般類和特殊類的兩種定義(4)考察屬性與操作的適應(yīng)范圍?公司人員姓名身份證號(hào)股份工資············?公司人員姓名身份證號(hào)······股東股份············職員工資··················股東姓名身份證號(hào)股份············職員姓名身份證號(hào)工資············股東股份············職員工資············?公司人員姓名身份證號(hào)············如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu)(1)學(xué)習(xí)當(dāng)前領(lǐng)域的分類學(xué)知識(shí)?公司人(5)考慮領(lǐng)域范圍內(nèi)的復(fù)用現(xiàn)鈔收款機(jī)ABCDEFXYZ收款機(jī)ABCXY現(xiàn)鈔收款機(jī)DEFZ領(lǐng)域構(gòu)件(5)考慮領(lǐng)域范圍內(nèi)的復(fù)用現(xiàn)鈔收款機(jī)收款機(jī)現(xiàn)鈔收款機(jī)領(lǐng)域構(gòu)件(1)問(wèn)題域是否需要這樣的分類?(例:書(shū)—線裝書(shū))(2)系統(tǒng)責(zé)任是否需要這樣的分類?(例:職員—本市職員)(3)是否符合分類學(xué)的常識(shí)?(用“isakindof”來(lái)衡量)審查與調(diào)整(4)是否真正地繼承了一些屬性或操作?(航標(biāo)船—船)飛機(jī)飛行高度······自動(dòng)導(dǎo)航······?汽車發(fā)動(dòng)機(jī)載重量速度······運(yùn)輸······運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度······飛機(jī)飛行高度······自動(dòng)導(dǎo)航······汽車············運(yùn)輸······(1)問(wèn)題域是否需要這樣的分類?(例:書(shū)—線裝書(shū))審查與調(diào)整一般-特殊結(jié)構(gòu)的簡(jiǎn)化(1)取消沒(méi)有特殊性的特殊類運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度······飛機(jī)飛行高度······自動(dòng)導(dǎo)航······汽車運(yùn)輸······運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度······飛機(jī)飛行高度······自動(dòng)導(dǎo)航······運(yùn)輸······提問(wèn):這種簡(jiǎn)化帶來(lái)的問(wèn)題是什么?一般-特殊結(jié)構(gòu)的簡(jiǎn)化運(yùn)輸工具飛機(jī)汽車運(yùn)輸運(yùn)輸工具飛機(jī)(2)增加屬性簡(jiǎn)化一般-特殊結(jié)構(gòu)人員············男人············女人············中國(guó)人············美國(guó)人············日本人············人員性別國(guó)籍··················(2)增加屬性簡(jiǎn)化一般-特殊結(jié)構(gòu)人員男人女人中國(guó)人美國(guó)(3)取消用途單一的一般類,減少繼承層次一般類存在的理由:*有兩個(gè)或兩個(gè)上以上的特殊類*需要用它創(chuàng)建對(duì)象實(shí)例*有助于軟件復(fù)用設(shè)備型號(hào)生產(chǎn)廠······開(kāi)啟關(guān)閉雷達(dá)安裝地點(diǎn)······監(jiān)控······雷達(dá)型號(hào)生產(chǎn)廠安裝地點(diǎn)······開(kāi)啟關(guān)閉監(jiān)控······電子設(shè)備激光打印機(jī)傳真機(jī)通訊設(shè)備設(shè)備電子設(shè)備計(jì)算機(jī)設(shè)備打印機(jī)民用通訊設(shè)備激光打印機(jī)傳真機(jī)(3)取消用途單一的一般類,減少繼承層次設(shè)備雷達(dá)雷達(dá)電多繼承:允許一個(gè)特殊類具有一個(gè)以上一般類的繼承模式多繼承特殊類的內(nèi)部情況在職研究生姓名······學(xué)號(hào)班級(jí)專業(yè)······職稱專業(yè)······在職單位············來(lái)自“人員”類來(lái)自“研究生”類來(lái)自“教職工”類本類中顯式定義人員姓名············教職工職稱專業(yè)············研究生學(xué)號(hào)班級(jí)專業(yè)············在職研究生在職單位············例:命名沖突重復(fù)繼承多繼承:允許一個(gè)特殊類具有一個(gè)以上一般類的繼承模式多繼承特殊多態(tài):多態(tài)是指同一個(gè)命名可具有不同的語(yǔ)義。OO方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。多邊形邊數(shù)頂點(diǎn)數(shù)據(jù)繪圖XY矩形邊數(shù)*頂點(diǎn)數(shù)據(jù)*繪圖正多邊形*頂點(diǎn)數(shù)據(jù)*繪圖例:多態(tài):多態(tài)是指同一個(gè)命名可具有不同的語(yǔ)義。OO方法中,常指在語(yǔ)義:“apartof”或“hasa”聚合關(guān)系描述了對(duì)象實(shí)例之間的構(gòu)成情況,然而它的定義卻是在類的抽象層次給出的?!獜募险摰挠^點(diǎn)看聚合關(guān)系整體-部分關(guān)系(聚合關(guān)系)是兩個(gè)類之間的二元關(guān)系,其中一個(gè)類的某些對(duì)象是另一個(gè)類的某些對(duì)象的組成部分。整體-部分結(jié)構(gòu)是把若干具有聚合關(guān)系的類組織在一起所形成的結(jié)構(gòu)。它是一個(gè)以類為結(jié)點(diǎn),以聚合關(guān)系為邊的連通有向圖。8.2整體-部分結(jié)構(gòu)一種基本的模型元素由若干聚合關(guān)系形成的復(fù)合模型成分概念:聚合(aggregation),組合(composition)整體-部分(whole-part)整體對(duì)象,部分對(duì)象8.2整體-部分結(jié)構(gòu)一種基本的模型元素由若干聚合關(guān)系形成的組合(composition)是聚合關(guān)系的一種特殊情況,它表明整體對(duì)于部分的強(qiáng)擁有關(guān)系,即整體與部分之間具有緊密、固定的組成關(guān)系。UML把聚合定義為關(guān)聯(lián)的一種特殊情況而組合關(guān)系是聚合關(guān)系的特殊情況組合(composition)是聚合關(guān)系的一種特殊情況,它表數(shù)量數(shù)量數(shù)量數(shù)量整體對(duì)象類部分對(duì)象類整體對(duì)象類部分對(duì)象類表示法在連接符兩端通過(guò)數(shù)字或者符號(hào)給出關(guān)系雙方對(duì)象實(shí)例的數(shù)量約束,稱為多重性(multiplicity)

確定的整數(shù)——給出確定的數(shù)量——例如:1,2下界‥上界——給出一個(gè)范圍——例如:0‥1,1‥4

*——表示多個(gè),數(shù)量不確定下界‥*——表示多個(gè),下界確定——例如0‥*,1‥*多重性有以下3種情況:一對(duì)一,一對(duì)多,多對(duì)多照相機(jī)1‥*0‥10‥1鏡頭機(jī)身1數(shù)量數(shù)量數(shù)量數(shù)量整體對(duì)象類部分對(duì)象類整體對(duì)象類部分對(duì)象類表示如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)基本策略——考察問(wèn)題域中各種具有構(gòu)成關(guān)系的事物(1)物理上的整體事物和它的組成部分

例:機(jī)器、設(shè)備和它的零部件(2)組織機(jī)構(gòu)和它的下級(jí)組織及部門(mén)

例:公司與子公司、部門(mén)(3)團(tuán)體(組織)與成員

例:公司與職員(4)一種事物在空間上包容其它事物

例:生產(chǎn)車間與機(jī)器(5)抽象事物的整體與部分

例:學(xué)科與分支學(xué)科、法律與法律條款(6)具體事物和它的某個(gè)抽象方面

例:人員與身份、履歷如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)(1)物理上的整體事物和它的組成部分審查與篩選(1)是否屬于問(wèn)題域?例:公司職員與家庭(2)是不是系統(tǒng)責(zé)任的需要?例:?jiǎn)T工與工會(huì)、救護(hù)車與急救設(shè)備(3)部分對(duì)象是否有一個(gè)以上的屬性?例:汽車與車輪(規(guī)格)(4)是否有明顯的整體-部分關(guān)系?例:學(xué)生與課程審查與篩選(1)是否屬于問(wèn)題域?整體-部分結(jié)構(gòu)的高級(jí)應(yīng)用技巧(1)簡(jiǎn)化對(duì)象的定義○○○△△△□□□□●●▲▲■■飛機(jī)有關(guān)發(fā)動(dòng)機(jī)的屬性與操作有關(guān)駕駛室的屬性與操作111‥41飛機(jī)○○○●●發(fā)動(dòng)機(jī)△△△▲▲駕駛室□□□□■■整體-部分結(jié)構(gòu)的高級(jí)應(yīng)用技巧(1)簡(jiǎn)化對(duì)象的定義○飛機(jī)有關(guān)(2)支持軟件復(fù)用起重機(jī)送料車機(jī)床鉆床刨床車床電動(dòng)機(jī)0‥110‥110‥11發(fā)動(dòng)機(jī)飛機(jī)三種情況:

第一種情況是系統(tǒng)中已經(jīng)定義了某個(gè)類,再定義的其他類具有該類的一些特征。第二種情況是系統(tǒng)中定義的幾個(gè)類都有某些共同的特征。第三種情況是系統(tǒng)中只有一個(gè)類,但該類中的某些特征具有某種獨(dú)立性,具有領(lǐng)域內(nèi)復(fù)用機(jī)會(huì)。(2)支持軟件復(fù)用起重機(jī)送料車機(jī)床鉆床刨床車床電動(dòng)機(jī)0‥11(3)表示數(shù)量不定的組成部分訂單編號(hào)賣方買方總金額成交日期…………訂單行商品編號(hào)訂購(gòu)數(shù)量成交價(jià)金額…………1‥*1商品商品編號(hào)商品名稱單價(jià)廠商…………1*一個(gè)訂單可以包含一項(xiàng)到多達(dá)幾十項(xiàng)商品提問(wèn):能否不要訂單行,直接用商品作為訂單的部分對(duì)象?(3)表示數(shù)量不定的組成部分訂單訂單行1‥*1商品1*一(4)表示動(dòng)態(tài)變化的對(duì)象特征人員營(yíng)業(yè)員會(huì)計(jì)師經(jīng)理問(wèn)題:對(duì)象的屬性與操作定義在系統(tǒng)運(yùn)行中動(dòng)態(tài)變化,例如:不理想的解決辦法:刪除、重建Shlaer/Mellor的子類型遷移“動(dòng)態(tài)對(duì)象”不理想的原因:一是各個(gè)類的對(duì)象有一些共同的、不需要變化的屬性,隨著舊對(duì)象的刪除和新對(duì)象的建立,需要由系統(tǒng)用戶把舊對(duì)象中有用的信息重新錄入到新對(duì)象中,增加了用戶的負(fù)擔(dān)。二是讓對(duì)象反復(fù)地從一個(gè)類中刪除而加入另一個(gè)類,將為數(shù)據(jù)管理帶來(lái)困難。三是概念上不自然,一個(gè)對(duì)象僅僅因?yàn)橐恍┨卣靼l(fā)生了變化,就要讓它經(jīng)歷一番死而復(fù)生的陰陽(yáng)輪回,顯得太小題大做。(4)表示動(dòng)態(tài)變化的對(duì)象特征人員營(yíng)業(yè)員會(huì)計(jì)師經(jīng)理問(wèn)題:對(duì)象的(4)表示動(dòng)態(tài)變化的對(duì)象特征問(wèn)題:對(duì)象的屬性與操作定義在系統(tǒng)運(yùn)行中動(dòng)態(tài)變化,例如:會(huì)計(jì)師身份經(jīng)理身份營(yíng)業(yè)員身份人員身份1m或人員營(yíng)業(yè)員身份0‥1會(huì)計(jì)師身份0‥10‥1111解:經(jīng)理身份思考:自動(dòng)存取款機(jī)系統(tǒng)是否存在這樣的問(wèn)題?(4)表示動(dòng)態(tài)變化的對(duì)象特征問(wèn)題:對(duì)象的屬性與操作定義在系統(tǒng)“三友”對(duì)問(wèn)題的描述及解決方法“大多數(shù)面向?qū)ο蟮木幊陶Z(yǔ)言是靜態(tài)類型化的,這意味著在創(chuàng)建對(duì)象時(shí)就限定了對(duì)象的類型。但是隨著時(shí)間的推移對(duì)象還可能扮演不同的角色?!崩樱汉蜻x者,雇員,退休者person?type?candidate?type?employee?type?retiree“對(duì)象在其生命期內(nèi)動(dòng)態(tài)地獲得或者丟棄類型”1999年第一版person?dynamic?candidate?dynamic?employee?dynamic?retiree2005年第二版總之都是圍繞著繼承想主意,沒(méi)有運(yùn)用聚合?!叭选睂?duì)問(wèn)題的描述及解決方法person?type??ty從上述例子得到的啟示:整體-部分結(jié)構(gòu)有很強(qiáng)的表達(dá)能力運(yùn)用OO方法的基本概念可以自然而有效地解決許多在其他方法中用擴(kuò)充概念解決的問(wèn)題加強(qiáng)對(duì)基本概念的運(yùn)用,不要輕易創(chuàng)造新的擴(kuò)充概念person0‥10‥10‥1111用聚合概念解決:CandidateRoleEmployeeRoleRetireeRole從上述例子得到的啟示:person0‥10‥10‥1111用用一般-特殊結(jié)構(gòu)兩種結(jié)構(gòu)的變通汽車制冷設(shè)備冷藏車解釋:繼承和聚合都是使一類對(duì)象獲得另一類對(duì)象的特征,只是觀察問(wèn)題的角度不同。兩種結(jié)構(gòu)同用汽車?yán)洳剀囍评湓O(shè)備冷藏車汽車制冷設(shè)備用整體-部分結(jié)構(gòu)用一般-特殊結(jié)構(gòu)兩種結(jié)構(gòu)的變通汽車制冷設(shè)備冷藏車解釋:兩練習(xí):1、對(duì)于門(mén)這個(gè)類來(lái)說(shuō),有木門(mén)、鐵門(mén)、玻璃門(mén)之分,也有電動(dòng)門(mén)、轉(zhuǎn)門(mén)、拉門(mén)之分,如何建模?2、在在線圖書(shū)銷售系統(tǒng)中,圖書(shū)包括封面、目錄和正文三個(gè)部分,封面上有圖書(shū)的名稱、出版社和作者,目錄中有章和節(jié)的標(biāo)題,如何建模?3、如果多個(gè)類中都存在一些相同的屬性和操作,此時(shí)可以選擇幾種建模方案?舉例說(shuō)明。4、基于前述建模結(jié)果,完成OOA階段類之間關(guān)系的構(gòu)建,用UML標(biāo)準(zhǔn)表示法進(jìn)行描述。練習(xí):1、對(duì)于門(mén)這個(gè)類來(lái)說(shuō),有木門(mén)、鐵門(mén)、玻璃門(mén)之分,也有電概念:關(guān)聯(lián)(association)是兩個(gè)或者多個(gè)類上的一個(gè)關(guān)系(即這些類的對(duì)象實(shí)例集合的笛卡兒積的一個(gè)子集合),其中的元素提供了被開(kāi)發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。二元關(guān)聯(lián)(binaryassociation)n元關(guān)聯(lián)(n-aryassociation)關(guān)聯(lián)的實(shí)例——有序?qū)騨元組,又稱鏈(link)關(guān)聯(lián)是這些有序?qū)騨元組的集合關(guān)聯(lián)位于類的抽象層次,鏈位于對(duì)象的抽象層次8.3關(guān)聯(lián)提問(wèn):一個(gè)n元關(guān)聯(lián)中所涉及的類的數(shù)量是否可以小于n?概念:8.3關(guān)聯(lián)提問(wèn):一個(gè)n元關(guān)聯(lián)中所涉及的類的數(shù)量是否可二元關(guān)聯(lián)的表示法城市**有航線(d)城市之間有航線教師學(xué)生1*指導(dǎo)論文教師為學(xué)生指導(dǎo)論文例子類A名稱類B數(shù)量數(shù)量角色角色111***多重性的表示一對(duì)一:一對(duì)多:多對(duì)多:數(shù)量約束固定數(shù)值:例如1數(shù)值范圍:例如0‥1符號(hào):*表示多個(gè)0‥*=*1‥*表示1到多個(gè)二元關(guān)聯(lián)的表示法城市**有航線(d)城市之間有航線教師二元關(guān)聯(lián)的實(shí)現(xiàn)(一對(duì)一和一對(duì)多)編程語(yǔ)言:在程序中用兩個(gè)類分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類;以數(shù)量約束為“1”的類的對(duì)象實(shí)例為目標(biāo),在關(guān)聯(lián)另一端的類中設(shè)置一個(gè)指向該目標(biāo)的指針或者對(duì)象標(biāo)識(shí)(源類的屬性)。教師1授課課程*主講教師誰(shuí)?關(guān)系數(shù)據(jù)庫(kù):用兩個(gè)數(shù)據(jù)庫(kù)表分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類;以數(shù)量約束為“1”的類對(duì)應(yīng)的表的元組為目標(biāo),在關(guān)聯(lián)另一端的類對(duì)應(yīng)的表中設(shè)置一個(gè)指向該目標(biāo)的外鍵(目標(biāo)的主鍵)。教師課程二元關(guān)聯(lián)的實(shí)現(xiàn)(一對(duì)一和一對(duì)多)編程語(yǔ)言:在程序中用兩個(gè)類分二元關(guān)聯(lián)的實(shí)現(xiàn)(多對(duì)多)問(wèn)題:任何一端的一個(gè)對(duì)象實(shí)例要和另一端多個(gè)對(duì)象實(shí)例發(fā)生關(guān)聯(lián),而且數(shù)量不確定。實(shí)現(xiàn)時(shí)不知道該設(shè)立多少個(gè)指針(或者對(duì)象標(biāo)識(shí)、外鍵)才能夠用。

課程學(xué)生**編程語(yǔ)言:用兩個(gè)類分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類,同時(shí)用另外一個(gè)類來(lái)實(shí)現(xiàn)它們之間的關(guān)聯(lián)。實(shí)現(xiàn)關(guān)聯(lián)的類含有兩個(gè)屬性,分別是指向兩端的類的對(duì)象實(shí)例的指針或者對(duì)象標(biāo)識(shí)。

增加一個(gè)類關(guān)系數(shù)據(jù)庫(kù):用兩個(gè)數(shù)據(jù)庫(kù)表分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類,同時(shí)用另外一個(gè)數(shù)據(jù)庫(kù)表來(lái)實(shí)現(xiàn)它們之間的關(guān)聯(lián)。實(shí)現(xiàn)關(guān)聯(lián)的數(shù)據(jù)庫(kù)表含有兩個(gè)屬性,它們分別是指向兩端的表的元組的外鍵。課程課程-學(xué)生學(xué)生二元關(guān)聯(lián)的實(shí)現(xiàn)(多對(duì)多)問(wèn)題:任何一端的一個(gè)對(duì)象實(shí)例要和另一運(yùn)用簡(jiǎn)單的概念及表示法解決各種復(fù)雜的關(guān)聯(lián)問(wèn)題教師學(xué)生1*指導(dǎo)論文(1)帶有屬性和操作的關(guān)聯(lián)有某些信息需要描述OMT(及UML)的概念擴(kuò)充關(guān)聯(lián)類(associationclass)

類1類2屬性……操作……例子教師學(xué)生1*指導(dǎo)論文論文題目答辯時(shí)間成績(jī)問(wèn)題:增加了概念的復(fù)雜性,缺乏編程語(yǔ)言支持運(yùn)用簡(jiǎn)單的概念及表示法解決各種復(fù)雜的關(guān)聯(lián)問(wèn)題教師學(xué)生1*指導(dǎo)換一種思路考慮問(wèn)題:兩類對(duì)象之間的關(guān)聯(lián)帶有某些復(fù)雜的信息,說(shuō)明它們之間存在著某種事物(盡管可能是抽象事物)。用普通的對(duì)象概念來(lái)表示這種事物,簡(jiǎn)化關(guān)聯(lián),減少概念,并加強(qiáng)與OOPL的對(duì)應(yīng)。教師學(xué)生1*指導(dǎo)論文論文題目答辯時(shí)間成績(jī)*論文題目答辯時(shí)間成績(jī)……教師學(xué)生1指導(dǎo)畢業(yè)論文11寫(xiě)作例1換一種思路考慮問(wèn)題:教師學(xué)生1*指導(dǎo)論文論文題目*論文題目教城市之間有航線城市有航線距離每周班次**1公司個(gè)人工作薪水*公司與個(gè)人其他例子城市之間存在航線對(duì)象城市航線距離每周班次*2公司個(gè)人工作薪水公司與個(gè)人之間存在工作對(duì)象1*11城市之間有航線城市有航線**1公司個(gè)人工作*公司與個(gè)復(fù)雜關(guān)聯(lián)表示法的轉(zhuǎn)換

mn類A類B關(guān)聯(lián)類屬性操作類A類B類C屬性操作11mn復(fù)雜關(guān)聯(lián)表示法的轉(zhuǎn)換mn類A類B關(guān)聯(lián)類類A類B類(2)n元關(guān)聯(lián)OMT的三元關(guān)聯(lián)及其表示法問(wèn)題:編程語(yǔ)言不能直接支持可推廣到n元關(guān)聯(lián),是否要?jiǎng)?chuàng)造更多的符號(hào)?多重性表示的困難(詳后)項(xiàng)目語(yǔ)言人員增設(shè)對(duì)象類表示多元關(guān)聯(lián)*項(xiàng)目名承擔(dān)者語(yǔ)言……項(xiàng)目語(yǔ)言1任務(wù)1*人員*1***(2)n元關(guān)聯(lián)OMT的三元關(guān)聯(lián)及其表示法問(wèn)題:項(xiàng)目語(yǔ)言人員增在理論上,n元關(guān)聯(lián)是由若干n元組形成的集合,本質(zhì)上也是一個(gè)類——是由每個(gè)n元組作為對(duì)象實(shí)例的類從實(shí)現(xiàn)的角度看,用類實(shí)現(xiàn)n元關(guān)聯(lián)是最自然的選擇例如:用一個(gè)數(shù)據(jù)庫(kù)表存放n元關(guān)聯(lián)的全部n元組外鍵1外鍵2外鍵3……外鍵n……表1表2表3表nn個(gè)表:類2類n類1類3……n個(gè)類:N元關(guān)聯(lián)在理論上,n元關(guān)聯(lián)是由若干n元組形成的集合,本質(zhì)上也是一個(gè)類在模型中,把n元關(guān)聯(lián)定義為一個(gè)類并定義它與原有的各個(gè)類之間的關(guān)系——都是二元關(guān)聯(lián)類2……類n類1類3n元關(guān)聯(lián)類2……類n類1類3新增類在模型中,把n元關(guān)聯(lián)定義為一個(gè)類類2……類n類1類3n元關(guān)聯(lián)項(xiàng)目語(yǔ)言人員*?*是1還是*?1項(xiàng)目語(yǔ)言任務(wù)人員11***1*1項(xiàng)目語(yǔ)言任務(wù)人員11***n元關(guān)聯(lián)多重性表示的困難和解決辦法項(xiàng)目語(yǔ)言人員*?*1項(xiàng)目語(yǔ)言任務(wù)人員11***例:課程實(shí)習(xí)中每?jī)擅麑W(xué)生在一臺(tái)設(shè)備上合作完成一個(gè)題目1)若系統(tǒng)要求記錄和查閱哪兩名學(xué)生是合作者建立學(xué)生類到它自身的關(guān)聯(lián)(如同城市之間有航線)是一個(gè)二元關(guān)聯(lián),其中學(xué)生類在關(guān)聯(lián)中出現(xiàn)了兩次2)如果還要記錄每組學(xué)生的實(shí)習(xí)題目和使用的設(shè)備建立學(xué)生、題目、設(shè)備三個(gè)類之間的4元關(guān)聯(lián)學(xué)生類在這個(gè)關(guān)聯(lián)中出現(xiàn)了兩次(3)一個(gè)類在一個(gè)關(guān)聯(lián)中多次出現(xiàn)例:課程實(shí)習(xí)中每?jī)擅麑W(xué)生在一臺(tái)設(shè)備上合作完成一個(gè)題目(3)一111**1題目設(shè)備學(xué)生學(xué)生實(shí)習(xí)11211**1題目設(shè)備學(xué)生實(shí)習(xí)假如該系統(tǒng)的多重性要求是:每?jī)擅麑W(xué)生在一臺(tái)設(shè)備上合作完成一個(gè)題目;一個(gè)題目可以供多組學(xué)生實(shí)習(xí),可以在不同的設(shè)備上完成;一臺(tái)設(shè)備可以供多組學(xué)生使用,可以做不同的題目。

題目設(shè)備學(xué)生學(xué)生????題目設(shè)備學(xué)生**???111**1題目設(shè)備學(xué)生學(xué)生實(shí)習(xí)11211**1題關(guān)聯(lián)端點(diǎn)的復(fù)雜情況關(guān)聯(lián)端點(diǎn):關(guān)聯(lián)的連接線與類符號(hào)相銜接的點(diǎn)修飾:在端點(diǎn)附近標(biāo)注符號(hào)或者文字,或者畫(huà)成不同的形狀多重性(multiplicity)√

有序(ordered){ordered}限定符(qualifier)詳后導(dǎo)航性(navigability)聚合標(biāo)志(aggregationindicator)√

角色名(rolename)

接口說(shuō)明(interfacespecifier)角色名:接口說(shuō)明可變性(changeability){frozen},{addOnly}可見(jiàn)性(visibility)?!?”、“#”或者“-”關(guān)聯(lián)端點(diǎn)的復(fù)雜情況多重性(multiplicity)“限定符是關(guān)聯(lián)的一種屬性,它的值劃定了跨過(guò)一個(gè)關(guān)聯(lián)與一個(gè)對(duì)象相關(guān)的對(duì)象集合?!庇孟薅ǚ揎椀年P(guān)聯(lián)稱為受限關(guān)聯(lián)(qualifiedassociation)UML對(duì)限定符的解釋類A限定符類B*0‥1表示法“限定符是關(guān)聯(lián)的一種屬性,它的值劃定了跨過(guò)一個(gè)關(guān)聯(lián)與一個(gè)對(duì)象BankaccountNoPerson*0‥1Chessboardrank:Rankfile:FileSquare11Chessboard164Squarerank:intfile:intBankAccountPerson*1*1訂單產(chǎn)品訂單行Amount:Number0‥1WorkDeskjobID:intReturnedItem*0‥1訂單訂單行Amount:Number*1產(chǎn)品*1限定符的例子及其簡(jiǎn)單解決方案WorkDeskjobReturnedItem*1*1BankaccountNoPerson*0‥1Chessbo關(guān)聯(lián)端點(diǎn)的修飾在UML2的變化(1)取消了接口說(shuō)明和可變性兩種修飾(2)新增兩種圖形方式的修飾╳:表示不可導(dǎo)航●:表示擁有權(quán)(3)增加了花括號(hào)內(nèi)的特性串(propertystring)

{subsets}子集合{redefines}重定義{union}合并{ordered}有序{nonunique}不唯一{sequence},{seq}序列關(guān)聯(lián)端點(diǎn)的修飾在UML2的變化(1)取消了接口說(shuō)明和可變性如何建立關(guān)聯(lián)1.根據(jù)問(wèn)題域和系統(tǒng)責(zé)任發(fā)現(xiàn)所需要的關(guān)聯(lián)

哪些類的對(duì)象實(shí)例之間存在著對(duì)用戶業(yè)務(wù)有意義的關(guān)系?·問(wèn)題域中實(shí)際事物之間有哪些值得注意的關(guān)系?·這種信息是否需要通過(guò)有序?qū)Γɑ蛘遪元組)來(lái)體現(xiàn)?·這些信息是否需要在系統(tǒng)中進(jìn)行保存、管理或維護(hù)?·系統(tǒng)是否需要查閱和使用由這種關(guān)系所體現(xiàn)的信息?如何建立關(guān)聯(lián)2.關(guān)聯(lián)的復(fù)雜情況處理·對(duì)關(guān)聯(lián)屬性和操作的處理

·對(duì)n元關(guān)聯(lián)的處理·避免一個(gè)類在關(guān)聯(lián)中多次出現(xiàn)

·多對(duì)多關(guān)聯(lián)的處理

供貨商客戶**多對(duì)多關(guān)聯(lián)的處理供需合同賣方買方…….**112.關(guān)聯(lián)的復(fù)雜情況處理供貨商客戶**多對(duì)多關(guān)聯(lián)的處理供需合同3.為關(guān)聯(lián)端點(diǎn)添加修飾·分析關(guān)聯(lián)的多重性·給出關(guān)聯(lián)名或角色名·識(shí)別聚合種類·其他修飾導(dǎo)航性、特性串等——根據(jù)實(shí)際情況決定是否采用限定符——用簡(jiǎn)單的類和關(guān)聯(lián)的概念解決4.在類中設(shè)立實(shí)現(xiàn)關(guān)聯(lián)的屬性3.為關(guān)聯(lián)端點(diǎn)添加修飾5.關(guān)聯(lián)定位系統(tǒng)管理員1計(jì)算機(jī)服務(wù)器客戶機(jī)用戶*操作使用1*5.關(guān)聯(lián)定位系統(tǒng)管理員1計(jì)算機(jī)服務(wù)器客戶機(jī)用戶*操作使用1練習(xí):1、一對(duì)多的二元關(guān)聯(lián)如何實(shí)現(xiàn)?舉例說(shuō)明。2、多對(duì)多的二元關(guān)聯(lián)如何實(shí)現(xiàn)?舉例說(shuō)明。3、如何避免一個(gè)類在關(guān)聯(lián)中多次出現(xiàn)?舉例說(shuō)明。4、基于前述建模結(jié)果,完成OOA階段類之間關(guān)系的構(gòu)建,用UML標(biāo)準(zhǔn)表示法進(jìn)行描述。練習(xí):1、一對(duì)多的二元關(guān)聯(lián)如何實(shí)現(xiàn)?舉例說(shuō)明。8.4 消息1、什么是消息(message)

現(xiàn)實(shí)生活中——人或其他事物之間傳遞的信息,例如:人與人之間的對(duì)話、通信、發(fā)通知、留言交通信號(hào)燈對(duì)車輛和行人發(fā)出的信號(hào)人發(fā)給設(shè)備的遙控信號(hào)等……軟件系統(tǒng)中——進(jìn)程或軟件成分之間傳送的信息控制信息例如一次函數(shù)調(diào)用,或喚醒一個(gè)進(jìn)程數(shù)據(jù)信息例如傳送一個(gè)數(shù)據(jù)文件面向?qū)ο蟮南到y(tǒng)中——(按嚴(yán)格封裝的要求)消息是對(duì)象之間在行為上的唯一聯(lián)系方式消息是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求(狹義)消息是對(duì)象之間在一次交互中所傳送的信息(廣義)

消息有發(fā)送者和接收者,遵守共同約定的語(yǔ)法和語(yǔ)義8.4 消息1、什么是消息(message)·每個(gè)消息都是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求最常見(jiàn)的是函數(shù)調(diào)用·消息都是同步的?!そ邮照邎?zhí)行消息所請(qǐng)求的服務(wù)?!ぐl(fā)送者等待消息處理完畢再繼續(xù)執(zhí)行?!っ總€(gè)消息只有唯一的接收者。順序系統(tǒng)中的消息順序系統(tǒng)中的消息并發(fā)系統(tǒng)中的消息控制流內(nèi)部的消息——與順序系統(tǒng)相同控制流之間的消息——情況復(fù)雜得多·消息有多種用途服務(wù)請(qǐng)求,傳送數(shù)據(jù),發(fā)送通知,傳遞控制信號(hào)……·消息有同步與異步之分同步消息(synchronousmessage)異步消息(asynchronousmessage)

·接收者對(duì)消息有不同響應(yīng)方式創(chuàng)建控制流,立即響應(yīng),延遲響應(yīng),不響應(yīng)·發(fā)送者對(duì)消息處理結(jié)果有不同期待方式等待回應(yīng),事后查看結(jié)果,不等待不查看·消息的接收者可能不唯一定向消息(directedmessage)廣播消息(broadcastmessage)

并發(fā)系統(tǒng)中的消息控制流內(nèi)部的消息——與順序系統(tǒng)相同消息對(duì)面向?qū)ο蠼5囊饬x消息體現(xiàn)了對(duì)象之間的行為依賴關(guān)系,是實(shí)現(xiàn)對(duì)象之間的動(dòng)態(tài)聯(lián)系,使系統(tǒng)成為一個(gè)能運(yùn)行的整體,并使各個(gè)部分能夠協(xié)調(diào)工作的關(guān)鍵因素。在順序系統(tǒng)中消息體現(xiàn)了過(guò)程抽象的原則一個(gè)對(duì)象的操作通過(guò)消息調(diào)用其他對(duì)象的操作在OO模型中通過(guò)消息把對(duì)象操作貫穿在一起系統(tǒng)實(shí)現(xiàn)后這些操作將在一個(gè)控制流中順序地執(zhí)行在并發(fā)系統(tǒng)中控制流內(nèi)部的消息使系統(tǒng)中的每個(gè)控制流呈現(xiàn)出清晰的脈絡(luò)控制流之間的消息體現(xiàn)了控制流之間的通信關(guān)系消息對(duì)面向?qū)ο蠼5囊饬xOO模型需要表示消息的哪些信息?(按重要性排序)

(1)對(duì)象之間是否存在著某種消息?(2)這種消息是控制流內(nèi)部的還是控制流之間的?(3)每一種消息是從發(fā)送者的哪個(gè)操作發(fā)出的?是由接收者的哪個(gè)操作響應(yīng)和處理的?(4)消息是同步的還是異步的?(5)發(fā)送者是否等待消息的處理結(jié)果?OO模型需要表示消息的哪些信息?(按重要性排序)以往不同的OOA&D方法有不同的處理方式例如:Coad/Yourdon方法——在類圖中表示消息Booch方法——只在實(shí)例級(jí)的模型圖(對(duì)象圖和交互圖)中表示消息UML的處理方式:不在類圖中表示消息,只在協(xié)作圖和順序圖中表示理由:把類圖定義為靜態(tài)結(jié)構(gòu)圖,不表示動(dòng)態(tài)信息問(wèn)題:抽象級(jí)別問(wèn)題局部與全局問(wèn)題實(shí)際上類圖中仍然包含動(dòng)態(tài)信息操作,調(diào)用(call)依賴要不要在類圖中表示消息以往不同的OOA&D方法有不同的處理方式例如:UML的處UML對(duì)各種箭頭的用法同步消息(順序圖、協(xié)作圖)實(shí)線封閉箭頭依賴(類圖、包圖、用況圖、構(gòu)件圖)從消息接收者的操作返回(順序圖)虛線開(kāi)放箭頭關(guān)聯(lián)的導(dǎo)航性(類圖)異步消息(順序圖)實(shí)線開(kāi)放箭頭用途圖形符號(hào)箭頭種類用什么符號(hào)表示消息借用依賴關(guān)系表示類圖中的消息?call??send?控制流內(nèi)部的消息控制流之間的消息UML對(duì)各種箭頭的用法同步消息(順序圖、協(xié)作圖)實(shí)線封閉箭頭ACDEF?call??call??call??send?B?call??call?例子:緩沖區(qū)存數(shù)據(jù)取數(shù)據(jù)掛起喚醒生產(chǎn)者消費(fèi)者?call??call??send?ACDEF?call??call??call??send如何建立消息(控制流內(nèi)部) 策略——“操作模擬”和“執(zhí)行路線追蹤”(1)人為地模擬當(dāng)前對(duì)象操作的執(zhí)行考慮:需要其它對(duì)象(或本對(duì)象)提供什么服務(wù)(2)判斷該消息是否屬于同一個(gè)控制流:

·二者應(yīng)該順序地執(zhí)行還是并發(fā)地執(zhí)行?·是否引起控制流的切換?·接收者是否只有通過(guò)當(dāng)前消息的觸發(fā)才能執(zhí)行?(3)向接收者畫(huà)出消息連接線,填寫(xiě)模型規(guī)約上述工作進(jìn)行到當(dāng)前的操作模擬執(zhí)行完畢(4)沿著控制流內(nèi)部的每一種消息追蹤到接收該消息的對(duì)象操作,重復(fù)進(jìn)行以上的工作,直到已發(fā)現(xiàn)的全部消息都經(jīng)歷一遍。針對(duì)每個(gè)主動(dòng)類的每個(gè)主動(dòng)操作進(jìn)行上述模擬與追蹤檢查系統(tǒng)中每個(gè)操作是否都被經(jīng)歷過(guò)發(fā)現(xiàn)遺漏的消息或多余的操作如何建立消息(控制流內(nèi)部)建立控制流之間消息對(duì)每個(gè)控制流考慮以下問(wèn)題:(1)它在執(zhí)行時(shí),是否需要請(qǐng)求其他控制流中的對(duì)象為它提供某種服務(wù)?(2)它在執(zhí)行時(shí)是否要向其他控制流中的對(duì)象提供或索取某些數(shù)據(jù)?(3)它在執(zhí)行時(shí)是否將產(chǎn)生某些可影響其他控制流執(zhí)行的事件?(4)各個(gè)控制流的并發(fā)執(zhí)行,是否需要相互傳遞一些同步控制信號(hào)?(5)一個(gè)控制流將在何種條件下中止執(zhí)行?在它中止之后將在何種條件下被喚醒?由哪個(gè)控制流喚醒?從上述各個(gè)角度發(fā)現(xiàn)控制流之間的消息在相應(yīng)的類之間畫(huà)出消息連接線

建立控制流之間消息8.5關(guān)于依賴關(guān)系什么是依賴(dependency)在以往的OO方法中,只有Firesmith方法用到這個(gè)概念,其大意是:“客戶/服務(wù)者(client/server)關(guān)系,表示客戶對(duì)服務(wù)者的依賴?!绷信e的情況包括:消息傳送——其中客戶發(fā)送消息給服務(wù)者;聚合——其中聚合體(客戶)的定義依賴它的構(gòu)成部分(服務(wù)者);繼承——其中派生類(客戶)依賴它的基類(服務(wù)者)以繼承其特征。結(jié)論:在Firesmith方法中,依賴并不是對(duì)象之間的一種基本關(guān)系,而是為了指出在消息、聚合、繼承等基本關(guān)系中哪個(gè)模型成分是客戶(依賴者),哪個(gè)模型成分是服務(wù)者(被依賴者)所采用的一個(gè)概括性的術(shù)語(yǔ)。8.5關(guān)于依賴關(guān)系什么是依賴(dependency)UML1.4對(duì)依賴的定義和解釋“依賴:兩個(gè)建模元素之間的一種關(guān)系,其中一個(gè)建模元素(獨(dú)立元素)的一個(gè)改變將影響到另一個(gè)建模元素(依賴元素)。”“依賴是除了關(guān)聯(lián)、泛化、流以及元關(guān)系之外的關(guān)系的方便術(shù)語(yǔ)?!薄耙蕾嚤砻饕粋€(gè)或者一組元素的實(shí)現(xiàn)或者功能需要另外一個(gè)或者一組元素出現(xiàn)。”“依賴指出了兩個(gè)模型元素(或者兩組模型元素)之間的語(yǔ)義關(guān)系。它指的是這些模型元素本身,而不需要一組實(shí)例來(lái)說(shuō)明其含義。它指出這樣一種情況:目標(biāo)元素的一個(gè)變化可能需要依賴中的源元素發(fā)生變化。”Booch等《UML用戶指南》的解釋“兩個(gè)事物之間的語(yǔ)義關(guān)系,其中一個(gè)事物(獨(dú)立事物)的改變將影響到另一個(gè)事物(依賴事物)?!盪ML1.4對(duì)依賴的定義和解釋UML2對(duì)依賴關(guān)系的新闡述“依賴表明模型元素之間的供方/客方(supplier/client)關(guān)系,其中供方的修改可能影響到客方元素。依賴意味著,如果沒(méi)有供方,客方的語(yǔ)義就是不完整的。依賴在一個(gè)模型中出現(xiàn)并不含有任何運(yùn)行時(shí)的語(yǔ)義,它完全是以參與這種關(guān)系的模型元素的名義而不是以其實(shí)例的名義給出的。”“依賴是這樣一個(gè)關(guān)系,它表明一個(gè)或者一組模型元素的詳細(xì)說(shuō)明或者實(shí)現(xiàn)需要另外一些模型元素。這意味著,依賴元素的完整語(yǔ)義在語(yǔ)義和結(jié)構(gòu)上都依賴這些供方元素的定義?!闭J(rèn)識(shí):依賴著眼于表達(dá)紙面上的模型元素之間的關(guān)系,而不是這些元素所描述的客觀事物在問(wèn)題域中的固有關(guān)系。依賴基本上不能視為一種面向?qū)ο蟮母拍睢ML2對(duì)依賴關(guān)系的新闡述認(rèn)識(shí):DependencyAbstractionPermissionUsageBindingUML1的依賴關(guān)系?derive??refine??realize??trace??call??create??instantiate??responsibility??send??access??friend??import?DependencyAbstractionUsageRealizationSubstitutionUML2的依賴關(guān)系?derive??refine??trace??call??create??instantiate??responsibility??send?依賴所指的并不是單獨(dú)的一種關(guān)系,而是包含了許多情況DependencyAbstractionPermissi?關(guān)鍵詞?依賴的表示法以及其他外觀類似的表示作為依賴關(guān)系標(biāo)準(zhǔn)衍型的關(guān)鍵詞---------------------?instantiate??create??call??derive??refine??responsibility??send??trace?用于依賴但未明確稱為標(biāo)準(zhǔn)衍型的關(guān)鍵詞------------------?abstraction??realize??substitute??permit??use?附加于虛線開(kāi)放箭頭但不稱為依賴關(guān)系的關(guān)鍵詞---------------------?access??apply??bind??extend??import??include??manifest??occurrence??represents?①②③各種標(biāo)準(zhǔn)衍型和關(guān)鍵詞的含義,見(jiàn)教材表8.1和表8.2?關(guān)鍵詞?依賴的表示法以及其他外觀類似的表示作為依賴關(guān)系標(biāo)依賴關(guān)系對(duì)面向?qū)ο蠼5淖饔美^承、聚合、關(guān)聯(lián)、消息這四種關(guān)系中都已經(jīng)蘊(yùn)涵了依賴的含義,不需要再用依賴關(guān)系再做重復(fù)的表示除了上述關(guān)系之外,在OO建模中沒(méi)有多少重要的信息必須用依賴關(guān)系表達(dá)由于UML沒(méi)有在類圖中提供消息的表示法,可以借用依賴關(guān)系來(lái)表示類圖中的消息?call??send?控制流內(nèi)部的消息控制流之間的消息告戒:避免建立語(yǔ)義含糊不清的依賴關(guān)系,更要避免用這些含糊不清的依賴關(guān)系代替含義明確的OO關(guān)系。建立一種依賴關(guān)系,就要具體地指出它是一種什么依賴。依賴關(guān)系對(duì)面向?qū)ο蠼5淖饔美^承、聚合、關(guān)聯(lián)、消息這四種關(guān)系ThanksThanks

軟件建模與分析

2015.9-2015.10

計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)與軟件工程專業(yè)

軟件建模與分析

2015.9-2015.10

計(jì)算機(jī)第二部分:分析篇第二部分:分析篇對(duì)象之間的四種關(guān)系1.一般-特殊關(guān)系——又稱繼承關(guān)系,反映事物的分類。由這種關(guān)系可以形成一般-特殊結(jié)構(gòu)。2.整體-部分關(guān)系——即聚合關(guān)系。反映事物的構(gòu)成。由這種關(guān)系可以形成整體-部分結(jié)構(gòu)。3.關(guān)聯(lián)關(guān)系——對(duì)象實(shí)例集合(類)上的一個(gè)關(guān)系,其中的元素提供了被開(kāi)發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。4.消息關(guān)系——對(duì)象之間的動(dòng)態(tài)聯(lián)系,即一個(gè)對(duì)象在執(zhí)行其操作時(shí),請(qǐng)求其他對(duì)象為它執(zhí)行某個(gè)操作,或者向其他對(duì)象傳送某些信息。反映了事物之間的行為依賴關(guān)系。這些關(guān)系形成了類圖的關(guān)系層對(duì)象之間的四種關(guān)系這些關(guān)系形成了類圖的關(guān)系層概念——同義詞和

近義詞繼承(inheritance)是描述一般類和特殊類之間關(guān)系的最傳統(tǒng)、最經(jīng)典的術(shù)語(yǔ)。有時(shí)作為動(dòng)詞或形容詞出現(xiàn)。一般-特殊(generalization-specialization)含義最準(zhǔn)確,而且不容易產(chǎn)生誤解,恰切地反映了一般類(概念)和特殊類(概念)之間的相對(duì)(二元)關(guān)系;也用于描述結(jié)構(gòu),即一般-特殊結(jié)構(gòu)。缺點(diǎn)是書(shū)寫(xiě)和閱讀比較累贅。泛化(generalization)取“一般-特殊”的一半,是UML的做法。比較簡(jiǎn)練,但是只反映了問(wèn)題的一方面。作為關(guān)系的名稱尚可,說(shuō)結(jié)構(gòu)是一個(gè)“泛化”則很勉強(qiáng)。分類(classification)接近人類日常的語(yǔ)言習(xí)慣,體現(xiàn)了類的層次劃分,也作為結(jié)構(gòu)的名稱。在許多的場(chǎng)合被作為一種原則。本書(shū)主要采用“一般-特殊”這個(gè)術(shù)語(yǔ)8.1 一般-特殊結(jié)構(gòu)相關(guān)概念:一般類、特殊類、繼承、多繼承、多態(tài)語(yǔ)義:“isakindof”概念——同義詞和近義詞8.1 一般-特殊結(jié)構(gòu)相關(guān)概念:一一般-特殊關(guān)系(繼承關(guān)系)是類之間的一種二元關(guān)系——是一種基本的模型元素;由這種關(guān)系所形成的結(jié)構(gòu)是一般-特殊結(jié)構(gòu)——是一種復(fù)合的模型成分。人員股東職員顧客股東職員例:這是1個(gè)一般-特殊結(jié)構(gòu)

包含5個(gè)一般特殊關(guān)系一般-特殊關(guān)系(繼承關(guān)系)是類之間的一種二元關(guān)系人員股東職員特殊類一般類的特征一般類特殊類的特征只要有這些特征必須有這些特征對(duì)象實(shí)例集合特征集合理解一般類與特殊類之間的關(guān)系定義1:如果類A具有類B的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,則A叫做B的特殊類,B叫做A的一般類。一般類與特殊類又稱父類與子類。定義2:如果類A的全部對(duì)象都是類B的對(duì)象,而且類B中存在不屬于類A的對(duì)象,則A是B的特殊類,B是A的一般類?!獣?shū)中證明,以上兩種定義是等價(jià)的一般類和特殊類的兩個(gè)定義特殊類一般類的特征一般類特殊類的特征只要有這些特征必須有這些表示法

*對(duì)繼承的屬性或操作重新定義×拒絕繼承多態(tài)性的表示符號(hào)一般類特殊類特殊類集中式一般類特殊類特殊類分散式人員股東職員顧客股東職員例:表示法*對(duì)繼承的屬性或操作重新定義多態(tài)性的表示符號(hào)如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu)(1)學(xué)習(xí)當(dāng)前領(lǐng)域的分類學(xué)知識(shí)(2)按常識(shí)考慮事物的分類(3)根據(jù)一般類和特殊類的兩種定義(4)考察屬性與操作的適應(yīng)范圍?公司人員姓名身份證號(hào)股份工資············?公司人員姓名身份證號(hào)······股東股份············職員工資··················股東姓名身份證號(hào)股份············職員姓名身份證號(hào)工資············股東股份············職員工資············?公司人員姓名身份證號(hào)············如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu)(1)學(xué)習(xí)當(dāng)前領(lǐng)域的分類學(xué)知識(shí)?公司人(5)考慮領(lǐng)域范圍內(nèi)的復(fù)用現(xiàn)鈔收款機(jī)ABCDEFXYZ收款機(jī)ABCXY現(xiàn)鈔收款機(jī)DEFZ領(lǐng)域構(gòu)件(5)考慮領(lǐng)域范圍內(nèi)的復(fù)用現(xiàn)鈔收款機(jī)收款機(jī)現(xiàn)鈔收款機(jī)領(lǐng)域構(gòu)件(1)問(wèn)題域是否需要這樣的分類?(例:書(shū)—線裝書(shū))(2)系統(tǒng)責(zé)任是否需要這樣的分類?(例:職員—本市職員)(3)是否符合分類學(xué)的常識(shí)?(用“isakindof”來(lái)衡量)審查與調(diào)整(4)是否真正地繼承了一些屬性或操作?(航標(biāo)船—船)飛機(jī)飛行高度······自動(dòng)導(dǎo)航······?汽車發(fā)動(dòng)機(jī)載重量速度······運(yùn)輸······運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度······飛機(jī)飛行高度······自動(dòng)導(dǎo)航······汽車············運(yùn)輸······(1)問(wèn)題域是否需要這樣的分類?(例:書(shū)—線裝書(shū))審查與調(diào)整一般-特殊結(jié)構(gòu)的簡(jiǎn)化(1)取消沒(méi)有特殊性的特殊類運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度······飛機(jī)飛行高度······自動(dòng)導(dǎo)航······汽車運(yùn)輸······運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度······飛機(jī)飛行高度······自動(dòng)導(dǎo)航······運(yùn)輸······提問(wèn):這種簡(jiǎn)化帶來(lái)的問(wèn)題是什么?一般-特殊結(jié)構(gòu)的簡(jiǎn)化運(yùn)輸工具飛機(jī)汽車運(yùn)輸運(yùn)輸工具飛機(jī)(2)增加屬性簡(jiǎn)化一般-特殊結(jié)構(gòu)人員············男人············女人············中國(guó)人············美國(guó)人············日本人············人員性別國(guó)籍··················(2)增加屬性簡(jiǎn)化一般-特殊結(jié)構(gòu)人員男人女人中國(guó)人美國(guó)(3)取消用途單一的一般類,減少繼承層次一般類存在的理由:*有兩個(gè)或兩個(gè)上以上的特殊類*需要用它創(chuàng)建對(duì)象實(shí)例*有助于軟件復(fù)用設(shè)備型號(hào)生產(chǎn)廠······開(kāi)啟關(guān)閉雷達(dá)安裝地點(diǎn)······監(jiān)控······雷達(dá)型號(hào)生產(chǎn)廠安裝地點(diǎn)······開(kāi)啟關(guān)閉監(jiān)控······電子設(shè)備激光打印機(jī)傳真機(jī)通訊設(shè)備設(shè)備電子設(shè)備計(jì)算機(jī)設(shè)備打印機(jī)民用通訊設(shè)備激光打印機(jī)傳真機(jī)(3)取消用途單一的一般類,減少繼承層次設(shè)備雷達(dá)雷達(dá)電多繼承:允許一個(gè)特殊類具有一個(gè)以上一般類的繼承模式多繼承特殊類的內(nèi)部情況在職研究生姓名······學(xué)號(hào)班級(jí)專業(yè)······職稱專業(yè)······在職單位············來(lái)自“人員”類來(lái)自“研究生”類來(lái)自“教職工”類本類中顯式定義人員姓名············教職工職稱專業(yè)············研究生學(xué)號(hào)班級(jí)專業(yè)············在職研究生在職單位············例:命名沖突重復(fù)繼承多繼承:允許一個(gè)特殊類具有一個(gè)以上一般類的繼承模式多繼承特殊多態(tài):多態(tài)是指同一個(gè)命名可具有不同的語(yǔ)義。OO方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。多邊形邊數(shù)頂點(diǎn)數(shù)據(jù)繪圖XY矩形邊數(shù)*頂點(diǎn)數(shù)據(jù)*繪圖正多邊形*頂點(diǎn)數(shù)據(jù)*繪圖例:多態(tài):多態(tài)是指同一個(gè)命名可具有不同的語(yǔ)義。OO方法中,常指在語(yǔ)義:“apartof”或“hasa”聚合關(guān)系描述了對(duì)象實(shí)例之間的構(gòu)成情況,然而它的定義卻是在類的抽象層次給出的?!獜募险摰挠^點(diǎn)看聚合關(guān)系整體-部分關(guān)系(聚合關(guān)系)是兩個(gè)類之間的二元關(guān)系,其中一個(gè)類的某些對(duì)象是另一個(gè)類的某些對(duì)象的組成部分。整體-部分結(jié)構(gòu)是把若干具有聚合關(guān)系的類組織在一起所形成的結(jié)構(gòu)。它是一個(gè)以類為結(jié)點(diǎn),以聚合關(guān)系為邊的連通有向圖。8.2整體-部分結(jié)構(gòu)一種基本的模型元素由若干聚合關(guān)系形成的復(fù)合模型成分概念:聚合(aggregation),組合(composition)整體-部分(whole-part)整體對(duì)象,部分對(duì)象8.2整體-部分結(jié)構(gòu)一種基本的模型元素由若干聚合關(guān)系形成的組合(composition)是聚合關(guān)系的一種特殊情況,它表明整體對(duì)于部分的強(qiáng)擁有關(guān)系,即整體與部分之間具有緊密、固定的組成關(guān)系。UML把聚合定義為關(guān)聯(lián)的一種特殊情況而組合關(guān)系是聚合關(guān)系的特殊情況組合(composition)是聚合關(guān)系的一種特殊情況,它表數(shù)量數(shù)量數(shù)量數(shù)量整體對(duì)象類部分對(duì)象類整體對(duì)象類部分對(duì)象類表示法在連接符兩端通過(guò)數(shù)字或者符號(hào)給出關(guān)系雙方對(duì)象實(shí)例的數(shù)量約束,稱為多重性(multiplicity)

確定的整數(shù)——給出確定的數(shù)量——例如:1,2下界‥上界——給出一個(gè)范圍——例如:0‥1,1‥4

*——表示多個(gè),數(shù)量不確定下界‥*——表示多個(gè),下界確定——例如0‥*,1‥*多重性有以下3種情況:一對(duì)一,一對(duì)多,多對(duì)多照相機(jī)1‥*0‥10‥1鏡頭機(jī)身1數(shù)量數(shù)量數(shù)量數(shù)量整體對(duì)象類部分對(duì)象類整體對(duì)象類部分對(duì)象類表示如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)基本策略——考察問(wèn)題域中各種具有構(gòu)成關(guān)系的事物(1)物理上的整體事物和它的組成部分

例:機(jī)器、設(shè)備和它的零部件(2)組織機(jī)構(gòu)和它的下級(jí)組織及部門(mén)

例:公司與子公司、部門(mén)(3)團(tuán)體(組織)與成員

例:公司與職員(4)一種事物在空間上包容其它事物

例:生產(chǎn)車間與機(jī)器(5)抽象事物的整體與部分

例:學(xué)科與分支學(xué)科、法律與法律條款(6)具體事物和它的某個(gè)抽象方面

例:人員與身份、履歷如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)(1)物理上的整體事物和它的組成部分審查與篩選(1)是否屬于問(wèn)題域?例:公司職員與家庭(2)是不是系統(tǒng)責(zé)任的需要?例:?jiǎn)T工與工會(huì)、救護(hù)車與急救設(shè)備(3)部分對(duì)象是否有一個(gè)以上的屬性?例:汽車與車輪(規(guī)格)(4)是否有明顯的整體-部分關(guān)系?例:學(xué)生與課程審查與篩選(1)是否屬于問(wèn)題域?整體-部分結(jié)構(gòu)的高級(jí)應(yīng)用技巧(1)簡(jiǎn)化對(duì)象的定義○○○△△△□□□□●●▲▲■■飛機(jī)有關(guān)發(fā)動(dòng)機(jī)的屬性與操作有關(guān)駕駛室的屬性與操作111‥41飛機(jī)○○○●●發(fā)動(dòng)機(jī)△△△▲▲駕駛室□□□□■■整體-部分結(jié)構(gòu)的高級(jí)應(yīng)用技巧(1)簡(jiǎn)化對(duì)象的定義○飛機(jī)有關(guān)(2)支持軟件復(fù)用起重機(jī)送料車機(jī)床鉆床刨床車床電動(dòng)機(jī)0‥110‥110‥11發(fā)動(dòng)機(jī)飛機(jī)三種情況:

第一種情況是系統(tǒng)中已經(jīng)定義了某個(gè)類,再定義的其他類具有該類的一些特征。第二種情況是系統(tǒng)中定義的幾個(gè)類都有某些共同的特征。第三種情況是系統(tǒng)中只有一個(gè)類,但該類中的某些特征具有某種獨(dú)立性,具有領(lǐng)域內(nèi)復(fù)用機(jī)會(huì)。(2)支持軟件復(fù)用起重機(jī)送料車機(jī)床鉆床刨床車床電動(dòng)機(jī)0‥11(3)表示數(shù)量不定的組成部分訂單編號(hào)賣方買方總金額成交日期…………訂單行商品編號(hào)訂購(gòu)數(shù)量成交價(jià)金額…………1‥*1商品商品編號(hào)商品名稱單價(jià)廠商…………1*一個(gè)訂單可以包含一項(xiàng)到多達(dá)幾十項(xiàng)商品提問(wèn):能否不要訂單行,直接用商品作為訂單的部分對(duì)象?(3)表示數(shù)量不定的組成部分訂單訂單行1‥*1商品1*一(4)表示動(dòng)態(tài)變化的對(duì)象特征人員營(yíng)業(yè)員會(huì)計(jì)師經(jīng)理問(wèn)題:對(duì)象的屬性與操作定義在系統(tǒng)運(yùn)行中動(dòng)態(tài)變化,例如:不理想的解決辦法:刪除、重建Shlaer/Mellor的子類型遷移“動(dòng)態(tài)對(duì)象”不理想的原因:一是各個(gè)類的對(duì)象有一些共同的、不需要變化的屬性,隨著舊對(duì)象的刪除和新對(duì)象的建立,需要由系統(tǒng)用戶把舊對(duì)象中有用的信息重新錄入到新對(duì)象中,增加了用戶的負(fù)擔(dān)。二是讓對(duì)象反復(fù)地從一個(gè)類中刪除而加入另一個(gè)類,將為數(shù)據(jù)管理帶來(lái)困難。三是概念上不自然,一個(gè)對(duì)象僅僅因?yàn)橐恍┨卣靼l(fā)生了變化,就要讓它經(jīng)歷一番死而復(fù)生的陰陽(yáng)輪回,顯得太小題大做。(4)表示動(dòng)態(tài)變化的對(duì)象特征人員營(yíng)業(yè)員會(huì)計(jì)師經(jīng)理問(wèn)題:對(duì)象的(4)表示動(dòng)態(tài)變化的對(duì)象特征問(wèn)題:對(duì)象的屬性與操作定義在系統(tǒng)運(yùn)行中動(dòng)態(tài)變化,例如:會(huì)計(jì)師身份經(jīng)理身份營(yíng)業(yè)員身份人員身份1m或人員營(yíng)業(yè)員身份0‥1會(huì)計(jì)師身份0‥10‥1111解:經(jīng)理身份思考:自動(dòng)存取款機(jī)系統(tǒng)是否存在這樣的問(wèn)題?(4)表示動(dòng)態(tài)變化的對(duì)象特征問(wèn)題:對(duì)象的屬性與操作定義在系統(tǒng)“三友”對(duì)問(wèn)題的描述及解決方法“大多數(shù)面向?qū)ο蟮木幊陶Z(yǔ)言是靜態(tài)類型化的,這意味著在創(chuàng)建對(duì)象時(shí)就限定了對(duì)象的類型。但是隨著時(shí)間的推移對(duì)象還可能扮演不同的角色?!崩樱汉蜻x者,雇員,退休者person?type?candidate?type?employee?type?retiree“對(duì)象在其生命期內(nèi)動(dòng)態(tài)地獲得或者丟棄類型”1999年第一版person?dynamic?candidate?dynamic?employee?dynamic?retiree2005年第二版總之都是圍繞著繼承想主意,沒(méi)有運(yùn)用聚合?!叭选睂?duì)問(wèn)題的描述及解決方法person?type??ty從上述例子得到的啟示:整體-部分結(jié)構(gòu)有很強(qiáng)的表達(dá)能力運(yùn)用OO方法的基本概念可以自然而有效地解決許多在其他方法中用擴(kuò)充概念解決的問(wèn)題加強(qiáng)對(duì)基本概念的運(yùn)用,不要輕易創(chuàng)造新的擴(kuò)充概念person0‥10‥10‥1111用聚合概念解決:CandidateRoleEmployeeRoleRetireeRole從上述例子得到的啟示:person0‥10‥10‥1111用用一般-特殊結(jié)構(gòu)兩種結(jié)構(gòu)的變通汽車制冷設(shè)備冷藏車解釋:繼承和聚合都是使一類對(duì)象獲得另一類對(duì)象的特征,只是觀察問(wèn)題的角度不同。兩種結(jié)構(gòu)同用汽車?yán)洳剀囍评湓O(shè)備冷藏車汽車制冷設(shè)備用整體-部分結(jié)構(gòu)用一般-特殊結(jié)構(gòu)兩種結(jié)構(gòu)的變通汽車制冷設(shè)備冷藏車解釋:兩練習(xí):1、對(duì)于門(mén)這個(gè)類來(lái)說(shuō),有木門(mén)、鐵門(mén)、玻璃門(mén)之分,也有電動(dòng)門(mén)、轉(zhuǎn)門(mén)、拉門(mén)之分,如何建模?2、在在線圖書(shū)銷售系統(tǒng)中,圖書(shū)包括封面、目錄和正文三個(gè)部分,封面上有圖書(shū)的名稱、出版社和作者,目錄中有章和節(jié)的標(biāo)題,如何建模?3、如果多個(gè)類中都存在一些相同的屬性和操作,此時(shí)可以選擇幾種建模方案?舉例說(shuō)明。4、基于前述建模結(jié)果,完成OOA階段類之間關(guān)系的構(gòu)建,用UML標(biāo)準(zhǔn)表示法進(jìn)行描述。練習(xí):1、對(duì)于門(mén)這個(gè)類來(lái)說(shuō),有木門(mén)、鐵門(mén)、玻璃門(mén)之分,也有電概念:關(guān)聯(lián)(association)是兩個(gè)或者多個(gè)類上的一個(gè)關(guān)系(即這些類的對(duì)象實(shí)例集合的笛卡兒積的一個(gè)子集合),其中的元素提供了被開(kāi)發(fā)系統(tǒng)的應(yīng)用領(lǐng)域中一組有意義的信息。二元關(guān)聯(lián)(binaryassociation)n元關(guān)聯(lián)(n-aryassociation)關(guān)聯(lián)的實(shí)例——有序?qū)騨元組,又稱鏈(link)關(guān)聯(lián)是這些有序?qū)騨元組的集合關(guān)聯(lián)位于類的抽象層次,鏈位于對(duì)象的抽象層次8.3關(guān)聯(lián)提問(wèn):一個(gè)n元關(guān)聯(lián)中所涉及的類的數(shù)量是否可以小于n?概念:8.3關(guān)聯(lián)提問(wèn):一個(gè)n元關(guān)聯(lián)中所涉及的類的數(shù)量是否可二元關(guān)聯(lián)的表示法城市**有航線(d)城市之間有航線教師學(xué)生1*指導(dǎo)論文教師為學(xué)生指導(dǎo)論文例子類A名稱類B數(shù)量數(shù)量角色角色111***多重性的表示一對(duì)一:一對(duì)多:多對(duì)多:數(shù)量約束固定數(shù)值:例如1數(shù)值范圍:例如0‥1符號(hào):*表示多個(gè)0‥*=*1‥*表示1到多個(gè)二元關(guān)聯(lián)的表示法城市**有航線(d)城市之間有航線教師二元關(guān)聯(lián)的實(shí)現(xiàn)(一對(duì)一和一對(duì)多)編程語(yǔ)言:在程序中用兩個(gè)類分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類;以數(shù)量約束為“1”的類的對(duì)象實(shí)例為目標(biāo),在關(guān)聯(lián)另一端的類中設(shè)置一個(gè)指向該目標(biāo)的指針或者對(duì)象標(biāo)識(shí)(源類的屬性)。教師1授課課程*主講教師誰(shuí)?關(guān)系數(shù)據(jù)庫(kù):用兩個(gè)數(shù)據(jù)庫(kù)表分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類;以數(shù)量約束為“1”的類對(duì)應(yīng)的表的元組為目標(biāo),在關(guān)聯(lián)另一端的類對(duì)應(yīng)的表中設(shè)置一個(gè)指向該目標(biāo)的外鍵(目標(biāo)的主鍵)。教師課程二元關(guān)聯(lián)的實(shí)現(xiàn)(一對(duì)一和一對(duì)多)編程語(yǔ)言:在程序中用兩個(gè)類分二元關(guān)聯(lián)的實(shí)現(xiàn)(多對(duì)多)問(wèn)題:任何一端的一個(gè)對(duì)象實(shí)例要和另一端多個(gè)對(duì)象實(shí)例發(fā)生關(guān)聯(lián),而且數(shù)量不確定。實(shí)現(xiàn)時(shí)不知道該設(shè)立多少個(gè)指針(或者對(duì)象標(biāo)識(shí)、外鍵)才能夠用。

課程學(xué)生**編程語(yǔ)言:用兩個(gè)類分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類,同時(shí)用另外一個(gè)類來(lái)實(shí)現(xiàn)它們之間的關(guān)聯(lián)。實(shí)現(xiàn)關(guān)聯(lián)的類含有兩個(gè)屬性,分別是指向兩端的類的對(duì)象實(shí)例的指針或者對(duì)象標(biāo)識(shí)。

增加一個(gè)類關(guān)系數(shù)據(jù)庫(kù):用兩個(gè)數(shù)據(jù)庫(kù)表分別實(shí)現(xiàn)關(guān)聯(lián)兩端的類,同時(shí)用另外一個(gè)數(shù)據(jù)庫(kù)表來(lái)實(shí)現(xiàn)它們之間的關(guān)聯(lián)。實(shí)現(xiàn)關(guān)聯(lián)的數(shù)據(jù)庫(kù)表含有兩個(gè)屬性,它們分別是指向兩端的表的元組的外鍵。課程課程-學(xué)生學(xué)生二元關(guān)聯(lián)的實(shí)現(xiàn)(多對(duì)多)問(wèn)題:任何一端的一個(gè)對(duì)象實(shí)例要和另一運(yùn)用簡(jiǎn)單的概念及表示法解決各種復(fù)雜的關(guān)聯(lián)問(wèn)題教師學(xué)生1*指導(dǎo)論文(1)帶有屬性和操作的關(guān)聯(lián)有某些信息需要描述OMT(及UML)的概念擴(kuò)充關(guān)聯(lián)類(associationclass)

類1類2屬性……操作……例子教師學(xué)生1*指導(dǎo)論文論文題目答辯時(shí)間成績(jī)問(wèn)題:增加了概念的復(fù)雜性,缺乏編程語(yǔ)言支持運(yùn)用簡(jiǎn)單的概念及表示法解決各種復(fù)雜的關(guān)聯(lián)問(wèn)題教師學(xué)生1*指導(dǎo)換一種思路考慮問(wèn)題:兩類對(duì)象之間的關(guān)聯(lián)帶有某些復(fù)雜的信息,說(shuō)明它們之間存在著某種事物(盡管可能是抽象事物)。用普通的對(duì)象概念來(lái)表示這種事物,簡(jiǎn)化關(guān)聯(lián),減少概念,并加強(qiáng)與OOPL的對(duì)應(yīng)。教師學(xué)生1*指導(dǎo)論文論文題目答辯時(shí)間成績(jī)*論文題目答辯時(shí)間成績(jī)……教師學(xué)生1指導(dǎo)畢業(yè)論文11寫(xiě)作例1換一種思路考慮問(wèn)題:教師學(xué)生1*指導(dǎo)論文論文題目*論文題目教城市之間有航線城市有航線距離每周班次**1公司個(gè)人工作薪水*公司與個(gè)人其他例子城市之間存在航線對(duì)象城市航線距離每周班次*2公司個(gè)人工作薪水公司與個(gè)人之間存在工作對(duì)象1*11城市之間有航線城市有航線**1公司個(gè)人工作*公司與個(gè)復(fù)雜關(guān)聯(lián)表示法的轉(zhuǎn)換

mn類A類B關(guān)聯(lián)類屬性操作類A類B類C屬性操作11mn復(fù)雜關(guān)聯(lián)表示法的轉(zhuǎn)換mn類A類B關(guān)聯(lián)類類A類B類(2)n元關(guān)聯(lián)OMT的三元關(guān)聯(lián)及其表示法問(wèn)題:編程語(yǔ)言不能直接支持可推廣到n元關(guān)聯(lián),是否要?jiǎng)?chuàng)造更多的符號(hào)?多重性表示的困難(詳后)項(xiàng)目語(yǔ)言人員增設(shè)對(duì)象類表示多元關(guān)聯(lián)*項(xiàng)目名承擔(dān)者語(yǔ)言……項(xiàng)目語(yǔ)言1任務(wù)1*人員*1***(2)n元關(guān)聯(lián)OMT的三元關(guān)聯(lián)及其表示法問(wèn)題:項(xiàng)目語(yǔ)言人員增在理論上,n元關(guān)聯(lián)是由若干n元組形成的集合,本質(zhì)上也是一個(gè)類——是由每個(gè)n元組作為對(duì)象實(shí)例的類從實(shí)現(xiàn)的角度看,用類實(shí)現(xiàn)n元關(guān)聯(lián)是最自然的選擇例如:用一個(gè)數(shù)據(jù)庫(kù)表存放n元關(guān)聯(lián)的全部n元組外鍵1外鍵2外鍵3……外鍵n……表1表2表3表nn個(gè)表:類2類n類1類3……n個(gè)類:N元關(guān)聯(lián)在理論上,n元關(guān)聯(lián)是由若干n元組形成的集合,本質(zhì)上也是一個(gè)類在模型中,把n元關(guān)聯(lián)定義為一個(gè)類并定義它與原有的各個(gè)類之間的關(guān)系——都是二元關(guān)聯(lián)類2……類n類1類3n元關(guān)聯(lián)類2……類n類1類3新增類在模型中,把n元關(guān)聯(lián)定義為一個(gè)類類2……類n類1類3n元關(guān)聯(lián)項(xiàng)目語(yǔ)言人員*?*是1還是*?1項(xiàng)目語(yǔ)言任務(wù)人員11***1*1項(xiàng)目語(yǔ)言任務(wù)人員11***n元關(guān)聯(lián)多重性表示的困難和解決辦法項(xiàng)目語(yǔ)言人員*?*1項(xiàng)目語(yǔ)言任務(wù)人員11***例:課程實(shí)習(xí)中每?jī)擅麑W(xué)生在一臺(tái)設(shè)備上合作完成一個(gè)題目1)若系統(tǒng)要求記錄和查閱哪兩名學(xué)生是合作者建立學(xué)生類到它自身的關(guān)聯(lián)(如同城市之間有航線)是一個(gè)二元關(guān)聯(lián),其中學(xué)生類在關(guān)聯(lián)中出現(xiàn)了兩次2)如果還要記錄每組學(xué)生的實(shí)習(xí)題目和使用的設(shè)備建立學(xué)生、題目、設(shè)備三個(gè)類之間的4元關(guān)聯(lián)學(xué)生類在這個(gè)關(guān)聯(lián)中出現(xiàn)了兩次(3)一個(gè)類在一個(gè)關(guān)聯(lián)中多次出現(xiàn)例:課程實(shí)習(xí)中每?jī)擅麑W(xué)生在一臺(tái)設(shè)備上合作完成一個(gè)題目(3)一111**1題目設(shè)備學(xué)生學(xué)生實(shí)習(xí)11211**1題目設(shè)備學(xué)生實(shí)習(xí)假如該系統(tǒng)的多重性要求是:每?jī)擅麑W(xué)生在一臺(tái)設(shè)備上合作完成一個(gè)題目;一個(gè)題目可以供多組學(xué)生實(shí)習(xí),可以在不同的設(shè)備上完成;一臺(tái)設(shè)備可以供多組學(xué)生使用,可以做不同的題目。

題目設(shè)備學(xué)生學(xué)生????題目設(shè)備學(xué)生**???111**1題目設(shè)備學(xué)生學(xué)生實(shí)習(xí)11211**1題關(guān)聯(lián)端點(diǎn)的復(fù)雜情況關(guān)聯(lián)端點(diǎn):關(guān)聯(lián)的連接線與類符號(hào)相銜接的點(diǎn)修飾:在端點(diǎn)附近標(biāo)注符號(hào)或者文字,或者畫(huà)成不同的形狀多重性(multiplicity)√

有序(ordered){ordered}限定符(qualifier)詳后導(dǎo)航性(navigability)聚合標(biāo)志(aggregationindicator)√

角色名(rolename)

接口說(shuō)明(interfacespecifier)角色名:接口說(shuō)明可變性(changeability){frozen},{addOnly}可見(jiàn)性(visibility)?!?”、“#”或者“-”關(guān)聯(lián)端點(diǎn)的復(fù)雜情況多重性(multiplicity)“限定符是關(guān)聯(lián)的一種屬性,它的值劃定了跨過(guò)一個(gè)關(guān)聯(lián)與一個(gè)對(duì)象相關(guān)的對(duì)象集合?!庇孟薅ǚ揎椀年P(guān)聯(lián)稱為受限關(guān)聯(lián)(qualifiedassociation)UML對(duì)限定符的解釋類A限定符類B*0‥1表示法“限定符是關(guān)聯(lián)的一種屬性,它的值劃定了跨過(guò)一個(gè)關(guān)聯(lián)與一個(gè)對(duì)象BankaccountNoPerson*0‥1Chessboardrank:Rankfile:FileSquare11Chessboard164Squarerank:intfile:intBankAccountPerson*1*1訂單產(chǎn)品訂單行Amount:Number0‥1WorkDeskjobID:intReturnedItem*0‥1訂單訂單行Amount:Number*1產(chǎn)品*1限定符的例子及其簡(jiǎn)單解決方案WorkDeskjobReturnedItem*1*1BankaccountNoPerson*0‥1Chessbo關(guān)聯(lián)端點(diǎn)的修飾在UML2的變化(1)取消了接口說(shuō)明和可變性兩種修飾(2)新增兩種圖形方式的修飾╳:表示不可導(dǎo)航●:表示擁有權(quán)(3)增加了花括號(hào)內(nèi)的特性串(propertystring)

{subsets}子集合{redefines}重定義{union}合并{ordered}有序{nonunique}不唯一{sequence},{seq}序列關(guān)聯(lián)端點(diǎn)的修飾在UML2的變化(1)取消了接口說(shuō)明和可變性如何建立關(guān)聯(lián)1.根據(jù)問(wèn)題域和系統(tǒng)責(zé)任發(fā)現(xiàn)所需要的關(guān)聯(lián)

哪些類的對(duì)象實(shí)例之間存在著對(duì)用戶業(yè)務(wù)有意義的關(guān)系?·問(wèn)題域中實(shí)際事物之間有哪些值得注意的關(guān)系?·這種信息是否需要通過(guò)有序?qū)Γɑ蛘遪元組)來(lái)體現(xiàn)?·這些信息是否需要在系統(tǒng)中進(jìn)行保存、管理或維護(hù)?·系統(tǒng)是否需要查閱和使用由這種關(guān)系所體現(xiàn)的信息?如何建立關(guān)聯(lián)2.關(guān)聯(lián)的復(fù)雜情況處理·對(duì)關(guān)聯(lián)屬性和操作的處理

·對(duì)n元關(guān)聯(lián)的處理·避免一個(gè)類在關(guān)聯(lián)中多次出現(xiàn)

·多對(duì)多關(guān)聯(lián)的處理

供貨商客戶**多對(duì)多關(guān)聯(lián)的處理供需合同賣方買方…….**112.關(guān)聯(lián)的復(fù)雜情況處理供貨商客戶**多對(duì)多關(guān)聯(lián)的處理供需合同3.為關(guān)聯(lián)端點(diǎn)添加修飾·分析關(guān)聯(lián)的多重性·給出關(guān)聯(lián)名或角色名·識(shí)別聚合種類·其他修飾導(dǎo)航性、特性串等——根據(jù)實(shí)際情況決定是否采用限定符——用簡(jiǎn)單的類和關(guān)聯(lián)的概念解決4.在類中設(shè)立實(shí)現(xiàn)關(guān)聯(lián)的屬性3.為關(guān)聯(lián)端點(diǎn)添加修飾5.關(guān)聯(lián)定位系統(tǒng)管理員1計(jì)算機(jī)服務(wù)器客戶機(jī)用戶*操作使用1*5.關(guān)聯(lián)定位系統(tǒng)管理員1計(jì)算機(jī)服務(wù)器客戶機(jī)用戶*操作使用1練習(xí):1、一對(duì)多的二元關(guān)聯(lián)如何實(shí)現(xiàn)?舉例說(shuō)明。2、多對(duì)多的二元關(guān)聯(lián)如何實(shí)現(xiàn)?舉例說(shuō)明。3、如何避免一個(gè)類在關(guān)聯(lián)中多次出現(xiàn)?舉例說(shuō)明。4、基于前述建模結(jié)果,完成OOA階段類之間關(guān)系的構(gòu)建,用UML標(biāo)準(zhǔn)表示法進(jìn)行描述。練習(xí):1、一對(duì)多的二元關(guān)聯(lián)如何實(shí)現(xiàn)?舉例說(shuō)明。8.4 消息1、什么是消息(message)

現(xiàn)實(shí)生活中——人或其他事物之間傳遞的信息,例如:人與人之間的對(duì)話、通信、發(fā)通知、留言交通信號(hào)燈對(duì)車輛和行人發(fā)出的信號(hào)人發(fā)給設(shè)備的遙控信號(hào)等……軟件系統(tǒng)中——進(jìn)程或軟件成分之間傳送的信息控制信息例如一次函數(shù)調(diào)用,或喚醒一個(gè)進(jìn)程數(shù)據(jù)信息例如傳送一個(gè)數(shù)據(jù)文件面向?qū)ο蟮南到y(tǒng)中——(按嚴(yán)格封裝的要求)消息是對(duì)象之間在行為上的唯一聯(lián)系方式消息是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求(狹義)消息是對(duì)象之間在一次交互中所傳送的信息(廣義)

消息有發(fā)送者和接收者,遵守共同約定的語(yǔ)法和語(yǔ)義8.4 消息1、什么是消息(message)·每個(gè)消息都是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求最常見(jiàn)的是函數(shù)調(diào)用·消息都是同步的。·接收者執(zhí)行消息所請(qǐng)求的服務(wù)。·發(fā)送者等待消息處理完畢再繼續(xù)執(zhí)行?!っ總€(gè)消息只有唯一的接收者。順序系統(tǒng)中的消息順序系統(tǒng)中的消息并發(fā)系統(tǒng)中的消息控制流內(nèi)部的消息——與順序系統(tǒng)相同控制流之間的消息——情況復(fù)雜得多·消息有多種用途服務(wù)請(qǐng)求,傳送數(shù)據(jù),發(fā)送通知,傳遞控制信號(hào)……·消息有同步與異步之分同步消息(synchronousmessage)異步消息(asynchronousmessage)

·接收者對(duì)消息有不同響應(yīng)方式創(chuàng)建控制流,立即響應(yīng),延遲響應(yīng),不響應(yīng)·發(fā)送者對(duì)消息處理結(jié)果有不同期待方式等待回應(yīng),事后查看結(jié)果,不等待不查看·消息的接收者可能不唯一定向消息(directedmessage)廣播消息(broadcastmessage)

并發(fā)系統(tǒng)中的消息控制流內(nèi)部的消息——與順序系統(tǒng)相同消息對(duì)面向?qū)ο蠼5囊饬x消息體現(xiàn)了對(duì)象之間的行為依賴關(guān)系,是實(shí)現(xiàn)對(duì)象之間的動(dòng)態(tài)聯(lián)系

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論