2008-09-18 306 views
1

如何表示UML中两个类之间的聚合关系,以便每个类都有指向其他类接口的链接,而不是实现类?使用接口时的UML聚合

E.g.我有一个实现iFoo的Foo类,以及实现iBar的Bar。 Foo应该有一个类型为iBar的成员变量,而Bar应该有一个类型为iFoo的成员变量。

如果我在两个实现类之间创建聚合,那么成员将是实现类的类型,而不是超类。在UML中接口之间的聚合是无效的(并且没有多大意义)。

回答

1

你没有Foo(实现)聚集iBar(接口)吗?这似乎是描述这种关系的正确方法。

因此,像这样:

-----------------  ----------------- 
| <<interface>> |  | <<interface>> | 
|  iFoo  |<> <>|  iBar  | 
----------------- \/ ----------------- 
     ^  /\  ^
     |  /\   | 
-----------------/ \----------------- 
|  Foo  |  |  Bar  | 
-----------------  ----------------- 
+0

它看起来像聚合标记放置在关联的错误末端......除此之外,此图描述了确切需要的内容。 – Yarik 2009-05-24 14:56:07

1

接口没有实例化,所以酒吧不能有型的IFoo的属性,和Foo不能有型的iBar的属性。

你说你不想要Bar和Foo之间的关联。所以你可以创建一个新的类(FooEx)并让该类实现iFoo。然后Bar可以有一个关联到FooEx而不是Foo。