在uml中给一些属性赋予特定的值

问题描述 投票:0回答:2

关于car和wheel的经典聚合例子。一辆车有 4 个轮子,轮子属于一辆车 :

     1     4
Car <>------ Wheel

现在,车轮可以是标准轮胎,也可以是雪地轮胎。

在保持一个车轮等级的约束下(例如,没有派生

snowWheel
),我如何建模汽车必须有 2 个雪地轮胎和 2 个标准轮胎?

编辑:编辑删除“强制”布尔属性

uml class-diagram
2个回答
3
投票

你必须给关联附加一个约束。这可以简单地写成附加注释,在大括号中包含文本,如

{must have this and that sort of tyres}
。这也可以用 OCL 编写,但我对此不是很坚定,仍然认为它更多的是学术水平而不是实践水平。

当然,您可以使用不同的轮胎专业化和使用泛化子集来扩展您的模型。取决于您的需求。


3
投票

您可以为此使用复合结构图。 这是来自 UML 规范的示例,图 11.5:

假设类 Wheel 有一个布尔属性 hasSnowTyre,你可以在 Car 的内部结构中建模两个部分:

  • standard : Wheel [2] { hasSnowTyre = false }
  • 雪地轮胎:车轮 [2] { hasSnowTyre = true }

或者,您可以用两个组合替换组合,如下所示:

xor
约束确保 Wheel 的实例只能是标准或雪地,不能两者都是。

© www.soinside.com 2019 - 2024. All rights reserved.