【问题标题】:How can I simplify an UML class diagram inheritance notation?如何简化 UML 类图继承表示法?
【发布时间】:2010-11-26 16:23:51
【问题描述】:

我有一个超类,其他 40 个类继承,此时我想简化图表,确切地说是所有继承关系(40 个关系指向单个类)所有这些“箭头”只是使图一塌糊涂,能不能简化一下?

【问题讨论】:

  • 有什么意义?当您在一个图表上有 40 个类时,该图表提供什么价值?什么样的设计有 40 个类继承自一个?
  • 我同意@duffymo,UML 的发明首先是因为他们需要一些标准(和简单)的建模方式,特别是在设计系统的早期阶段(并开始迭代地复杂化) )。总之祝你好运。
  • 第一,感谢您的回答,正如 duffymo 所提到的... 40 个类继承自一个?好吧,一个简单的类具有诸如 LastModification 的时间戳、最后一个用户修改、版本、角色等属性。所以基本上所有其他 40 个类都是需要存储这种信息的参数,这就是为什么所有参数都继承一个简单的类基本信息,也许我会改变问题,我应该最好使用什么样的图表或者这个行为遵循什么样的模式?

标签: class uml diagram simplify


【解决方案1】:

在 UML 规范中没有直接的方法来简化这种情况,但真的有 40 个类可以从一个类继承吗?我认为您可能需要重新考虑您的设计。

一般来说,你可以在类中省略属性和方法,至少这样会更好。

【讨论】:

  • 第一,感谢您的回答,正如 duffymo 所提到的... 40 个类继承自一个?好吧,一个简单的类具有诸如 LastModification 的时间戳、最后一个用户修改、版本、角色等属性。所以基本上所有其他 40 个类都是需要存储这种信息的参数,这就是为什么所有参数都继承一个简单的类基本信息,也许我会改变问题,我应该最好使用什么样的图表或者这个行为遵循什么样的模式?
【解决方案2】:

您是否使用继承来重用代码?我从未遇到过有 40 个子类的情况。无论如何,一个想法是将逻辑相关的类组合成一个单独的包图,然后有包关系。

不过,我想提供一些建议

  1. UML 图是 90 年代的 ;-)。在当前的敏捷世界中,我发现很少使用这些图表
  2. 研究可以对代码进行逆向工程并在需要时创建类和序列图的工具。这有助于您按需可视化应用程序的相关部分
  3. 阅读sub-typing versus sub-classing

【讨论】:

  • 嗯,反转很复杂,就像我使用 hibernate、seam 框架和其他库一样建议!谢谢
  • 只有精通 OOP 设计的人才会喜欢 UML。
【解决方案3】:

这是一个很好的问题,因为我在我的一个项目中遇到了类似的问题。我所做的是减小每个类的大小,以便显示名称。然后,我选择了圆形 + 分层布局,并用鼠标移动了所有这些链接。

结果非常棒。我使用的工具是 EclipseUML Omondo。

【讨论】:

    【解决方案4】:

    我建议如下:

    **

    • 场景 1

    **

    如果您不打算使用该模型进行代码生成

    • 将所有子类放入一个包中。给这个包起一个名字,表明它包含的所有元素/类都继承自特定的超类。例如,如果超类被命名为“SuperFoo”,我会调用包“SuperFoo_SubTypes”
    • 在包中加注说明包中的所有类都继承自超类。

    **

    • 场景 2

    **

    您确实计划从您的模型生成代码:

    选项 1 我可能会建议您照常绘制所有继承关联,然后使用建模工具上的隐藏功能隐藏超类。

    选项 2 使用替代符号来描述继承/泛化,对于每个子类,以斜体字和子类元素的右上角写出超类的名称。此方法在本文中简要说明: http://www.sparxsystems.com/resources/uml2_tutorial/uml2_classdiagram.html 这当然取决于您的建模工具是否支持这种表示法。

    我希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多