类图中的HashMap(UML)

时间:2012-01-15 08:34:40

标签: java hash hashmap uml

我为我的Java应用程序构建了UML 2.0类图。在我的代码中,我有HashMap数据类型的属性。但是,据我所知,UML标准中没有HashMap数据类型。问题是 - 我可以使用HashMap作为类的属性的数据类型吗?

更新

也许在图表中我应该指向java.util包?并且可能将Map类放在图上的这个包中?

4 个答案:

答案 0 :(得分:3)

无论如何,HashMap不应该出现在你的UML模型中。 HashMap只是一个合格关联的实现。可能它甚至只是速度提高了不合格的关联。因此,如果你有一个带有HashMap的A类,你可以建模一个UML A类,一个UML B类和一个从A到B的UML关联。如果它由一个非属性的键限定,就可以为该关联添加一个限定符。 B.如果您的HashMap键是B的名称(并且B将该名称作为属性),则只需省略限定符。

要表示您的关联的实现(您希望使用HashSet实现它),您可以将其添加为关键字或为其创建一个Stereotype(更复杂)。

答案 1 :(得分:1)

只需在UML中使用普通类,并将其命名为HashMap。 UML与语言无关,不了解Java的预定义类。或者我误解了你的问题?

答案 2 :(得分:0)

HashMap只是众多java类中的一种 您可以在UML 2.0类中使用任何java类,接口或基本类型 UML 2.0 java类图中的任何数据类型都对应于某些java类,接口或原语。

您正在使用UML图来开发自己的应用程序。因此,请随意扩展UML 2.0标准以方便您使用。没有人可以责怪你。

答案 3 :(得分:0)

HashMap可能是该概念的Java名称,但每种编程语言都有某种Hash<>Map<>类,并且UML中应包含等效的东西,因为许多模型包含Hash或Map容器属性。

有些工具支持<<map>>刻板印象;如果你有这个我会使用它,如果你主要关注视觉直觉 - 但不可能说暗示了什么样的键。

合格的关联图形UML设备是非直观的,我怀疑工具很难转换为正向代码生成中的任何合理的东西。我会避免它。

另一种方法(我通常这样做)如下:

  • 使用V和K作为通用参数创建一个Hash类。要正确地做到这一点,K应该真的受到诸如'Ordered'这样的类的限制,也缺少UML(我们总是添加这个)
  • 用于Hash的每次使用,例如Hash<Thing, String>(小心顺序 - 我首先使用值,键秒),创建一个名为Hash<Thing,String>的UML类和与Hash<>的传出关系,然后将V和K映射到实际参数ThingString
  • 然后在想要使用它的类中,定义一个属性,例如things类型为Hash<Thing,String>类型。
例如, MagicDraw支持此功能。

这样做的缺点是您不会在客户端类和值类型(我的示例中为Thing)之间看到关联链接。好处是,如果您将模型作为程序员规范发布,这就是我们所做的,程序员会在类表中看到正确的内容,您可以在this example - translation_details attribute中看到。

在UML中执行此基本任务的难度只是UML的众多问题之一,以及为什么我今天遇到的大多数开发人员除了用于白板或文档上的图片之外不使用它。