在类图中表示HashMap

时间:2016-04-25 05:06:30

标签: dictionary hashmap uml class-diagram

我有一个类图,它有一个字典(用python术语)作为属性。这是基本结构:

serverEntry = { creditCardObj1 : accountBalance1, creditCardobj2 : accountBalance2, ...}

为了澄清,creditCardObj1是一个类CreditCard的实例,而accountBalance1是一个整数值,类似于字典中的其他条目。

我在Java中读到它,它被称为HashMap。无论如何,我想在我的UML类图中实现它。关于如何做到这一点的任何提示。我正在使用Visio 2007,所以如果有人可以解释这个问题会更有帮助。

3 个答案:

答案 0 :(得分:1)

我不会对此付出太多努力,因为已经选择了另一个答案。该答案并未涵盖UML中与HashMap最接近的内容:限定符。它被绘制为类和关联之间的矩形。矩形内部是名称和类型。这意味着,给定该类型的实例,该关联将在关联的另一端产生一些事物实例。使用多重性指定了该实例数。

出于您的目的,您可以将creditCard: CreditCard放在限定符矩形内,将Integer放在关联的另一端,使用1的多重性。

答案 1 :(得分:0)

我认为这个问题更多的是关于UML而不是编程语言。因此,请允许我使用我觉得更舒服的语言。

C#也称为词典,string例如 HashKey show as Association。幸运的是,Visual Studio中的UML类图(我在这里使用VS 2015的社区版)足够接近代码,因此UML模型基本上是语言的元模型,而图表只是对真实代码的不同视图。

这很方便,因为真正的编程问题 - 就像你要求的那样 - 可以直接在图中解决。 (另外:没有额外的代码生成或获取或维护图表所需的额外解析)。

我喜欢Visual Studio解决这个问题的方式。他们提供两种选择,一种更侧重于技术性(show as Collection Association

enter image description here

是一个更关注域名(Dictionary)的人。

Show as Association

我通常只在我需要图表来强调涉及<dependency> <groupId>org.webjars</groupId> <artifactId>extjs</artifactId> <version>6.0.0</version> </dependency> 类时才使用第一个,在其他情况下,第二个选项是我的首选选项。

答案 2 :(得分:-1)

没有单一的事实,这只是一个设计决定。以下是几种变体:

enter image description here

如果你只是想在你的Python应用程序代码中表示一个哈希,你可以简单地使用右边的简单类,它只是通过它的名称来表示它代表一个哈希。因为你不需要实现哈希(它已经在Python解释器中完成),那就没问题了。

如果要实现Python解释器,则需要显示有关如何执行此操作的详细信息。中间类只使用带有键和对象引用的两个数组。左边的一个使用捆绑在一个单独的类中的键/对象。可能有更多方法来显示哈希实现。