假设我有2个具有关联关系的类。
将属性添加到其中一个类并使用属性添加关联类之间有什么区别?
我知道关联类描述了关联关系,但我不能使用简单的类属性吗? 关联类的附加值是什么?
答案 0 :(得分:3)
关联和属性实际上是同一事物的不同渲染。差异更具有一点深奥的本质。关联在视觉上比属性更暴露。因此,如果属性具有更多的本地重要性,则可以使用该属性,而不是在关联的情况下使用更多系统范围。
你不应该做的就是同时使用两者。使用关联时,您需要为其命名,然后使用角色和关联,不要将其作为属性重复。
关联类(AC)实际上是类和关联的组合(在UML中它从两者继承)。这样,两个类之间的纯关系本身就可以有方法和属性。如果要将两个类与M-N关系相关联,则使用关联类。例如。 Student
和Exam
之间的AC描述了学生在考试中取得的成绩。所以你有一个1-M AC N-1类关系,而不是将这些信息作为数组属性放在相反的类中。
作为旁注(因为您将其标记为EA):EA提供了从类的属性中提供的角色下拉。你不应该利用它。这是对定义的一些遗产和/或误解。如上所述:它没有错,但风格也不好。
答案 1 :(得分:2)
你说你已经有两个类,它们之间有关联。在这种情况下,将属性添加到这两个类之一并将关联更改为具有自己属性的关联类之间存在巨大差异。它们完全不相似。
我认为您的部分问题还在于何时使用关联以及何时使用属性。 UML规范没有提供任何指导。但是,通常的做法是对没有标识的类型使用 only 属性,例如数字“5”,字符串“Hello”或“7”与枚举字面值的组合“英镑”。在UML中,这些类型称为基元和数据类型。如果您想要通过其中一个输入的属性,请使用属性;否则,使用与命名关联结束的关联。