UML 图上数组的表示数组

Representation array of arrays on UML diagram

如何在 UML 图上表示指向指向其他数组(作为矩阵)的指针数组的指针?

class C
{
  int Matrix[3][3];
  ...
}

一些想法

UML 基本上与语言无关。多维数组只是特定于语言的 a) 完全具有符号和 b) 语法。为了安全起见,您不应显示此类详细信息。

总之,有时候你需要展示给他们看。如果是这样,您需要知道您的模型不再像它应该的那样独立于实现细节。建模人员通常将业务需求转化为编码人员可以理解的形式。而编码人员只知道如何实现这些细节。相信你的编码器,不要在短线上使用 him/her。如果你不能相信他们,你就完蛋了。


综上所述,如果您仍想将数组显示为二维,您可以这样做:

UML 本身不支持符号(只有集合是一维的)。但如果它出于任何原因对你和编码人员有帮助,我不会介意。

UML 工具是否支持上述内容取决于。使用 EA 我需要将数据类型定义为 int[3] 并将多重性设置为 3.

确实,要详细说明什么 and Bruno already answered, the standard UML data types are very limited and a properties 最多只能具有一维多重性。

对于特定于编程语言的类型,我们通常包括(通常是隐含地)profile to extend the meta-model with additional data types. This is ok for the missing types and template-type。但不幸的是,它并不真正适用于将多重性转换为数组维度。

这里有两个选项:

  1. 务实: 假设您可以通过假设的配置文件在 UML 中使用 C++ 类型系统。

    • 优点:书写简洁;大多数人会明白你的意思。
    • 不便之处:不符合规格:如果您必须根据合同交付合规型号,您最好考虑下一个选项。
  2. 合法:进一步抽象你的设计,不要被你自己的实现决定所困。矩阵不再是二维数组,而是将一对坐标映射到整数的 ditionary/map 。这是在 UML 中通过限定符上的 qualified association. In this understanding, the dimensions of the array would be expressed as constraints 完成的。

    • 优点:完全合规;表现力;一个更强大的设计,因为它不会强迫你使用多维数组,但也允许你使用用 std::map<std::pair<size_t,size_t>,int>
    • 实现的稀疏矩阵
    • 不方便:阅读起来不太直观

从图形的角度来看,它可能类似于以下之一: