当前位置: 首页 > 知识库问答 >
问题:

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

劳昊明
2023-03-14

好吧,所以我有点困惑,当我试图在UML图中显示关系时,什么时候应该向类添加属性,什么时候应该向类绘制关联。

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

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

本文试图回答这个问题,但当他开始谈论他画的图表时,我就感到困惑了。

共有1个答案

岳朝
2023-03-14

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

多年来,我一直在与不同的建模团队合作,我发现最有效的规则是使用类的关联和数据类型的属性。数据类型是一种特殊的分类器,类似于类。它与类的不同之处在于,数据类型的实例仅由其值标识。

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

使用关系而不是属性可以做的另一件事是显示双向关系(您可以使用关系的每个类中的一个属性来实现这一点,但您会丢失关系的语义)。

 类似资料:
  • 问题内容: 我熟悉Java,但是刚开始学习JavaFX,尤其是学习JavaFX属性。我了解Oracle的以下示例所示的基本设计模式: 我不明白的是什么时候/为什么要使用getter和setter方法,而不是直接使用Property? 我在想的是,您可能希望在getter和/或setter中有一些自定义代码,这些代码可能对数据做一些前后操作/验证,但是如果您创建自定义getter和/或setter,

  • 我有两个问题要问。所以我们假设有一个类a和B,它们的定义如下。 1. 所以类A与变量b有组合关系,与变量其他B有聚合关系。我如何在UML图中画这个。 2.以下情况是否仍然是复合关系?

  • 问题内容: 定义抽象实例属性而不是属性的最佳实践是什么? 我想写一些像: 代替: 属性很方便,但是对于不需要计算的简单属性来说,这太过分了。这对于将由用户进行子类化和实现的抽象类尤为重要(我不想强迫某人只可以在中编写代码来使用它)。 Python问题中的抽象属性仅建议使用和的答案:它不能回答我的问题。 通过抽象类属性的ActiveState配方可能是正确的方法,但是我不确定。它也仅适用于类属性,不

  • 我在Stackoverflow上看到了很多解释关系区别的帖子:关联、聚合、组合和继承,并附有例子。然而,更具体地说,我对每种方法的优点和缺点,以及什么时候一种方法对手头的任务最有效感到困惑。这是我一直无法找到一个好答案的事情。 为了与论坛的指导方针保持一致,我没有问为什么人们个人更喜欢使用继承而不是组合。我特别感兴趣的是每种方法中的任何客观优点/缺点,尽管听起来很强。一、 e.一种方法是创建比另一

  • 因此,我对UML图中的关联、聚合和组合有一些疑问。以下是一些场景: > 产品评审对产品评审的评级组成。这意味着对于每一个产品评审等级必须有产品评审?如果产品评审不存在,评审评级就没有意义。 客户NRIC协助推车和订货。我们不能使用聚合,因为如果客户不存在,购物车和订单也不存在。 有人能帮我检查一下我的关系是否正确吗?因为我对聚合和关联有点困惑,所以用关联来链接所有的表是好的吗。我不知道什么时候该用

  • 问题内容: 我有一个使用SA的 association_proxy 建模 的多对多 (开发人员和项目)关系。集合(每个项目的开发人员和每个开发人员的项目)工作正常,但我需要过滤关联本身的属性(状态)。像这样的东西(不起作用): __ 我想念什么?这是完整的测试代码: 问题答案: 关联代理的使用方法: