【发布时间】:2020-04-13 06:25:08
【问题描述】:
如何在 UML 图上表示指向指向其他数组(作为矩阵)的指针数组的指针?
class C
{
int Matrix[3][3];
...
}
【问题讨论】:
-
fwiw,您的代码 sn-p 中没有指针
-
是的,你只有一个 int 的二维数组
如何在 UML 图上表示指向指向其他数组(作为矩阵)的指针数组的指针?
class C
{
int Matrix[3][3];
...
}
【问题讨论】:
确实,要详细说明qwerty_so 和Bruno 已经回答的内容,standard UML data types 非常有限,properties 最多可以具有一维多重性。
对于特定于编程语言的类型,我们通常包含(通常是隐含的)profile 以使用其他数据类型扩展元模型。这对于缺少的类型和template-type 来说是可以的。但不幸的是,它并不能真正用于将多重性转换为数组维度。
这里有两个选项:
务实:假设您可以通过假设的配置文件在 UML 中使用 C++ 类型系统。
合法:进一步抽象你的设计,不要被你自己的实施决定所束缚。矩阵将不再是二维数组,而是将一对坐标映射到整数的字典/映射。这是在 UML 中使用qualified association 完成的。在这种理解中,数组的维度将在限定符上表示为constraints。
std::map<std::pair<size_t,size_t>,int> 实现的稀疏矩阵 从图形的角度来看,它可能看起来像以下之一:
【讨论】:
一些想法
UML 基本上与语言无关。并且多维数组只是特定于语言的a)完全具有符号和b)其中的语法。为了安全起见,您不应显示此类详细信息。
无论如何,有时您需要展示它们。如果是这样,您需要知道您的模型不再像应有的那样独立于实现细节。建模者通常将业务需求转化为编码人员可以理解的形式。编码人员只知道如何实现这些细节。相信你的编码员,不要让他/她走短线。如果你不能信任他们,你无论如何都注定要失败。
如上所述,您仍然希望将数组显示为二维,您可以这样做:
UML 本身不支持这种表示法(只有集合是一维的)。但如果它出于任何原因对您和编码人员有帮助,我不介意。
UML 工具是否支持上述内容取决于。使用 EA,我需要将数据类型定义为 int[3],并将多重性设置为 3。
【讨论】: