c++ - UML 图上的数组表示数组
问题描述
如何在 UML 图上表示指向指向其他数组(作为矩阵)的指针数组的指针?
class C
{
int Matrix[3][3];
...
}
解决方案
实际上,为了详细说明qwerty_so和Bruno已经回答的问题,标准 UML 数据类型非常有限,并且属性最多可以具有一维多重性。
对于特定于编程语言的类型,我们通常包括(通常是隐式地)一个 配置文件,以使用其他数据类型扩展元模型。这对于缺少的类型和模板类型是可以的。但不幸的是,它并不能真正用于将多重性转换为数组维度。
这里有两个选项:
务实:假设您可以通过假设配置文件在 UML 中使用 C++ 类型系统。
- 优点:简明的符号;大多数人都会明白你的意思。
- 不便:不符合规格:如果您必须以合同方式交付合规型号,则最好查看下一个选项。
合法:进一步抽象你的设计,不要被你自己的实现决定所困扰。矩阵将不再是二维数组,而是将一对坐标映射到整数的字典/映射。这是在 UML 中通过一个合格的关联完成的。在这种理解中,数组的维度将表示为对限定符的约束。
- 优点:完全合规;富有表现力;一个更强大的设计,因为它不会强迫您使用多维数组,而是允许您使用一个用 a 实现的稀疏矩阵
std::map<std::pair<size_t,size_t>,int>
- 不便之处:阅读不太直观
- 优点:完全合规;富有表现力;一个更强大的设计,因为它不会强迫您使用多维数组,而是允许您使用一个用 a 实现的稀疏矩阵
从图形的角度来看,它可能看起来像以下之一:
推荐阅读
- asp.net - Soap 标头异常意外元素
- node.js - 批准节点js中的支付网关集成
- r - 在R中按变量扩展列但保留原始变量?
- jquery - Shabuninil FileUp 和进度条(未定义 Var 事件)
- javascript - 是否有任何浏览器原生的 360 旋转查看器?
- spring-boot - SpringBatch:如果一行大于我的最后一个范围,如何不出错?
- powershell - 从 PowerShell 中的哈希映射中获取字符串
- python - 如何使用 python 中的 semopy 包获得标准化的因子载荷?
- javascript - 字符串的处理
- git - Git:如何为给定的存储库设置非标准的私有 SSH 密钥路径