在UML类图中建模与Java枚举的关联

时间:2016-04-12 10:29:07

标签: java enums associations uml

我对UML类图中与Java Enums的关联的使用感到困惑。 目前,我正在建模一个包含 Car 类的系统,该类具有一些属性。有些也是枚举,就像 FuelKind CarBrand

enter image description here

数据库中会有很多汽车( Car 是一个JPA实体),我问自己哪个是 FuelKind 和 CarBrand

我的想法直到现在:

  • 枚举实例是自己实例化的,因此从技术上讲,它们不依赖于 Car 。同样非技术上这些枚举包含所有可用的“选择”,因此没有严格的依赖性。所以它不能是它们之间的组合聚合。
  • 一个 Car 有一个 CarBrand 和一个 FuelKind 。但另一方面:一个品牌或燃料类型有一辆车还是多辆车?从逻辑上讲,多辆汽车可以来自梅赛德斯或驾驶汽油。但从技术上讲,枚举实例与一辆或多辆汽车无关。

您对如何解决此问题有一些建议和想法吗?

2 个答案:

答案 0 :(得分:4)

你做得差不多。有针对性的关联是这种情况的正确关系。

为了阐明关联是指类中的特定属性,请使用目标角色。这将显示为文本标签,其中包含连接器枚举末端(类末端)的属性名称(fuelKind)。

如果您有两个相同枚举类型的属性,则必须绘制两个单独的关联。

但是,由于您在属性中使用类型名称,因此根本不需要绘制任何关系。但是,如果这样做,与目标角色的定向关联在语义上等同于命名属性中的类型。您选择的是风格问题,如果它有助于澄清事情,您可以做到这两点。

关于另一种方式的关系,关联的指导性质意味着这种关系是单向的。换句话说,以您完成的方式绘制它并不表示从枚举类型返回到类的关系。对于枚举类型,通常不应该存在整数或字符串的这种关系。

答案 1 :(得分:3)

这不正确。枚举是一种数据类型,而不是类。所以你只需将它分配给Car类中的属性即可。您可以使用依赖关系指示您正在使用类中的特定枚举。

enter image description here