我们需要在我们的 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的含义略有不同)。
我已经使用套接字编程创建了一个简单的 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 classesimplement
it and do notextend
it, you should use a dashed line to show that it’s the realization of an interface(这是一个依赖关系,与inheritance/generalization的含义略有不同)。