如何在 UML class 图中使用众所周知的 classes 和接口

How to go with well-known classes and interfaces in an UML class diagram

鉴于我有两个 Java classes FooBar,并且 Bar 有一个 getFoos() 方法 returns一个List<Foo>.

在 Java 中,所有 class 扩展父 class ObjectList 是扩展接口 Collection 的接口,后者又扩展了 Iterable。所有这些都由 Java 核心提供,不需要编程。但是,它们具有可以使用或覆盖的方法。可能需要了解接口层次结构,例如采用 Iterable<Foo> 的方法将接受 List<Foo>.

在 UML 中根据这些绘制 class 图时,如何处理众所周知的 classes (Object) 和接口 (List,及其超级接口 CollectionIterable)?我是否也必须将它们绘制到图表中?我可以完全跳过它们吗?这些是否有一个特殊的符号(云对我来说感觉很棒)?应该限定的不常见 classes 怎么样(即如果它是 java.awt.List 而不是 java.util.List)?

UML 不与任何语言挂钩,JDK 类.

规范中没有任何内容

很多工具都提供了一个已经定义了 JDK 类 的配置文件。

因此,如果您获得类似 "import profile" 的菜单并查看哪些配置文件可用,则必须查看您的工具。

其他两个解决方案可能是:

  • 在您的模型中定义您需要JDK类的最小集合

  • 正在尝试编写 java 程序来生成 JDK 类 的 XMI。理论上没那么复杂,但是 JDK 包括 JNI 类 不能使用内省。

您选择如何处理众所周知的 classes 将取决于您计划如何使用 UML class 图。

如果创建 UML 图的主要目的是向团队传达设计细节,我会选择 not,包括众所周知的 classes(不是仅来自 JDK 以及在您的上下文中众所周知的 classes)。原因是您希望您的信息有重点。添加这些众所周知的 classes 会很快使您的图表变得混乱,而不会向您的消息中添加任何内容。出于同样的原因,我通常排除 getters/setters 和任何对理解设计无关紧要的信息。对于不知名的 classes,我将包括它们,因为它们传达的信息对于团队来说不容易获得。

如果您的 class 图将在 MDA 中使用,即将用于生成系统实现,那么您必须包括众所周知的 classes。