UML类图和泛型

45

如何在类图中表示泛型类或接口?

实际上我想知道两件事:

  1. 一是如果我用纸和笔画图,我该如何模拟泛型Java类。
  2. 其次,有哪些uml工具支持泛型类/接口。

谢谢!

7个回答

41
通常泛型表示为分类器的模板参数。以下是NetBeans UML插件中的示例,展示了泛型的外观:

输入图像描述


你可以在哪里获取Netbeans UML插件? - Karthik Ramachandran
2
@Karthik,你可以在这里下载:http://netbeans.org/downloads/zip.html,找到 netbeans-6.9.1-201007282301-ml-uml.zip。 - Vitalii Fedorenko
使用箭头来表示泛型类型构造似乎存在一些问题,因为它与接口实现相比有一些不同的含义。值得注意的是,如果多个类的implements箭头指向同一个接口,这是一个视觉线索,我们可以声明一个可以容纳所有实现类实例的单个该类型的列表。但是,如果implements箭头表示泛型类型构造,则无法说出同样的情况。 - undefined

20

UML将它们称为参数化类型-请参见此处的示例。

至于工具,我知道MagicDraw支持它们。



4
我真正想要的是两件事情:第一,如果我用笔和纸来做,该如何对Java类进行建模。Craig Larman的书《应用UML和模式3e》有讲师幻灯片,其中包含了书中的图表。以下是来自图15.5的内容:enter image description here第二,有哪些UML工具支持通用类/接口。我喜欢PlantUML,它将生成以下图像: produce
skinparam style strictuml
participant sales as "sales:\nArrayList<Sale>"

在此输入图片描述

对于类图,它会生成

skinparam style strictuml
hide empty members
class "ArrayList<Sale>" as S
class Store {
Store()
}
Store "1" -> "1" S : "            sales  "

enter image description here


从FFWD 2019到现在http://plantuml.com/class-diagram--plantUML现在可以进行“适当”的泛型。 - Chef Gladiator

3
一是,如果我用笔和纸进行泛型Java类建模,该怎么做呢?
据我所知,在UML中没有特定的支持,最好的方法可能是使用像<>这样的构造型。但是在纸上用笔写,没有什么比写MYType更简单的了 :-)
二是,有哪些UML工具支持泛型类/接口?
所有我见过的UML工具都支持构造型。当然,支持的程度可能不同;但是,由于我几乎不使用除餐巾纸之外的任何UML工具 :-) ,所以我在这里没有太多的比较基础。

1
UML确实具有对泛型的特定支持,而无需诉诸于构造型。祝好运。 - sfinnie
不用担心,很高兴能帮忙 :-) - sfinnie

0
一个问题是,如果我用笔和纸来建模通用的Java类,该怎么做呢?
这里需要使用泛化箭头、基类,如果是抽象类,则应该用斜体书写。也可以用构造型标记进行标注。
另外,有哪些UML工具支持通用类/接口呢?
可以使用http://staruml.io/。这是一个非常好的工具,你可以在同一个地方管理所有项目图表。在右上角有对象/图表树,所以你可以在不同的图表中使用相同的类(或其他对象)。

0
在Netbeans中,要使用的对象称为“派生分类器”。这是Vitalii Fedorenko答案中用于MyGeneric的对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接