下面我的例子可以是UML中的依赖或组合吗?

时间:2014-12-23 19:29:02

标签: dependencies uml composition

我对UML中的compositon / agregation / dependency有疑问。

  1. 我有服务类AssociateDetailsS​​ervice。在这个AssociateDetailsS​​ervice类中,我正在创建DAO实例,如下所示。
  2. AssociateDAO assDAO = new AssociateDAO(); 所以,既然我正在创建新的实例,这是一个组合关系吗? 在这里,我不确定DAO是否属于服务类。

    1. 我有单吨级的ConnectionFactory。在DAO中,我得到了单吨实例。我可以在这里使用依赖或组合吗?
    2. 在DAO中获取单例实例 ConnectionFactory如下。

      Connection con = ConnectionFactory.getInstance()。getConnection();

      请你澄清一下

      提前致谢

2 个答案:

答案 0 :(得分:1)

在这种情况下,我们相信“依赖”。

enter image description here

我们假设这些模型没有Instances作为属性。但如果他们这样做,使用“关联”将是一种普遍的方式(而不是“依赖”)。 我相信从DAO到ConnectorFactory的关系不应该是“组合”至少根据下面的规范(你可能已经阅读过了 - UML Superstructure Specification, v2.4.1的第36页


AggregationKind是以下文字值的枚举:

表示该属性没有聚合。

  • 共享

表示该属性具有共享聚合。

  • 复合

表示属性是复合聚合的,即复合对象负责组合对象(部件)的存在和存储。

语义变异点

共享聚合的精确语义因应用程序区域和建模者而异。未定义创建零件实例的顺序和方式。


答案 1 :(得分:0)

关于如何将代码转换为UML(或其他方式)没有严格的规则,但总的来说我认为:

  • 如果您的A类具有B类型的属性,那么肯定存在关联。这应该是一个组合,聚合还是仅仅是一个简单的关联取决于实际所需的行为,甚至是关联的功能意义。 (如果你想了解更多关于这一点的话,我在我的网站上写了一篇关于这些差异的article
  • 如果您的A类在执行某个方法期间仅实例化B类型的变量,那么您可能有依赖关系。