attributes - 绘制 UML 时何时使用属性(property)而不是关联/聚合/组合

标签 attributes associations relationship uml

好的,所以当我尝试在 UML 图中显示关系时,我对何时应该向类添加属性与绘制与类的关联感到有些困惑。

例如,假设我有一个 DFA 类,其中包含 10 个状态对象,每个状态对象都有一组不同的通向 DFA 中各种状态的路径。我应该绘制从 DFA 到 State 类的组合线,还是只在 DFA 类的属性部分中输入所有 10 个状态。

基本上,我试图弄清楚当 A 类包含(或由)一个或多个 B 类时,我是否应该在它们之间画一条线(聚合、组合、关联依赖等),或者只是将一个作为属性其他。

This article试图回答这个问题,但一旦他开始谈论他画的图表,我就感到困惑。

最佳答案

您指出的文章给出了一个指导方针:

In the years I’ve been working with different modelling teams I’ve found that the rule that works best is to use Associations for Classes and Attributes for DataTypes. A data type is a special kind of classifier, similar to a class. It differs from a class in that instances of a data type are identified only by their value.



我有点同意作者,补充一点:你的类图应该是 可以理解 .如果您的图表中有许多相互交叉的线,则该图表毫无用处。发生这种情况时,您必须尝试找到可以使用属性建模而不会丢失太多视觉信息的关系,并用属性替换它们。

你可以用关系而不是属性做的另一件事是显示双向关系(你可以用关系的每个类中的一个属性来做到这一点,但你失去了关系的语义)。

关于attributes - 绘制 UML 时何时使用属性(property)而不是关联/聚合/组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557758/

相关文章:

c++ - 数据结构对齐

java - REST:使用 URI 或 UUID 引用实体?

Neo4j "RelationshipRecord[22] not in use"错误

iphone - Child 的 child 的反向关系

ruby-on-rails - Rails:belongs_to与has_one

javascript - Parse.com RESTful 一对多请求,相关子项已填充

javascript - Backbone 中的原始属性对象是什么?

c# - DisplayAttribute - 如何设置默认资源?

gcc - "#pragma pack"和 "__attribute__((aligned))"有什么区别

node.js - 来自关联 fooInstance.getBars() 的 sequelize 方法返回错误值