2012-04-24 65 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