2013-02-02 227 views
1

我想问您对以下情况:UML和约束和关联/聚集

有一类名为A.它包含了(聚集)两班(B和C),但他们并没有从相同的基类继承而来。 是否可以将B和C关联到A,并使用带有{或}的约束,但在A的一侧只有一个引用? 其他解决方案可以使用接口(Iface),所以我可以将A与Iface关联,B和C可以实现Iface。 但问题是,我可以使用约束吗? (正如我发现的,将B和C关联到A意味着A将包含B的引用,而C包含另一个引用)。

谢谢

费伦茨

+0

你处理什么级别的类图?你提到A'将包含一个引用',这意味着你正在生成代码 - 如果是的话,你想要什么类型的引用B | C是? –

+0

嗨皮特!我问过这个问题是因为我认为如果我将B和C关联到A,B和C没有相同的基类,那么A将包含2个属性/引用/属性,而不仅仅是一个。如果这是真的,那么我不能像我描述的那样使用约束来简化图,但是我必须使用由B和C实现的接口,或者我需要从像Eoin图那样的基类继承B和C.或者我错了? –

回答

0

我想你问的是你是否可以模拟具有单一关联关系的对象,可以是B或C类的是吗?

在这种情况下,你不需要约束,刚刚从关联到一个新的类(称之为“d”),然后B和C会从d继承,像这样:

enter image description here

这当然意味着您必须确定B和C的共同特征,以将因子分解为D以允许可替代性。而A只能依靠B和C的那些功能。

如果您需要A与B或C建立常规关联并且无法使用继承,那么您需要与您拥有的{或}约束单独关联正确识别。

+0

嗨Eoin!对不起,也许这是误解。让我们看看你的例子:有一个类名A.我想将类C和类B关联到类A,并且我希望在类A中只看到一个字段。但是B类和C类没有相同的基类。我可以用A和B之间以及A和C之间的关联来显示它,并使用关联的{或}约束吗? –

+0

在A中只有一个字段用于引用两种可能的类型对我来说没有多大意义。在编程语言中这样做的方法是引用Object类型(所有其他类的基类),然后可以通过该引用引用任何对象。但是,除非您将引用强制转换为特定的类型(它实际上是围绕类型系统工作的),否则不能对该对象引用做任何特定的操作。 – Eoin

+0

你能否更具体地解释你想要建模的内容以及为什么只需要一个参考? – Eoin