2009-07-28 71 views

回答

1
   MyServer 
       | 
       | 
       | 
       Map 
       | 
       | | 
       | | 
    MyClientTypeKey MyClientType 

岂不是像上面很简单?

  • 的MyServer有一对一assoication与地图
  • 地图上有1个与键和值都许多联想。
+1

这也是我首先想到的,但是感觉这张地图不适合成为一个班级。这只是一种遏制的方法。我不知道,只是觉得不对。 – gooli 2009-07-28 08:50:46

+0

但是,只是说,直接与MyServer关联的键和类型类并不显示它们的相关性。 Map是一个容器,但也显示了键和类型之间的关系。 – Mark 2009-07-28 09:21:38

7

我只是在MyClient端显示MyServer与MyClient之间的关联,其重合度为0 .. *。其他一切都是实现细节,可以留给程序员。

+0

这是两个正确答案之一。另一个是@Kru。 – 2014-03-04 01:48:29

1

首先,我和其他一些人认为,UML应该包含一些基本的集合类型,就像它在一些早期版本中那样。他们可以采取例如从OCL ...

的“EMF办法”似乎是正确的,但它给恕我直言,过分重视类型,这是真的不重要恕我直言,所以我只是模型作为一个关联类。这将使您能够捕获所有可以使用常规类捕获的地图特定约束(例如多重性),但不会使该类与其他类一样重要。

23

您可以使用一个合格的关联关系:

┌──────────┐    1 ┌───────┐ 
│ MyServer │Key│───────────│ Value │ 
└──────────┘    └───────┘ 

参见:http://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Qualified+Associations/(因为它是很难用ASCII绘制)

还要注意的是合格的关联变化的多样性:

┌──────────┐   0..* ┌───────┐ 
│ MyServer │───────────────│ Value │ 
└──────────┘    └───────┘ 

┌──────────┐    1 ┌───────┐ 
│ MyServer │Key│───────────│ Value │ 
└──────────┘    └───────┘ 

顶部显示了从服务器到0-n值的关联。相比之下,合格的关联表示任何给定的键只与一个值相关联,并且您不能将键设为缺少值。

1

克鲁的答案是最好的,但它仍然只暗示一个地图。

我认为这取决于您的图表所在的抽象级别。如果它比较高,我会用黑猩猩的回应。如果是比较低的,你真的需要显示在地图,故意展示实施有关的细节,我会用下面去:

  MyServer 
       | 
       | 
       Map     
       | 
       |* 
      T1toT2 
      / \ 
      1/  \1 
     Key  Value 

如何地图,然后在代码实现的是完全不相关(T1toT2运行 - 时间对象可能实际上并不会)。

正如Gabreil提到的,这可能是也可以使用关联类

  MyServer 
       | 
       | 
       Map     
       | 
       |* 
      T1toT2 
       | 
       | 
      1--------1 
     Key  Value 

当然建模是唯一的问题,如果你真的真的需要显示或指定的地图。