類(lèi)關(guān)系圖及實(shí)現(xiàn)代碼_第1頁(yè)
類(lèi)關(guān)系圖及實(shí)現(xiàn)代碼_第2頁(yè)
類(lèi)關(guān)系圖及實(shí)現(xiàn)代碼_第3頁(yè)
類(lèi)關(guān)系圖及實(shí)現(xiàn)代碼_第4頁(yè)
類(lèi)關(guān)系圖及實(shí)現(xiàn)代碼_第5頁(yè)
已閱讀5頁(yè),還剩10頁(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)介

類(lèi)關(guān)系圖及代碼一、繼承(泛化)關(guān)系(Generalization)表示類(lèi)與類(lèi)之間的繼承關(guān)系,接口與接口之間的繼承關(guān)系,或類(lèi)對(duì)接口的實(shí)現(xiàn)關(guān)系。一般化的關(guān)系是從子類(lèi)指向父類(lèi)的,與繼承或?qū)崿F(xiàn)的方法相反。class

Animal{}classTigerextendsAnimal{}classDogextendsAnimal{}一、繼承(泛化)關(guān)系(Generalization)在UML當(dāng)中,對(duì)泛化關(guān)系有三個(gè)要求:1、子類(lèi)與父類(lèi)應(yīng)該完全一致,父類(lèi)所具有的屬性、操作,子類(lèi)應(yīng)該都有;2、子類(lèi)中除了與父類(lèi)一致的信息以外,還包括額外的信息;3、可以使用父類(lèi)的實(shí)例的地方,也可以使用子類(lèi)的實(shí)例;二、依賴(lài)關(guān)系(Dependence)依賴(lài)關(guān)系(Dependency)

是一種使用關(guān)系,特定事物的改變有可能會(huì)影響到使用該事物的其他事物,在需要表示一個(gè)事物使用另一個(gè)事物時(shí)使用依賴(lài)關(guān)系。大多數(shù)情況下,依賴(lài)關(guān)系體現(xiàn)在某個(gè)類(lèi)的方法使用另一個(gè)類(lèi)的對(duì)象作為參數(shù),或者一個(gè)類(lèi)調(diào)用另一個(gè)類(lèi)的方法。在UML中,依賴(lài)關(guān)系用帶箭頭的虛線(xiàn)表示,由依賴(lài)的一方指向被依賴(lài)的一方。二、依賴(lài)關(guān)系(Dependence)publicclassA{

publicvoidAOperation(){ BBObj=newB(); Stringobjname=BObj.BOperation(1); }}PublicclassB{

publicStringBOperation(Integerobjid){

return"ObjectB"; };}二、依賴(lài)關(guān)系(Dependence)依賴(lài)關(guān)系有如下三種情況:1、A類(lèi)是B類(lèi)中的(某中方法的)局部變量;2、A類(lèi)是B類(lèi)方法當(dāng)中的一個(gè)參數(shù);3、A類(lèi)向B類(lèi)發(fā)送消息,從而影響B(tài)類(lèi)發(fā)生變化;三、關(guān)聯(lián)關(guān)系(Association)

對(duì)于兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象的實(shí)例與另一個(gè)對(duì)象的一些特定實(shí)例存在固定的對(duì)應(yīng)關(guān)系時(shí),這兩個(gè)對(duì)象之間為關(guān)聯(lián)關(guān)系。

類(lèi)之間的聯(lián)接,它使一個(gè)類(lèi)知道另一個(gè)類(lèi)的屬性和方法。關(guān)聯(lián)分雙向關(guān)聯(lián)和單向關(guān)聯(lián)。三、關(guān)聯(lián)關(guān)系(Association)

關(guān)聯(lián)兩邊的"employee"和“employer”標(biāo)示了兩者之間的關(guān)系,而數(shù)字表示兩者的關(guān)系的限制,是關(guān)聯(lián)兩者之間的多重性。通常有“*”(表示所有,不限),“1”(表示有且僅有一個(gè)),“0...”(表示0個(gè)或者多個(gè)),“0,1”(表示0個(gè)或者一個(gè)),“n...m”(表示n到m個(gè)都可以),“m...*”(表示至少m個(gè))。關(guān)聯(lián)關(guān)系(Association)

是類(lèi)與類(lèi)之間最常用的一種關(guān)系,它是一種結(jié)構(gòu)化關(guān)系,用于表示一類(lèi)對(duì)象與另一類(lèi)對(duì)象之間有聯(lián)系。在UML類(lèi)圖中,用實(shí)線(xiàn)連接有關(guān)聯(lián)的對(duì)象所對(duì)應(yīng)的類(lèi),在使用Java、C#和C++等編程語(yǔ)言實(shí)現(xiàn)關(guān)聯(lián)關(guān)系時(shí),通常將一個(gè)類(lèi)的對(duì)象作為另一個(gè)類(lèi)的屬性。在使用類(lèi)圖表示關(guān)聯(lián)關(guān)系時(shí)可以在關(guān)聯(lián)線(xiàn)上標(biāo)注角色名。三、關(guān)聯(lián)關(guān)系(Association)

