【问题标题】:Association Class vs. Attribute关联类与属性
【发布时间】:2016-01-17 09:34:20
【问题描述】:

假设我有 2 个具有关联关系的类。

向其中一个类添加属性与添加具有属性的关联类有什么区别?

我知道关联类描述了关联关系,但我不能用简单的类属性代替吗?
关联类有什么附加价值?

【问题讨论】:

  • 您的意思是关联吗?关联类就更不一样了!
  • @JimL.,我的意思是关联类。提前致谢!

标签: attributes uml relationship enterprise-architect model-associations


【解决方案1】:

关联和属性实际上是同一事物的不同渲染。区别更多的是深奥的性质。关联比属性更直观。因此,如果它具有更局部的重要性而不是在关联的情况下具有更广泛的系统范围,那么您将使用该属性。

你不应该做的是同时使用两者。使用关联时,您需要为其命名,然后将角色与关联一起使用,不要将其作为属性重复。

关联类 (AC) 实际上是类和关联的组合(在 UML 中它继承自两者)。这样,两个类之间的纯关系本身就可以具有方法和属性。如果要将两个类与 M-N 关系相关联,则使用关联类。例如。 StudentExam 之间的 AC 描述了学生在考试中取得的成绩。所以你有一个 Class 1-M AC N-1 Class 关系,而不是把这个信息作为数组属性放在任何一个相对的类中。

附带说明(因为您将其标记为 EA):EA 提供了从类属性提供的角色下拉列表。你不应该利用它。这是对定义的一些遗产和/或误解。正如所说:它没有错,但也不是很好的风格。

【讨论】:

  • 谢谢。能否请您稍微扩展您的答案,以便我理解有关“关联类”的解释?
  • 见我的补充。可以吗?
【解决方案2】:

你说你已经有两个类,它们之间有关联。在这种情况下,将属性添加到这两个类之一与将关联更改为具有自己属性的关联类之间存在巨大差异。它们一点也不相似。

  1. 未命名的属性已存在于关联的每一端,并由它们的相邻类键入。添加冗余属性是不必要的,而且是不正确的。
  2. 关联类允许您记录有关其他两个类的实例之间的链接的附加事实,例如链接出现的时间点。关联类就像数据库中的associative entities

我认为您的部分问题还在于何时使用关联与何时使用属性。 UML 规范对此没有提供任何指导。但是,通常的做法是only 对没有标识的类型使用属性,例如数字“5”、字符串“Hello”或“7”与枚举字面量的组合“磅”。在 UML 中,这些类型称为原语和数据类型。如果您想要其中一个类型的属性,请使用属性;否则,使用具有命名关联端的关联。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2016-10-09
    • 2013-04-13
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多