使用接口时的UML聚合

时间:2008-09-18 15:43:14

标签: interface uml aggregate

如何在UML中表示两个类之间的聚合关系,这样每个类都有一个指向另一个类接口的链接,而不是实现类?

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

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

2 个答案:

答案 0 :(得分:1)

你能否拥有Foo(实现)聚合iBar(接口)?在我看来,这是描述这种关系的正确方法。

这样的事情:

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

答案 1 :(得分:1)

接口不可实例化,因此Bar不能具有iFoo类型的属性,并且Foo不能具有iBar类型的属性。

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