我正在用C++写一个过度设计的矩阵计算器,不知道这意味着什么:
我以前从未在类图中看到过类似Valuation = std::map的框,并且也不知道该查找什么。我将其编写为构造函数还是什么?
为什么即使IntElement明确使用IntElement和Valuation也没有联系?
我现在在标题中有这个,它是图在寻找什么?
class Valuation{
Valuation(std::map<char,int>);
};
最佳答案
很难说这行在没有更多上下文的情况下会走到哪里,但是Valuation
框看起来像是在请求以下行:
using Valuation = std::map<char,int>;
也就是说,将
Valuation
定义为特定 map 的别名。基于“合理的”设计,我希望这一行可以在VariableElement
和IntElement
的公共(public)父类中进行,可能是 protected typedef。但是,我在图中没有发现任何建议。我看不到足够的上下文来猜测为什么从
IntElement
到Valuation
没有“uses”行。在给定IntElement
成员的情况下,VariableElement
和evaluate
在这方面似乎处于平等地位。另一方面,我会质疑为什么现有的线连接到VariableElement
而不是连接到应该定义别名的假设的公共(public)父级。这可能是关系图作者提出的。 (有时人们会犯错误,甚至是教授。)附录:我想到了
IntElement::evaluate
和VariableElement::evaluate
之间的区别。前者可能会忽略其参数,因此,除了类型名称以外,它实际上并没有使用Valuation
。另一方面,后者可能会在 map 中查找条目,因此实现需要Valuation
为完整类型。即使我发现这样的实现细节影响类图是可疑的,但这也是一种动机。