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

jve*_*len 2 java enums uml associations

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

在此处输入图片说明

数据库中会有很多汽车(Car是一个 JPA 实体),我问自己哪个是FuelKindCarBrand的最佳关联和基数。

到现在为止我的想法:

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

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

Uff*_*ffe 5

你几乎做对了。有向关联是这种情况的正确关系。

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

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

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

至于相反的关系,关联的定向性质意味着关系是单向的。换句话说,按照您已经完成的方式绘制它并不表示从枚举类型返回到类的关系。对于枚举类型,通常不应该存在,就像整数或字符串的这种关系一样。