我们需要在我们的 UML class 图中添加接口 Runnable 吗?

Do we need to add interface Runnable in our UML class diagram?

我已经使用套接字编程创建了一个简单的 FlappyBird 克隆游戏,现在我正在绘制 UML 图。 我的 类 实现了 Runnable

喜欢:

static class Flappy implements Runnable{....}

和:

public class Client extends Application implements Runnable{.....}

虽然 user7(以前)接受的答案本身是正确的,但还有一个“视情况而定”。如果您为机器(代码生成器)或编码猴子创建 UML,则必须添加它以使其完整。如果是为了共同(人类)理解,您可以省略这些细节。

附带说明:你的箭头是错误的。这些是扩展(仅用于配置文件定义),而不是实现。一个实现有一个空心三角形和一条虚线。

UML 与方法论无关。所以,这完全取决于你 class diagram:

目的
  • 如果是分析或域模型Runnable 不相关(正如其他答案正确指出的那样)
  • 如果它是设计模型,即解释您的解决方案如何工作的模型,则取决于Runnable与您的设计的相关程度:
    • 如果您的解决方案中没有任何内容需要 Runnable,则无需显示它。
    • 如果 class 期望使用 Runnable 或者如果 class 期望在 component design 的大视图中提供此接口,那么您应该展示一下。
  • 如果它是一个 实施模型 ,即旨在准确记录您的解决方案如何实施的模型,则应记录 Runnable。请注意,使用这种详细的实施模型对学校作业有好处,但对于现实世界的项目来说并不是一个有趣的选择,因为它很难维护并且代码有些冗余,除非您有可以生成图表的逆向工程工具给你。

如果您决定显示关系,则必须重新设计图形布局:

  • 箭头必须替换为generalization. A plain arrow head is ambiguous and could mislead the reader to think that it’s a navigable association的空白三角形(原则上显示为空心箭头,但仍然是箭头)
  • 但是因为 Runnable is an interface, and your classes implement it and do not extend it, you should use a dashed line to show that it’s the realization of an interface(这是一个依赖关系,与inheritance/generalization的含义略有不同)。