在 UML Class 图中建模与 Java 枚举的关联
Modelling associations to Java Enums in UML Class diagrams
我对在 UML Class 图中使用 Java 枚举感到困惑。
目前,我正在为一个包含具有某些属性的 Car class 的系统建模。有些也是枚举,就像 FuelKind 或 CarBrand:
数据库中会有很多汽车(Car 是一个 JPA 实体),我问自己哪个是 [= 的最佳关联和基数23=]FuelKind 和 CarBrand.
到目前为止我的想法:
- Enum 实例是自己实例化的,因此从技术上讲它们不依赖于 Car。同样从技术上讲,这些枚举包含所有可用的 'choices',因此没有严格的依赖性。所以不能是他们之间的Composition Aggregation。
- 一个Car有一个CarBrand和一个FuelKind。但从另一方面来说:一个品牌或燃料种类是一车还是多车?从逻辑上讲,多辆汽车可以来自梅赛德斯或使用汽油行驶。但从技术上讲,枚举实例没有 link 到一辆或多辆汽车。
对于如何解决这个问题,您有什么建议和想法吗?
你几乎做对了。定向关联是这种情况的正确关系。
要阐明关联指的是 class 中的特定属性,请使用目标角色。这在连接器的枚举端(不是 class 端)显示为带有属性名称 (fuelKind) 的文本标签。
如果您有两个相同枚举类型的属性,则必须绘制两个单独的关联。
但是,由于您在属性中使用了类型名称,因此实际上根本不需要绘制任何关系。但如果这样做,与目标角色的定向关联在语义上等同于命名属性中的类型。选择哪一个是风格问题,如果有助于澄清事情,你可以两者都做。
至于另一种关系,关联的定向性质意味着关系是单向的。换句话说,按照您完成的方式绘制它并不表示从枚举类型返回 class 的关系。对于枚举类型,通常不应该存在这种关系,就像整数或字符串不存在这种关系一样。
这是不正确的。枚举是一种数据类型,而不是 class。所以你只需将它分配给你在 Car class 中的属性。您可以使用依赖项指示您在 class.
中使用特定枚举
我对在 UML Class 图中使用 Java 枚举感到困惑。 目前,我正在为一个包含具有某些属性的 Car class 的系统建模。有些也是枚举,就像 FuelKind 或 CarBrand:
数据库中会有很多汽车(Car 是一个 JPA 实体),我问自己哪个是 [= 的最佳关联和基数23=]FuelKind 和 CarBrand.
到目前为止我的想法:
- Enum 实例是自己实例化的,因此从技术上讲它们不依赖于 Car。同样从技术上讲,这些枚举包含所有可用的 'choices',因此没有严格的依赖性。所以不能是他们之间的Composition Aggregation。
- 一个Car有一个CarBrand和一个FuelKind。但从另一方面来说:一个品牌或燃料种类是一车还是多车?从逻辑上讲,多辆汽车可以来自梅赛德斯或使用汽油行驶。但从技术上讲,枚举实例没有 link 到一辆或多辆汽车。
对于如何解决这个问题,您有什么建议和想法吗?
你几乎做对了。定向关联是这种情况的正确关系。
要阐明关联指的是 class 中的特定属性,请使用目标角色。这在连接器的枚举端(不是 class 端)显示为带有属性名称 (fuelKind) 的文本标签。
如果您有两个相同枚举类型的属性,则必须绘制两个单独的关联。
但是,由于您在属性中使用了类型名称,因此实际上根本不需要绘制任何关系。但如果这样做,与目标角色的定向关联在语义上等同于命名属性中的类型。选择哪一个是风格问题,如果有助于澄清事情,你可以两者都做。
至于另一种关系,关联的定向性质意味着关系是单向的。换句话说,按照您完成的方式绘制它并不表示从枚举类型返回 class 的关系。对于枚举类型,通常不应该存在这种关系,就像整数或字符串不存在这种关系一样。
这是不正确的。枚举是一种数据类型,而不是 class。所以你只需将它分配给你在 Car class 中的属性。您可以使用依赖项指示您在 class.
中使用特定枚举