2012-04-24 64 views

回答

-2

只要您使用關聯,最好避免使用EMF。

+0

爲什麼?這個不清楚,請你詳細說明 – TheCyberXP 2012-04-25 09:40:00

+1

關聯屬性應該由目標分類器擁有,並保存爲UML2中的一個屬性。只要你不能用EMF定義完整的UML關聯屬性,那麼這是無用的。 EMF是面向Java代碼的,在Java中,聚合和組合之間沒有區別。只有在模型或圖形層面上才能看到它。希望這個幫助:-) – 2012-04-25 14:02:47

0

我記得,這是可能的......我沒有插件了...

看看HERE,部分3.2。創建Ecore圖

+0

這不是我所需要的,我的問題是關於EMF中不同類型的關係,它似乎只有3個:簡單的關係(EReferences,Composition(containment),inheritances),我正在尋找如何進行聚合。但是,無論如何感謝你;) – TheCyberXP 2012-04-24 11:54:10

+0

我認爲,當'EReference.containment = True'時,引用被認爲是Composition‖任何父對象在子對象中具有包含引用(EMF元模型中的containment = true)管理生命週期那個孩子「 否則它將被視爲聚合。 – M3HD1 2012-04-24 12:24:59

+0

第一部分是確定的,但你的「其他」部分沒有:)它將被認爲是一個簡單的關係。這就是爲什麼我要問如何進行彙總 – TheCyberXP 2012-04-24 12:28:21

3

這是真的,EMF中只有組合關係嗎?

的種類。在EMF中定義關聯的唯一方法是使用EReference(實際上,它們中的一對是精確的 - 每個方向一個)。 EReference有一個'Containment'標誌。它在生成期間由EMF使用:例如,在生成的EMF編輯器中,containment=true允許您創建引用類型的子節點。如果不是,你只能參考他們。

但是:更相關的問題是:你是什麼意思的聚合與組成? UML中的聚合非常鬆散,每個人都有自己的解釋。

也許你可以說更多關於你想用Aggregation vs Composition來表達的規則嗎?

hth。

+0

好吧,我將解釋我的問題一種例子。假設我們有3個模型:房間,牆壁,椅子。關係{房間,牆壁}是一種構圖關係(牆壁不能在沒有房間的情況下「居住」),但關係{房間,椅子}是我們可以單獨實例化房間和椅子的集合體,而我沒有找到如何在EMF中表達這種關係。在UML中,它由空白/白色菱形表示,但組成由黑暗/完整菱形表示。明白了嗎? – TheCyberXP 2012-04-24 11:46:29

+1

確定有幫助。然後兩件事。 (1)我真的不認爲你需要聚合。你有一個簡單的二元關係。 UML中的聚合是一件大事 - 語義非常薄弱,它在實踐中不會爲直接二進制提供價值。所以這導致點(2):只是使用一個「EReference」,包含設置爲{房間,主席}爲假。心連心。 – sfinnie 2012-04-24 13:18:41