如何在UML中表示两个类之间的聚合关系,这样每个类都有一个指向另一个类接口的链接,而不是实现类?
E.g。我有一个实现iFoo的类Foo和实现iBar的Bar。 Foo应该有一个类型为iBar的成员变量,而Bar应该有一个iFoo类型的成员变量。
如果我在两个实现类之间创建聚合,那么该成员将是实现类的类型,而不是超类。接口之间的聚合在UML中是无效的(并没有多大意义)。
答案 0 :(得分:1)
你能否拥有Foo(实现)聚合iBar(接口)?在我看来,这是描述这种关系的正确方法。
这样的事情:
----------------- -----------------
| <<interface>> | | <<interface>> |
| iFoo |<> <>| iBar |
----------------- \/ -----------------
^ /\ ^
| / \ |
-----------------/ \-----------------
| Foo | | Bar |
----------------- -----------------
答案 1 :(得分:1)
接口不可实例化,因此Bar不能具有iFoo类型的属性,并且Foo不能具有iBar类型的属性。
你说你不想要Bar和Foo之间的关联。因此,您可以创建一个新类(FooEx)并让该类实现iFoo。然后Bar可以有一个FooEx协会而不是Foo。