您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何實現(xiàn)UML中關(guān)聯(lián)、組合與聚合等關(guān)系的辨析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
以前學(xué)習(xí)面向?qū)ο蟮臅r候,常聽到介紹對象之間的各種關(guān)系,常見的有關(guān)聯(lián),組合與聚合。
關(guān)聯(lián):
關(guān)聯(lián)是一種最普遍和常見的關(guān)系形式。一般是指一個對象可以發(fā)消息給另外一個對象。典型的實現(xiàn)情況下指某個對象有一個指針或者引用指向一個實體變量,當(dāng)通過方法的參數(shù)來傳遞或者創(chuàng)建本地變量來訪問這種情況也可以稱之為關(guān)聯(lián)。
典型的代碼如下:
class A { private B itemB; }
也可能有如下的形式:
class A { void test(B b) {...} }
籠統(tǒng)的情況下,一般兩個對象的引用,參數(shù)傳遞等形式產(chǎn)生的關(guān)系,我們都可以稱之為關(guān)聯(lián)關(guān)系。
聚合(aggregation):
聚合表示的是一種has-a的關(guān)系,同時,它也是一種整體-部分關(guān)系。它的特點在于,它這個部分的生命周期并不由整體來管理。也就是說,當(dāng)整體這個對象已經(jīng)不存在的時候,部分的對象還是可能繼續(xù)存在的。它的uml圖表示形式如下:
我們用一個空心的箭頭來表示聚合關(guān)系。
籠統(tǒng)的說聲明周期管理還是比較模糊。我們就以如圖的Person和Address類來進一步的解釋。假設(shè)我們要定義這兩個對象,對于每個人來說,他有一個關(guān)聯(lián)的地址。人和地址的關(guān)系是has-a的關(guān)系。但是,我們不能說這個地址是這個人的一個組成部分。同時,我們建立地址對象和人的對象是可以相對獨立存在的。
用代碼來表示的話,典型的代碼樣式如下:
public class Address { . . . } public class Person { private Address address; public Person(Address address) { this.address = address; } . . . }
我們通常通過如下的方式來使用Person對象:
Address address = new Address(); Person person = new Person(address);
或者:
Person person = new Person( new Address() );
我們可以看到,我們是創(chuàng)建了一個獨立的Address對象,然后將這個對象傳入了Person的構(gòu)造函數(shù)。當(dāng)Person對象聲明周期結(jié)束的時候,Address對象如果還有其他指向它的引用,是可能繼續(xù)存在的。也就是說,他們的聲明周期是相對獨立的。
組合(Composition):
當(dāng)理解了聚合的關(guān)系之后,再來看組合的關(guān)系就相對來說要好很多。和聚合比起來,組合是一種更加嚴(yán)格的has-a關(guān)系。它表示一種嚴(yán)格的組成關(guān)系。以汽車和引擎為例子,引擎是汽車的一個組成部分。他們是一種嚴(yán)格的部分組成關(guān)系,因此他們的聲明周期也應(yīng)該是一致的。也就是說引擎的聲明周期是通過汽車對象來管理。
組合的uml圖表示如下:
一般用一個實心的箭頭表示組合。
組合代碼的典型示例如下:
public class Engine { . . . } public class Car { Engine e = new Engine(); ....... }
Engine對象是在Car對象里面創(chuàng)建的,所以在Car對象生命周期結(jié)束的時候,Engine對象的生命周期也同樣結(jié)束了。
上述內(nèi)容就是如何實現(xiàn)UML中關(guān)聯(lián)、組合與聚合等關(guān)系的辨析,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。