首页 > 解决方案 > UML 图上的数组表示数组

问题描述

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

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

标签: c++arrayspointersuml

解决方案


实际上,为了详细说明qwerty_soBruno已经回答的问题,标准 UML 数据类型非常有限,并且属性最多可以具有一维多重性。

对于特定于编程语言的类型,我们通常包括(通常是隐式地)一个 配置文件,以使用其他数据类型扩展元模型。这对于缺少的类型和模板类型是可以的。但不幸的是,它并不能真正用于将多重性转换为数组维度。

这里有两个选项:

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

    • 优点:简明的符号;大多数人都会明白你的意思。
    • 不便:不符合规格:如果您必须以合同方式交付合规型号,则最好查看下一个选项。
  2. 合法:进一步抽象你的设计,不要被你自己的实现决定所困扰。矩阵将不再是二维数组,而是将一对坐标映射到整数的字典/映射。这是在 UML 中通过一个合格的关联完成的。在这种理解中,数组的维度将表示为对限定符的约束。

    • 优点:完全合规;富有表现力;一个更强大的设计,因为它不会强迫您使用多维数组,而是允许您使用一个用 a 实现的稀疏矩阵std::map<std::pair<size_t,size_t>,int>
    • 不便之处:阅读不太直观

从图形的角度来看,它可能看起来像以下之一:

在此处输入图像描述


推荐阅读