【问题标题】:UML class diagram with back-references带有反向引用的 UML 类图
【发布时间】:2018-07-25 21:12:04
【问题描述】:

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

首先,这是类图:

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

所以我的问题是:

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

【问题讨论】:

    标签: python oop uml aggregation class-diagram


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 非常感谢您的有用回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 2020-09-28
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多