【问题标题】:Uml class diagram alternative of map attributemap属性的uml类图替代
【发布时间】:2018-03-06 12:37:27
【问题描述】:

通过搜索发现,在UML中,聚合(假设使用得当)可以用来表示类中的属性。

例如,

(假设列可以独立)

那么,使用这样的例子,如果我想用 map 替换属性:Column[] 来表示列的名称,使用如下所示的关联类是否正确? (以防万一,我不愿意将Column类中的列名作为属性)

【问题讨论】:

    标签: uml class-diagram


    【解决方案1】:

    关联类与简单关联一起使用。它们具有 m-1-1-n 多重性。共享聚合(如您所使用的)没有定义的语义(我建议您不要使用它,除非您有特定于域并记录在案的用途)。最好将预期的多重性放在关联的任一侧。

    关联类连接两个类,添加属性和/或操作。您的示例是“非常规的”,因为表/列具有不需要关联类的简单关系。一个普遍的例子是学生/讲座关系,您可以在其中放置一个关联类来记录考试结果、时间等。

    【讨论】:

      【解决方案2】:

      是的,我认为这是一种有效的建模方式,即您拥有某种可用于识别此Table 中的Column 的密钥字符串。

      使用Map 是众多可能实现中的一种,因此它不是真正的等于

      使用关联类建模的优点是您的模型保持在更抽象的功能级别,并省略了实现细节。

      顺便说一句。对于TableColumn 之间的关联,我会使用composition 而不是aggregation,因为两者之间存在明显的强所有权关系和生命周期依赖性。两个。

      【讨论】:

        【解决方案3】:

        如果您想用 map 替换属性 Column[] 来表示列的名称,并且您不愿意将列名称作为属性放在 Column 类中并假设您想精确地遵循 UML specification 那么您'将产生如下所示的模型:

        Map<Key, Value> 通常被理解为一个关联容器,其中包含具有唯一键的键值对Map.Entry<Key, Value>。容器由从Map<Key, Value>Map.Entry<Key, Value> 的定向聚合建模。

        Map<Key, Value>Map.Entry<Key, Value>模板。 UML 规范第 7.3.3.1 条规定:

        模板不能以与非模板元素相同的方式使用。模板元素只能用于生成绑定元素或作为另一个模板规范的一部分。

        根据第 7.3.3.3 条:

        TemplateBinding 是 TemplateableElement 和模板之间的关系,它指定 actual ParameterableElements 替换模板的 formal TemplateParameters。

        因此,我们有两个绑定元素,它们与其模板具有 TemplateBinding(由 关键字标记)关系:

        • ColumnNames 本质上是 Map<String, Column> 的名称
        • ColumnName 本质上是 Map.Entry<String, Column 的名称

        根据 UML 规范的第 11.5.1 条:

        关联对一组表示类型化实例之间链接的元组进行分类。 AssociationClass 既是关联又是类。

        ColumnName 是 AssociationClass,表示 StringColumn 类的实例之间的链接。我们使用第 11.5.5 节中的符号,图 11.35 来表示。

        最后,TableColumnNames 类之间的方向组合关联告诉我们Table 的每个实例都拥有一个ColumnNames 实例,即一组列名。

        请注意,虽然ColumnNamesColumName 类通常通过实现对最终用户隐藏,但它们仍然存在。

        我用BoUML来画图。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-10-25
          • 2021-06-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多