UML如何描述類(lèi)之間的關(guān)系_第1頁(yè)
UML如何描述類(lèi)之間的關(guān)系_第2頁(yè)
UML如何描述類(lèi)之間的關(guān)系_第3頁(yè)
UML如何描述類(lèi)之間的關(guān)系_第4頁(yè)
UML如何描述類(lèi)之間的關(guān)系_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

UML中類(lèi)之間的關(guān)系UML(TheUnified Modeling Language )就是統(tǒng)一建模語(yǔ)言,不論它是怎么發(fā)展來(lái)的,也不論最新的官方Specification 或工業(yè)標(biāo)準(zhǔn)是哪個(gè)版本,我想總結(jié)一下工作中最常用的一些知識(shí):用UML語(yǔ)言描述類(lèi)的關(guān)系。1,關(guān)聯(lián)關(guān)系(Association)關(guān)聯(lián)關(guān)系是類(lèi)(也可以說(shuō)是對(duì)象)之間特定的對(duì)應(yīng)關(guān)系。按照對(duì)象的數(shù)量對(duì)比,可以分為:A一對(duì)一比如公民和公民身份卡之間的對(duì)應(yīng)關(guān)系。B一對(duì)多DepartmentEmployee10,*一個(gè)部門(mén)對(duì)應(yīng)0或者多位員工,一般而言一位員工只能屬于某一個(gè)部門(mén)。C多對(duì)多用戶(hù)和服務(wù)是多對(duì)多的關(guān)系,一個(gè)用戶(hù)可以注冊(cè) 0個(gè)或多個(gè)服務(wù),一個(gè)服務(wù)則可以被0個(gè)或者多個(gè)用戶(hù)復(fù)用。比如 Windows Live用戶(hù)可以激活郵件服務(wù)、 Space服務(wù)等,而這些服務(wù)不是被一個(gè)用戶(hù)所專(zhuān)有的。關(guān)聯(lián)的實(shí)質(zhì)從A類(lèi)型到B類(lèi)型的關(guān)聯(lián)是指在 A類(lèi)型中定義了B類(lèi)型作為屬性。如下列代碼:packageuml;publicclassCitizen{private CitizenshipCard card;//其他屬性publicCitizenshipCardgetCard(){returncard;}publicvoidsetCard(CitizenshipCard card){this.card=card;}}上述代碼演示了從 Citizen至UCitizenshipCard 的關(guān)聯(lián)。注意下圖箭頭方向:Citizen 吁CitizenshipCard11同樣可以建立CitizenshipCard 至UCitizen 的關(guān)聯(lián):Citizen二 ,匚ttizenshipCardI 1代碼表示為:packageuml;publicclassCitizenshipCard {private Citizen citizen;//其他屬性publicCitizen getCitizen() {return citizen;}publicvoid setCitizen(Citizen citizen) {this.citizen=citizen;}}如果僅僅建立從Citizen到CitizenshipCard 的關(guān)聯(lián)或者僅僅建立 CitizenshipCard到Citizen 的關(guān)聯(lián),都屬于單向關(guān)聯(lián),如果兩個(gè)方向的關(guān)聯(lián)都建立,就是雙向關(guān)聯(lián):是否建立雙向關(guān)聯(lián)要在實(shí)際項(xiàng)目中酌情而定。再看個(gè)雙向關(guān)聯(lián)的例子:Department packageuml;importjava.util.Set;publicclassDepartment{privateString name;privateSet<Employee>employees:publicStringgetName(){return name;}publicvoidsetName(String name){this.name =name;

publicSet<Employee>getEmployees()return}employees;publicvoidsetEmployees(Set<Employee>employees){this.employees=employees;employees){}Employeepackageuml;publicclassEmployee{private Stringname;private longjoinTime;private Department department;publicStringgetName(){return name;}publicvoidsetName(String name) {this.name=name;}publiclonggetJoinTime() {returnjoinTime;}publicvoidsetJoinTime(long joinTime){this.joinTime =joinTime;}publicDepartmentgetDepartment(){return}department;publicvoidsetDepartment(Departmentdepartment){this.department =department;}2,聚集關(guān)系(Aggregation)聚集者和被聚集者之間是一種 靈活的平臺(tái)分享關(guān)系。一個(gè)類(lèi)提供平臺(tái),把另外一個(gè)類(lèi)集成過(guò)來(lái),如下圖BankService將其他Services集成進(jìn)來(lái),統(tǒng)一為客戶(hù)提供風(fēng)格一致的服務(wù)。我們面對(duì)銀行的一個(gè)普通柜臺(tái)工作人員, 可以存取款項(xiàng),可以委托理財(cái),可以查詢(xún)賬戶(hù)余額,可以委托代交電費(fèi),還可以?huà)焓Щ蜾N(xiāo)戶(hù), 這些服務(wù)都是在一個(gè)地點(diǎn)由同一個(gè)用戶(hù)服務(wù)接口(BankService)完成的。類(lèi)似的例子還有計(jì)算機(jī)和外設(shè)之間的關(guān)系:計(jì)算機(jī)可以聚集U盤(pán)、掃描儀、打印機(jī)、手機(jī)等硬件,統(tǒng)一為用戶(hù)提供服務(wù),這種服務(wù)大大豐富了計(jì)算機(jī)本身的功能,也便于用戶(hù)統(tǒng)一使用。ATM也是一種BankService實(shí)例,我們面對(duì)ATM,也可以享受多種自助服務(wù)。3,構(gòu)成關(guān)系(Composition)構(gòu)成關(guān)系也是一種平臺(tái)分享關(guān)系,但是這種平臺(tái)是壟斷的、強(qiáng)制的。如身體和頭之間是一種構(gòu)成關(guān)系,頭只能在身體上,離開(kāi)這個(gè)平臺(tái),就沒(méi)有繼續(xù)存在的機(jī)會(huì)了。構(gòu)成關(guān)系有兩層含義:1,整體(父元素)和部分(子元素)之間的關(guān)系;2,部分(子元素)的生命周期隸屬于整體(父元素)的生命周期,父元素消亡,子元素級(jí)聯(lián)消亡。HeadAttf/bates?JpetjifonsArmArtr/butesBodyOper^tfonsd I如何區(qū)分關(guān)聯(lián)關(guān)系、聚集關(guān)系和構(gòu)成關(guān)系?關(guān)聯(lián)關(guān)系、聚集關(guān)系和構(gòu)成關(guān)系,都屬于廣義的關(guān)聯(lián)關(guān)系,三種關(guān)系的在面向?qū)ο蟮木幊陶Z(yǔ)言中表現(xiàn)方式是一致的(參考:1,關(guān)聯(lián)關(guān)系關(guān)聯(lián)的實(shí)質(zhì))。但是它們的本質(zhì)區(qū)別是存在的:實(shí)質(zhì)元素生命周期舉例關(guān)聯(lián)關(guān)系所屬關(guān)系彼此獨(dú)立用戶(hù)與訂單聚集關(guān)系靈活平臺(tái)分享彼此獨(dú)立主板與內(nèi)存條構(gòu)成關(guān)系強(qiáng)制平臺(tái)分享國(guó)破家亡”身體和腦袋;腦袋和耳朵4,依賴(lài)關(guān)系(Dependency)對(duì)象管理組織(OMG)在其最新的UML規(guī)范(V2.1.12007-02-05 )上是這么描述依賴(lài)關(guān)系的:依賴(lài)關(guān)系是指一個(gè)單獨(dú)的或者一組的模型元素從規(guī)范或者實(shí)現(xiàn)的角度,需要其他的模型元素的存在。完整的含義是:依賴(lài)方(客戶(hù)方、需求方)的元素要么從語(yǔ)義層面,要么從結(jié)構(gòu)層面,依賴(lài)供應(yīng)方元素(有時(shí)不僅是一個(gè))的定義這就是規(guī)范說(shuō)明”,為了支持對(duì)各種實(shí)現(xiàn)者的指導(dǎo),它堅(jiān)持自己的抽象風(fēng)格,從而不太方便人們的理解。簡(jiǎn)單而言,依賴(lài)關(guān)系是一種局部使用關(guān)系。 A類(lèi)使用B類(lèi),則說(shuō)明A類(lèi)依賴(lài)于B類(lèi),圖示如下:ABAttributes >AttributesOperationsOperationsA類(lèi)在兩種情況下使用B類(lèi):1,A類(lèi)負(fù)責(zé)構(gòu)造B類(lèi)的實(shí)例,即A類(lèi)使用B類(lèi)的構(gòu)造器【圖示】【代碼】packageuml;publicclassCarFactory{publicCarmakeNewCar(){returnnewCar();}}2,A類(lèi)使用B類(lèi)實(shí)例的其他方法或者屬性【圖示】PersonCarAttiibutes >AttributesOpeutions+drive20fTice(myCar:Car):voidQper&tioits+run():void【代碼】packageuml;

溫馨提示

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

評(píng)論

0/150

提交評(píng)論