UML:组合或依赖
UML: Composition or Dependency
我有 2 个 类 Job
和 Task
。这些是规则:
- 每个
Job
都有一个数字标识符。
- 每个
Job
有10个对应的Task
。
- 每个
Task
都有一个数字标识符。
Task
不能没有 Job
。
我正在尝试为这 2 个 类 构建 Class 图。由于 Task
不能没有 Job
所以我认为这是一个 组合 这就是我构建 Class 图的方式:
但现在我很困惑,如果这个关联实际上是依赖关系:
在这种情况下,我如何知道关系是 组合 还是 依赖关系?
更新
我已经按照 Thomas Kilian 的建议在 Class 图中修复了 组合(复合聚合):
依赖是元素之间最弱的关系。这意味着如果所依赖的元素发生变化,则需要对依赖元素进行某种关注。例如。如果包含关联的 类.
,则 类 或包之间可能存在对枚举或概念阶段的依赖性
复合聚合首先是两个元素之间的强关系(关联)。这是两者之一也以某种方式与另一方合作(使用属性或方法)。此外,复合聚合还提供了有关对象生命周期的信息。一旦组合元素被移除,正在组合的元素就会消亡。这仅仅是用于数据安全的构造,例如如果此人被删除,您需要删除个人记录(car/wheels 示例似乎没有多大意义,因为一旦汽车撞毁,车轮仍然可用)。另一个用途可能是(现在更少)存储管理。
两个旁注:
您的绘图是错误的,因为填充的钻石必须附着在形状的外部而不是内部。
共享聚合(空心菱形)没有定义的语义,只有在特定域中为特定用途定义它后才应使用。见第2.5.1 specs 的 112:
Indicates that the Property has shared aggregation semantics. Precise semantics of shared aggregation varies by application area and modeler.
我有 2 个 类 Job
和 Task
。这些是规则:
- 每个
Job
都有一个数字标识符。 - 每个
Job
有10个对应的Task
。 - 每个
Task
都有一个数字标识符。 Task
不能没有Job
。
我正在尝试为这 2 个 类 构建 Class 图。由于 Task
不能没有 Job
所以我认为这是一个 组合 这就是我构建 Class 图的方式:
但现在我很困惑,如果这个关联实际上是依赖关系:
在这种情况下,我如何知道关系是 组合 还是 依赖关系?
更新
我已经按照 Thomas Kilian 的建议在 Class 图中修复了 组合(复合聚合):
依赖是元素之间最弱的关系。这意味着如果所依赖的元素发生变化,则需要对依赖元素进行某种关注。例如。如果包含关联的 类.
,则 类 或包之间可能存在对枚举或概念阶段的依赖性复合聚合首先是两个元素之间的强关系(关联)。这是两者之一也以某种方式与另一方合作(使用属性或方法)。此外,复合聚合还提供了有关对象生命周期的信息。一旦组合元素被移除,正在组合的元素就会消亡。这仅仅是用于数据安全的构造,例如如果此人被删除,您需要删除个人记录(car/wheels 示例似乎没有多大意义,因为一旦汽车撞毁,车轮仍然可用)。另一个用途可能是(现在更少)存储管理。
两个旁注:
您的绘图是错误的,因为填充的钻石必须附着在形状的外部而不是内部。
共享聚合(空心菱形)没有定义的语义,只有在特定域中为特定用途定义它后才应使用。见第2.5.1 specs 的 112:
Indicates that the Property has shared aggregation semantics. Precise semantics of shared aggregation varies by application area and modeler.