带反向引用的 UML class 图

UML class diagram with back-references

我已经为我的 Python 项目创建了一个 UML class 图,但我没有这方面的经验(而且我不是专业程序员)。

首先,这里是 class 图:

中心对象或根对象是 Simulation 对象,没有它其他任何东西都不存在。许多对象都有对模拟对象的反向引用,例如 Atoms 或 Cell。 xml_hanlder 是 xml 形式的输入数据。许多对象有一个直接向后引用到这个原始的 xml-inputdata,例如 Atoms 和 Cell。当然,他们也可以通过 Simulation 对象访问 xml_handler-object,因为他们有对它的引用。

所以我的问题是:

  1. 我是否在 UML 图表中正确地建模了反向引用?
  2. 拥有这样的反向引用是不是一种糟糕的编码风格,因为它们并不是真正需要的?它使 UML 图变得混乱。
  3. 实际上我的图表中还有更多对象也有对 xml_handler 的反向引用,但我没有包括它以避免太多混乱。可以将它们排除在外吗(图表仍然正确)?
  4. Constraints 对象具有对 Simulation 对象的反向引用,我是否已将其正确建模为聚合关系?
  5. 您还有其他建议或意见吗?

和往常一样,这取决于您的建模对象。

如果您正在为域建模,您可能应该完全排除数据处理程序。反向引用也无关紧要,可以忽略。

如果您正在记录您的代码,同时显示数据处理程序和反向引用就很好,因为它们也是由系统操纵的元素。

如果您有直接关系,反向引用将是向后导航。由于它是间接的,您可能希望将 xml 中包含的所有元素显示为共享聚合,其中 xml-handler 是主端(带有菱形)。在两端将其标记为派生(使用斜线)。标记从对象到包含它的处理程序的可导航性。

如果您只想显示引用而不考虑被包含的实际情况,请使用简单关联而不是共享聚合。您还应该将其标记为派生。

这同样适用于约束和模拟之间的反向引用。