如何在UML中表示Map类成员?

时间:2009-09-14 15:45:50

标签: model map uml diagram

当我有一个带有Map成员的类时,我不想绘制一个单独的类/接口对象来表示Map本身,但我更喜欢将地图视为本机类型,而不是而不是一个复杂的对象。

考虑以下示例

public class IndexManagerImpl implements IndexManager {
    /* ... */

    private static Map<Searcher, Integer> searcherCache;
}

我想强调一个IndexManagerImpl保持(虽然间接)引用Searcher个实例的事实。 如果表示也可以显示searcherCache的类型参数,那将是很好的。

3 个答案:

答案 0 :(得分:2)

不同意马丁...... MAP是我们在任何计算机毕业课程中学到的基本数据结构!它存在于大多数现代语言中,是分析师的重要设计资源。在某些情况下,Map可能会被绘制为关联,但是需要某种扩展(构造型),或者您可以定义模板类。我不喜欢模板方法 - 它隐藏了主要参与者的关联。 最后一个资源是AssociationClass,一个特殊的UML类,用于定义与属性的nxn关系,我认为适合你的问题,“整数”字段是与indexManager相关的搜索者的某种计数器。 还要记住,通过代码,您无法看到关系的另一面,而UML旨在显示双方,导航问题等。

答案 1 :(得分:0)

实际上,集合对象表示两个类之间的一对多关联。 因此,您的图表上应该有一个与Searcher类具有一对多关联的IndexManagerImpl类

答案 2 :(得分:-1)

地图不能被视为集合,因为它们具有与集合不同的属性。实际上,地图是具有特定(映射)关系的多个集合。在我看来,代表地图高度依赖于需求,并且可能有几个地图UML表示基于您的要求。 因此,在简单形式中,可以表示映射关系,与键集元素的一对多关联以及键集元素与值元素的一对一关联。 其中key元素和value元素是原始元素的包装,因为关联实际上不与原始元素相关。

希望这会有所帮助......