publicclassCompany{privateEmployeeemployee;public

Employee

getEmployee(){return

employee;

}

public

void

setEmployee(Employee

employee){this.employee=employee;}

//公司運(yùn)作

public

void

run(){

employee.startWorking();}}三、關(guān)聯(lián)關(guān)系(Association)

雙向關(guān)聯(lián)public

class

Customer

{

private

Product[]

products;

……

}

public

class

Product

{

private

Customer

customer;

……

}

三、關(guān)聯(lián)關(guān)系(Association)

單向關(guān)聯(lián)public

class

Customer

{

private

Address

address;

……

}

public

class

Address

{

……

}

四、聚合關(guān)系(Aggregation)聚合關(guān)系(Aggregation)

表示一個(gè)整體與部分的關(guān)系。通常在定義一個(gè)整體類(lèi)后,再去分析這個(gè)整體類(lèi)的組成結(jié)構(gòu),從而找出一些成員類(lèi),該整體類(lèi)和成員類(lèi)之間就形成了聚合

關(guān)系。在聚合關(guān)系中,成員類(lèi)是整體類(lèi)的一部分,即成員對(duì)象是整體對(duì)象的一部分,但是成員對(duì)象可以脫離整體對(duì)象獨(dú)立存在。在UML中,聚合關(guān)系用帶空心菱形的直線(xiàn)表示。

當(dāng)對(duì)象A被加入到對(duì)象B中,成為對(duì)象B的組成部分時(shí),對(duì)象B和對(duì)象A之間為聚集關(guān)系。聚合是關(guān)聯(lián)關(guān)系的一種,是較強(qiáng)的關(guān)聯(lián)關(guān)系,強(qiáng)調(diào)的是整體與部分之間的關(guān)系。四、聚合關(guān)系0..1表示一個(gè)Class_10對(duì)象最多關(guān)聯(lián)1個(gè)Class_9對(duì)象;

0..n表示一個(gè)Class_9對(duì)象關(guān)聯(lián)任意個(gè)Class_10對(duì)象.public

class

Computer{private

CPU

cpu;

privateMemorymemory;

privateHHDhhd;publicCPUgetCPU(){return

cpu;}publicvoidsetCPU(CPU

cpu){this.cpu=cpu;}

publicMemorygetMemory(){

returnmemory;

}

publicMemorysetMemory(Memorymem){

this.memory=mem;

}publicHHDgetHHD(){return

hhd;}publicvoidsetHHD(HHD

hhd){this.hhd=hhd;}

//開(kāi)啟電腦

public

void

start(){//cpu運(yùn)作cpu.run();}}關(guān)聯(lián)與聚合的區(qū)別(1)關(guān)聯(lián)關(guān)系所涉及的兩個(gè)對(duì)象是處在同一個(gè)層次上的。比如人和自行車(chē)就是一種關(guān)聯(lián)關(guān)系,而不是聚合關(guān)系,因?yàn)槿瞬皇怯勺孕熊?chē)組成的。

聚合關(guān)系涉及的兩個(gè)對(duì)象處于不平等的層次上,一個(gè)代表整體,一個(gè)代表部分。比如電腦和它的顯示器、鍵盤(pán)、主板以及內(nèi)存就是聚集關(guān)系,因?yàn)橹靼迨请娔X的組成部分。(2)對(duì)于具有聚集關(guān)系(尤其是強(qiáng)聚集關(guān)系)的兩個(gè)對(duì)象,整體對(duì)象會(huì)制約它的組成對(duì)象的生命周期。部分類(lèi)的對(duì)象不能單獨(dú)存在,它的生命周期依賴(lài)于整體類(lèi)的對(duì)象的生命周期,當(dāng)整體消失,部分也就隨之消失。比如張三的電腦被偷了,那么電腦的所有組件也不存在了,除非張三事先把一些電腦的組件(比如硬盤(pán)和內(nèi)存)拆了下來(lái)。五、組合關(guān)系(Composition)組合關(guān)系(Composition)也表示類(lèi)之間整體和部分的關(guān)系,但是組合關(guān)系中部分和整體具有統(tǒng)一的生存期。一旦整體對(duì)象不存在,部分對(duì)象也將不存在,部分對(duì)象與整體對(duì)象之間具有同生共死的關(guān)系。在組合關(guān)系中,成員類(lèi)是整體類(lèi)的一部分,而且整體類(lèi)可以控制成員類(lèi)的生命周期,即成員類(lèi)的存在依賴(lài)于整體類(lèi)。在UML中,組合關(guān)系用帶實(shí)心菱形的直線(xiàn)表示

溫馨提示

  • 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)論