真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼表示聚合關系,聚合關系java代碼實例

JAVA作業(yè)求助。

1、依賴關系,uml圖示為虛線加箭頭 A------B, 是一種使用的關系, 即一個類的實現(xiàn)需要另一個類的協(xié)助。比用常常寫的工具類就是可以被 其他類使用的

創(chuàng)新互聯(lián)是一家專業(yè)提供湯陰企業(yè)網(wǎng)站建設,專注與成都做網(wǎng)站、網(wǎng)站建設、HTML5、小程序制作等業(yè)務。10年已為湯陰眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡公司優(yōu)惠進行中。

代碼示例: 為訂單生成訂單號碼的服務類,使用Math類產(chǎn)生隨機數(shù)

這個時候 OrderService類依賴Math類

OrderService ------ Math

public class OrderService{

public String getOrderNum(){

return Math.random()*1000+"";

}

}

2、關聯(lián)關系,分為聚合、組合、及一般關聯(lián) 。

組合關系 A◆———B 部分和整體之間具有相同的生命周期,當整體消亡后,部分也將消亡。舉例 人體結構中 人體和大腦之間是一種組合關系, 人體亡了大腦也會死 例子有點沉重哈,但是好理解

代碼示例

Body ◆———Brain

public class Body{

private Brain brain;

public Body(){

this.brain = new Brain();

}

public void think(){

brain.think();

}

}

聚合關系 A◇———B 部分與整體之間并沒有相同的生命周期,整體消亡后部分可以獨立存在。 比如汽車和輪胎, 汽車銷毀了 輪胎可以作為配件 運用到其他汽車上,所以是一種聚合關系。

代碼示例:

Car ◆———Tyre

public class Car{

private Tyre tyre;

public Car(Tyre tyre){

this.tyre= tyre;

}

public void run(){

tyre.run();

}

}

一般關聯(lián):是一種結構化的關系,指一種對象和另一種對象有聯(lián)系,給定關聯(lián)的兩個類,可以從其中的一個類的對象訪問到另一個類的相關對象。

解釋上很拗口 不如組合 聚合來的清晰明了。可以和依賴關系作個對比,依賴實際上就是 主類依賴其他類的方法 完成部分邏輯,比如工具類的調(diào)用等, 但是兩個類之間沒有任何聯(lián)系。 而關聯(lián)關系 是存在某種聯(lián)系的 比如學校和老師,老師和學生,學生和課本 等等, 兩個對象之間是存在某種聯(lián)系的。

java示例:

Student ———— Teacher

public class Student{

private Teacher englishTeacher;

public String myEnglishTeacherName(){

return englishTeacher.getName();

}

}

上面的關聯(lián)關系,只是描述了 對象和對象之間的聯(lián)系,并沒有指明關聯(lián)的數(shù)量。 比如一個學生是關聯(lián)多個老師的(語文老師、數(shù)學老師 etc) ,那么這種關聯(lián)是一種1對多的關聯(lián) 等等,先理解基本的然后再深入比較好

從類的代碼表達來看, 關聯(lián)關系(組合、聚合、一般關聯(lián)關系) 都是一個類作為另一個類的成員變量來表示, 依賴關系大部分是 一個類作為另一個類的方法參數(shù),或者直接調(diào)用被依賴類的靜態(tài)方法, 或者直接實例化被依賴類然后調(diào)用其方法 等。

理解好了 依賴和關聯(lián) 包括集成 實現(xiàn) 等關系及 UML圖示后, 對于 代碼的設計將會有很大幫助

Java 聚集 組合

聚合和組合的區(qū)別在于:聚合關系是“has-a”關系,組合關系是“contains-a”關系;聚合關系表示整體與部分的關系比較弱,而組合比較強;聚合關系中代表部分事物的對象與代表聚合事物的對象的生存期無關,一旦刪除了聚合對象不一定就刪除了代表部分事物的對象。組合中一旦刪除了組合對象,同時也就刪除了代表部分事物的對象。

