我为我的Java应用程序构建了UML 2.0类图。在我的代码中,我有一个HashMap数据类型的属性。但是,据我所知,UML标准中没有HashMap数据类型。问题是 - 我可以将HashMap用作类的属性数据类型吗?
更新
也许在图表中我只需要指向java.util包?并且可能在图表中将Map类放置在此包中?
HashMap是Java中的概念名称,但每种编程语言都有一些类似于Hash<>或Map<>的东西,因为许多模型包括Hash或Map容器属性,所以应该在UML中包含相应的内容。
一些工具支持<<map>>类型;如果您主要关心视觉直观性,我建议使用它 - 但无法确定所暗示的键的类型。
合格的关联图形UML设备不直观,我怀疑很难将其转换为任何有意义的前向代码生成。我会避免使用它。
另一种方法(通常我使用的方法)如下:
Hash<Thing, String>(注意顺序 - 我首先使用值,然后使用键),创建一个名为Hash<Thing,String>的UML类,并与Hash<>建立出站关系,然后将V和K映射到实际参数Thing和Stringthings,其类型为Hash<Thing,String>类型。例如,MagicDraw支持此功能。
这样做的缺点是您将看不到客户端类和值类型(例如我的示例中的Thing)之间的关联链接。好处是,如果您将模型发布为程序员规范(这就是我们所做的),程序员可以在类表中看到正确的内容,如this example- translation_details attribute。在UML中执行此基本任务的困难只是UML的众多问题之一,这也是为什么我今天遇到的大多数开发人员除了在白板或文档上绘制图片外,不再使用它的原因。
在UML中,只需使用普通类并将其命名为HashMap。UML是与语言无关的,并不知道Java预定义的类。或者我误解了你的问题?
HashMap只是众多Java类之一。
您可以在UML 2.0类图中使用任何Java类、接口或原始类型。
UML 2.0 Java类图中的任何数据类型都对应于某个Java类、接口或原始类型。
您正在使用UML图来开发自己的应用程序。因此,随意扩展UML 2.0标准以方便您自己使用。没有人会责怪您这样做。
HashMap数据类型。它应该具有Map<Foo, Bar>数据类型。 - JB Nizet