【问题标题】:Why do we need to use association(multiplicity) in class diagrams?为什么我们需要在类图中使用关联(多重性)?
【发布时间】:2015-08-31 17:39:43
【问题描述】:

在我的应用程序中,我一直在使用类图。基本上,我已经为业务逻辑绘制了类图。 Hibernate 用作数据访问层。在大多数类图示例中,我注意到在类图中考虑了关联(多重性)。

我没有看到在类 digarms 中使用关联(多重性)的任何特殊原因,因为我们无法在类中实现它。谁能解释为什么我们需要关联一个例子?

【问题讨论】:

  • 您为什么不想看到您的课程在视觉上是如何连接的?!请记住,UML 中未指定的多重性意味着 1..1。如果您像关系数据库那样对单向关系进行建模,那么您将把问题域丢给解决方案域。

标签: class uml


【解决方案1】:

(二进制)关联和属性在 UML 中或多或少是相同的东西。您可以选择使用关联或属性进行建模,或者将两者混合使用。

当属性的类型是 DataType 时,我经常使用属性,而当另一端的类型是“常规”类时,我经常使用关联。我在我的网站上记录了这个最佳实践:UML Best Practice: Attribute or Association

使用关联的优点是它以更直观的方式显示关系,使关系通常比使用属性更明显。

【讨论】:

  • 是的,但我们没有实现关联(多重性)。唯一的地方,我可以假设使用 (multiplicity) 是在数据访问层而不是在业务层。
  • 当然可以。关联通常使用属性来实现。您可以在业务对象上实现额外的约束,例如多重性作为验证方法,或者您可以将其留给数据库。
  • 我不会说二进制关联和属性是一回事。关联本质上是将反向属性捆绑在一起形成一个整洁的捆绑包。
  • @JimL。这就是为什么我说或多或少。有一些差异,但这些可能会让我们走得太远。这里的重点是表明您通常可以使用一个或另一个来表示相同的概念。
  • 我同意,如果您的意思是属性可以是关联的一部分,也可以不是关联的一部分。属性和关联或多或少不是一回事。
【解决方案2】:

如果多重性没有为模型添加有价值的信息,您可以随意省略它。但是,在某些情况下,您希望对显式多重性进行建模,这与您的模板不同。大多数情况下,您会找到0..1(表示可选关系)、0..*(任意数量的关系)和1..*(一个或多个)。例如。对于工作中的人来说,它可能有0..1老板。一个人可能有0..* 孩子。并且应该有1..* 朋友;-)

因此,如您所见,是否要使用多重性取决于域。

【讨论】:

    猜你喜欢
    • 2011-02-21
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 2019-06-09
    • 2020-12-17
    • 2014-06-30
    相关资源
    最近更新 更多