A. java怎麼理解組合/聚合關系 給個例子 最好能將細點
兄弟,以後到CSDN上提問,中不中
B. 依賴,聚合,組合在java代碼實現中是不是一樣的
在面向對象中,類與類之間的關系有泛化,依賴,關聯,聚合,組合幾種。
其中,聚合和組合都屬於關聯。
在具體編程中:
依賴表現為如果A類依賴於B,則B體現為A的局部變數,方法參數或靜態方法的調用。
eg:
class B{
Static void function1(){};
void function2(){};
}
public class A{
public static void main(String[] args){
....
B.function1();//A類中調用了B類的靜態方法
....
}
}
聚合和組合都屬於關聯,很難區分,但是只要記住一點,區分它們就容易多了:
處於聚合關系的兩個類生命周期不同步,則是聚合關系;處於組合關系的兩個類的生命周期同步;
eg:
聚合關系,當A創建的時候,B不一定創建;當A消亡時,B不一定消亡。
class A{
private B;
}
class B{
....
}
組合關系,當創建一個A對象時,也會創建一個B對象;當A對象消亡時,作為A的屬性的B對象也會消亡。
class A{
private b=new B();
....
}
class B{
....
}
C. java 聚合和組合的區別
聚合(Aggregation)關系是關聯關系的一種,是強的關聯關系。聚合是整體和個體之間的關系。例如,汽車類與引擎類、輪胎類,以及其它的零件類之間的關系便整體和個體的關系。與關聯關系一樣,聚合關系也是通過實例變數實現的。但是關聯關系所涉及的兩個類是處在同一層次上的,而在聚合關系中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分
組合(Composition)關系是關聯關系的一種,是比聚合關系強的關系。它要求普通的聚合關系中代表整體的對象負責代表部分對象的生命周期,組合關系是不能共享的。代表整體的對象需要負責保持部分對象和存活,在一些情況下將負責代表部分的對象湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由後者負責此對象的生命周期。換言之,代表部分的對象在每一個時刻只能與一個對象發生組合關系,由後者排他地負責生命周期。部分和整體的生命周期一樣。
以上關系的耦合度依次增強(關於耦合度的概念將在以後具體討論,這里可以暫時理解為當一個類發生變更時,對其他類造成的影響程度,影響越小則耦合度越弱,影響越大耦合度越強)。由定義我們已經知道,依賴關系實際上是一種比較弱的關聯,聚合是一種比較強的關聯,而組合則是一種更強的關聯,所以籠統的來區分的話,實際上這四種關系、都是關聯關系。
聚合關系是是一種比較強的關聯關系,java中一般使用成員變數形式實現。對象之間存在著整體與部分的關系。例如上例中
classDriver{假如給上面代碼賦予如下語義:車是一輛私家車,是司機財產的一部分。則相同的代碼即表示聚合關系了。聚合關系一般使用setter方法給成員變數賦值。
//使用成員變數形式實現聚合關系
Carmycar;
publicvoiddrive(){
mycar.run();
}
}
publicDriver(Carcar){所以,關聯、聚合、組合只能配合語義,結合上下文才能夠判斷出來,而只給出一段代碼讓我們判斷是關聯,聚合,還是組合關系,則是無法判斷的。
mycar=car;
}
D. java類之間關系中,一般的關聯關系是怎樣的
關聯關系分為兩種:聚合和組合。聚合:舉個例子,學校類是整體,而學生類是部分。學校與學生都是可以獨立存在的,之間沒有什麼必然的聯系。因此學校與學生就是聚合關系。代碼:
public class Student{
}
public class School{
private List<Student> students ; //學校與學生是聚合關系
}
組合:如Windows的窗口和窗口上的菜單就是組合關系。如果整體被銷毀,部分也必須跟著一起被銷毀,如果所有者被復制,部分也必須一起被復制。,代碼:
public class Menu{
}
public class Window{
private List<Menu> menus ;
}
E. JAVA 中集合和組合是一個意思么
composition 是組合,指的是類與類之間的關系,幾種常見的關系有,繼承,組合,關聯,聚合,依賴等...
collections 是集合,是指容器,常見的子類介面有,List,Map。簡單來說,就是用來裝其它東西的,被裝東西可以是基礎類型的數據...
F. Java8聚合操作的使用是怎樣的
聚合操作是Java8針對集合類,使編程更為便利的方式,可以與Lambda表達式一起使用,達到更加簡潔的目的。
對聚合操作的使用可以歸結為3個部分:
數據源部分:通過stream()方法,取得集合對象的數據集。
通過一系列中間(Intermediate)方法,對數據集進行過濾、檢索等數據集的再次處理。如上例中,使用filter()方法來對數據集進行過濾。
通過最終(terminal)方法完成對數據集中元素的處理。如上例中,使用forEach()完成對過濾後元素的列印。
中間方法除了filter()外,還有distinct()、sorted()、map()等等,其一般是對數據集的整理(過濾、排序、匹配、抽取等等),返回值一般也是數據集。
G. java怎麼理解組合/聚合關系給個例子最好能將細點
聚合(Aggregation)關系是關聯關系的一種,是強的關聯關系。聚合是整體和個體之間的關系。例如,汽車類與引擎類、輪胎類,以及其它的零件類之間的關系便整體和個體的關系。與關聯關系一樣,聚合關系也是通過實例變數實現的。但是關聯關系所涉及的兩個類是處在同一層次上的,而在聚合關系中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分。
組合(Composition)關系是關聯關系的一種,是比聚合關系強的關系。它要求普通的聚合關系中代表整體的對象負責代表部分對象的生命周期,組合關系是不能共享的。代表整體的對象需要負責保持部分對象和存活,在一些情況下將負責代表部分的對象湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由後者負責此對象的生命周期。換言之,代表部分的對象在每一個時刻只能與一個對象發生組合關系,由後者排他地負責生命周期。部分和整體的生命周期一樣。
classDriver{
//使用成員變數形式實現關聯
Carmycar;
publicvoiddrive(){
mycar.run();
}
...
//使用方法參數形式實現關聯
publicvoiddrive(Carcar){
car.run();
}
}
聚合關系是是一種比較強的關聯關系,java中一般使用成員變數形式實現。對象之間存在著整體與部分的關系。例如上例中
classDriver{
//使用成員變數形式實現聚合關系
Carmycar;
publicvoiddrive(){
mycar.run();
}
}
假如給上面代碼賦予如下語義:車是一輛私家車,是司機財產的一部分。則相同的代碼即表示聚合關系了。聚合關系一般使用setter方法給成員變數賦值。
假如賦予如下語義:車是司機的必須有的財產,要想成為一個司機必須要先有輛車,車要是沒了,司機也不想活了。而且司機要是不幹司機了,這個車就砸了,別人誰也別想用。那就表示組合關系了。一般來說,為了表示組合關系,常常會使用構造方法來達到初始化的目的,例如上例中,加上一個以Car為參數的構造方法
publicDriver(Carcar){
mycar=car;
}
所以,關聯、聚合、組合只能配合語義,結合上下文才能夠判斷出來,而只給出一段代碼讓我們判斷是關聯,聚合,還是組合關系,則是無法判斷的。
H. 什麼是java聚合工程
聚合就是由很多節點合到一起的一個工程,但是每個節點不能獨立存在。有一個相對的概念叫組合,組合也有很多節點組成,但是它的每個節點可以獨立存在。
I. JAVA中的聚集和組合的區別與聯系
聚合(Aggregation) 關系是關聯關系的一種,是強的關聯關系。聚合是整體和個體之間的關系。例如,汽車類與引擎類、輪胎類,以及其它的零件類之間的關系便整體和個體的關系。與關聯關系一樣,聚合關系也是通過實例變數實現的。但是關聯關系所涉及的兩個類是處在同一層次上的,而在聚合關系中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分
組合(Composition) 關系是關聯關系的一種,是比聚合關系強的關系。它要求普通的聚合關系中代表整體的對象負責代表部分對象的生命周期,組合關系是不能共享的。代表整體的對象需要負責保持部分對象和存活,在一些情況下將負責代表部分的對象湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由後者負責此對象的生命周期。換言之,代表部分的對象在每一個時刻只能與一個對象發生組合關系,由後者排他地負責生命周期。部分和整體的生命周期一樣。
以上關系的耦合度依次增強(關於耦合度的概念將在以後具體討論,這里可以暫時理解為當一個類發生變更時,對其他類造成的影響程度,影響越小則耦合度越弱,影響越大耦合度越強)。由定義我們已經知道,依賴關系實際上是一種比較弱的關聯,聚合是一種比較強的關聯,而組合則是一種更強的關聯,所以籠統的來區分的話,實際上這四種關系、都是關聯關系。
聚合關系是是一種比較強的關聯關系,java中一般使用成員變數形式實現。對象之間存在著整體與部分的關系。例如上例中
<pre t="code" l="java">class Driver {
//使用成員變數形式實現聚合關系
Car mycar;
public void drive(){
mycar.run();
}
}假如給上面代碼賦予如下語義:車是一輛私家車,是司機財產的一部分。則相同的代碼即表示聚合關系了。聚合關系一般使用setter方法給成員變數賦值。
假如賦予如下語義:車是司機的必須有的財產,要想成為一個司機必須要先有輛車,車要是沒了,司機也不想活了。而且司機要是不幹司機了,這個車就砸了,別人誰也別想用。那就表示組合關系了。一般來說,為了表示組合關系,常常會使用構造方法來達到初始化的目的,例如上例中,加上一個以Car為參數的構造方法 <pre t="code" l="java">public Driver(Car car){
mycar = car;
}所以,關聯、聚合、組合只能配合語義,結合上下文才能夠判斷出來,而只給出一段代碼讓我們判斷是關聯,聚合,還是組合關系,則是無法判斷的。</ol>