㈠ java中的組合與聚合,區別。。。詳細點
組成就是強聚合,比如班級和學生間的關系應該是聚合,學生和學號的關系就應該是組成
班級、學生都是有獨立意義的對象,但是學號要是沒有學生就沒什麼意義了
組成要求整體和組成部分共存亡,他們的生命期相同,誰也離不開誰。
圖上的時候聚合貌似是空心的零菱形,組成是實心的。
㈡ java中 消息,結構和聚合的概念
結構:就是類
聚合:就是類之間引用咯
消息:就是參數
㈢ java聚合怎麼使用,詳細點的。。。謝謝
組合和聚合是有很大區別的,這個區別不是在形式上,而是在本質上:
比如類中包含B類的一個引用b,當A類的一個對象消亡時,b這個引用所指向的對象也同時消亡(沒有任何一個引用指向它,成了垃圾對象),這種情況叫做組合,
反之b所指向的對象還會有另外的引用指向它,這種情況叫聚合。
在實際寫代碼時組合方式一般會這樣寫:
A類的構造方法里創建B類的對象,也就是說,當A類的一個對象產生時,B類的對象隨之產生,當A類的這個對象消亡時,它所包含的B類的對象也隨之消亡。
聚合方式則是這樣:
A類的對象在創建時不會立即創建B類的對象,而是等待一個外界的對象傳給它
傳給它的這個對象不是A類創建的。
現實生活中:
人和人和手,腳是組合關系,因為當人死亡後人的手也就不復存在了。
人和他的電腦是聚合關系。
class Hand{ }
class Computer{ }
組合:
class Person{
private Hand hand;
public Person(){
hand = new Hand();
}
}
聚合:
class Person{
private Computer computer;
public setComputer(){
computer = new Computer();
}
}
㈣ java 里聚合到底什麼意思啊和類比有什麼好處和壞處啊望高手指點。急急急!!!
通過RSS把數據整合到一起。確實提供了很多方便。
不知道是不是自己太沒有覺悟,沒有用sourceforge上面的源碼,自己用dom寫了一個rss的讀取器,代碼列在下面吧。
package rssweb;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.CharacterData;
/**
*
Title: RSS頁面顯示bean
*
*
Description: 通過調用該bean,實現在jsp中解析rss並在頁面中顯示
*
*
Copyright: Copyright (c) 2005
*
*
Company: ui studio
*
* @author uijiang
* @version 1.0
*/
public class ShowRSS {
//PreTitle存儲RSS channel項目下的title名
public String PreTitle;
//itemList存儲RSS的item項目下的title名
public String[] itemList;
//linkList存儲RSS的的item項目下的link名
public String[] linkList;
//pubDateList存儲RSS的的item項目下的pubDate名
public String[] pubDateList;
//descriptionList存儲RSS的的item項目下的description名
public String[] descriptionList;
//itemCount記錄讀取出來的項目數
public int itemCount;
//不帶參數的構造函數,不對各成員初始化,返回null
public ShowRSS() {
}
//將RSS地址以destination傳入,實現讀取操作,並為各成員變數賦值。
public ShowRSS(String destination) {
try {
//DOM初始化
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.
newInstance();
DocumentBuilder documentBuilder = dbFactory.newDocumentBuilder();
Document document = documentBuilder.parse(destination);
//得出item數量
NodeList nodelistCount = document.getElementsByTagName("item");
itemCount = nodelistCount.getLength();
//初始化各成員數組
itemList = new String[itemCount];
linkList = new String[itemCount];
pubDateList = new String[itemCount];
descriptionList = new String[itemCount];
//賦值計數
int _count = 0;
//獲取title並為各成員變數賦值
NodeList nodelistTitle = document.getElementsByTagName("title");
for (int i = 0; i < nodelistTitle.getLength(); i++) {
Node node = nodelistTitle.item(i);
if (node.getParentNode().getNodeName().trim() == "channel") {
PreTitle = ((CharacterData) node.getFirstChild()).getData();
}
if (node.getParentNode().getNodeName().trim() == "item") {
itemList[_count++] = ((CharacterData) node.getFirstChild()).
getData();
}
}
//賦值計數
_count = 0;
//獲取link並為各成員變數賦值
NodeList nodelistLink = document.getElementsByTagName("link");
for (int i = 0; i < nodelistLink.getLength(); i++) {
Node node = nodelistLink.item(i);
if (node.getParentNode().getNodeName().trim() == "item") {
linkList[_count++] = ((CharacterData) node.getFirstChild()).
getData();
}
}
//賦值計數
_count = 0;
//獲取pubDataList並為各成員變數賦值
NodeList nodelistpubDate = document.getElementsByTagName("pubDate");
for (int i = 0; i < nodelistpubDate.getLength(); i++) {
Node node = nodelistpubDate.item(i);
if (node.getParentNode().getNodeName().trim() == "item") {
pubDateList[_count++] = ((CharacterData) node.getFirstChild()).
getData();
}
}
//賦值計數
_count = 0;
//獲取pubDataList並為各成員變數賦值
NodeList nodelistDescription = document.getElementsByTagName(
"description");
for (int i = 0; i < nodelistDescription.getLength(); i++) {
Node node = nodelistDescription.item(i);
if (node.getParentNode().getNodeName().trim() == "item") {
descriptionList[_count++] = ((CharacterData) node.
getFirstChild()).
getData();
}
}
} catch (Exception e) {
}
}
}
㈤ java組合和聚合的區別和聯系
聚合(Aggregation)關系是關聯關系的一種,是強的關聯關系。聚合是整體和個體之間的關系。例如,汽車類與引擎類、輪胎類,以及其它的零件類之間的關系便整體和個體的關系。與關聯關系一樣,聚合關系也是通過實例變數實現的。但是關聯關系所涉及的兩個類是處在同一層次上的,而在聚合關系中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分
組合(Composition)關系是關聯關系的一種,是比聚合關系強的關系。它要求普通的聚合關系中代表整體的對象負責代表部分對象的生命周期,組合關系是不能共享的。代表整體的對象需要負責保持部分對象和存活,在一些情況下將負責代表部分的對象湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由後者負責此對象的生命周期。換言之,代表部分的對象在每一個時刻只能與一個對象發生組合關系,由後者排他地負責生命周期。部分和整體的生命周期一樣。
以上關系的耦合度依次增強(關於耦合度的概念將在以後具體討論,這里可以暫時理解為當一個類發生變更時,對其他類造成的影響程度,影響越小則耦合度越弱,影響越大耦合度越強)。由定義我們已經知道,依賴關系實際上是一種比較弱的關聯,聚合是一種比較強的關聯,而組合則是一種更強的關聯,所以籠統的來區分的話,實際上這四種關系、都是關聯關系。
聚合關系是是一種比較強的關聯關系,java中一般使用成員變數形式實現。對象之間存在著整體與部分的關系。例如上例中
classDriver{假如給上面代碼賦予如下語義:車是一輛私家車,是司機財產的一部分。則相同的代碼即表示聚合關系了。聚合關系一般使用setter方法給成員變數賦值。
//使用成員變數形式實現聚合關系
Carmycar;
publicvoiddrive(){
mycar.run();
}
}
publicDriver(Carcar){所以,關聯、聚合、組合只能配合語義,結合上下文才能夠判斷出來,而只給出一段代碼讓我們判斷是關聯,聚合,還是組合關系,則是無法判斷的。
mycar=car;
}
㈥ 什麼是java聚合工程
聚合就是由很多節點合到一起的一個工程,但是每個節點不能獨立存在。有一個相對的概念叫組合,組合也有很多節點組成,但是它的每個節點可以獨立存在。
㈦ java怎麼理解組合/聚合關系 給個例子 最好能將細點
兄弟,以後到CSDN上提問,中不中