我們用淺顯的例子來說明聚合和組合的區(qū)別?!皣萍彝觥?,國滅了,家自然也沒有了,“國”和“家”顯然也是組合關系。而相反的,計算機和它的外設之間就是聚合關系,因為它們之間的關系相對松散,計算機沒了,外設還可以獨立存在,還可以接在別的計算機上。在聚合關系中,部分可以獨立于聚合而存在,部分的所有權也可以由幾個聚合來共享,比如打印機就可以在辦公室內(nèi)被廣大同事共用。

聚合則一般不是平等的,例如一個公司包含了很多員工,其實現(xiàn)上是差不多的。聚合和組合的區(qū)別則在語義和實現(xiàn)上都有差別,組合的兩個對象之間其生命期有很大的關聯(lián),被組合的對象是在組合對象創(chuàng)建的同時或者創(chuàng)建之后創(chuàng)建,在組合對象銷毀之前銷毀。一般來說被組合對象不能脫離組合對象獨立存在,而且也只能屬于一個組合對象,例如一個文檔的版本,必須依賴于文檔的存在,也只能屬于一個文檔。聚合則不一樣,被聚合的對象可以屬于多個聚合對象,例如一個員工可能可以屬于多個公司。

求解:Java中類和類之間的三種關系用代碼舉例

//依賴最常見的是參數(shù)關系,如:

public class B{

/***B中的一個方法**/

public void testMethod(A a){

//此時B和A是依賴關系

}

}

//聚合關系通常表現(xiàn)為部分與整體的關系,如:

public class B{

/***B中的一個屬性**/

A a;

}

//泛化關系通常表現(xiàn)為繼承關系,如:

public class B extends A{

}

java怎么理解組合/聚合關系給個例子最好能將細點

聚合(Aggregation)?關系是關聯(lián)關系的一種,是強的關聯(lián)關系。聚合是整體和個體之間的關系。例如,汽車類與引擎類、輪胎類,以及其它的零件類之間的關系便整體和個體的關系。與關聯(lián)關系一樣,聚合關系也是通過實例變量實現(xiàn)的。但是關聯(lián)關系所涉及的兩個類是處在同一層次上的,而在聚合關系中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分。?

組合(Composition)?關系是關聯(lián)關系的一種,是比聚合關系強的關系。它要求普通的聚合關系中代表整體的對象負責代表部分對象的生命周期,組合關系是不能共享的。代表整體的對象需要負責保持部分對象和存活,在一些情況下將負責代表部分的對象湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由后者負責此對象的生命周期。換言之,代表部分的對象在每一個時刻只能與一個對象發(fā)生組合關系,由后者排他地負責生命周期。部分和整體的生命周期一樣。

class?Driver?{???

//使用成員變量形式實現(xiàn)關聯(lián)???

Car?mycar;???

public?void?drive(){???

mycar.run();???

}???

...???

//使用方法參數(shù)形式實現(xiàn)關聯(lián)???

public?void?drive(Car?car){???

car.run();???

}???

}

聚合關系是是一種比較強的關聯(lián)關系,java中一般使用成員變量形式實現(xiàn)。對象之間存在著整體與部分的關系。例如上例中

class?Driver?{???

//使用成員變量形式實現(xiàn)聚合關系???

Car?mycar;???

public?void?drive(){???

mycar.run();???

}???

}

假如給上面代碼賦予如下語義:車是一輛私家車,是司機財產(chǎn)的一部分。則相同的代碼即表示聚合關系了。聚合關系一般使用setter方法給成員變量賦值。?

假如賦予如下語義:車是司機的必須有的財產(chǎn),要想成為一個司機必須要先有輛車,車要是沒了,司機也不想活了。而且司機要是不干司機了,這個車就砸了,別人誰也別想用。那就表示組合關系了。一般來說,為了表示組合關系,常常會使用構造方法來達到初始化的目的,例如上例中,加上一個以Car為參數(shù)的構造方法?

public?Driver(Car?car){???

mycar?=?car;???

}

所以,關聯(lián)、聚合、組合只能配合語義,結合上下文才能夠判斷出來,而只給出一段代碼讓我們判斷是關聯(lián),聚合,還是組合關系,則是無法判斷的。


網(wǎng)站名稱:java代碼表示聚合關系,聚合關系java代碼實例
本文URL:http://weahome.cn/article/hdpjsp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部