我正在用C++写一个过度设计的矩阵计算器,不知道这意味着什么:

c++ - 我要如何实现一个奇怪的 “class”表示法-LMLPHP

我以前从未在类图中看到过类似Valuation = std::map的框,并且也不知道该查找什么。我将其编写为构造函数还是什么?
为什么即使IntElement明确使用IntElement和Valuation也没有联系?

我现在在标题中有这个,它是图在寻找什么?

class Valuation{

    Valuation(std::map<char,int>);

};

最佳答案

很难说这行在没有更多上下文的情况下会走到哪里,但是Valuation框看起来像是在请求以下行:

using Valuation = std::map<char,int>;

也就是说,将Valuation定义为特定 map 的别名。基于“合理的”设计,我希望这一行可以在VariableElementIntElement的公共(public)父类中进行,可能是 protected typedef。但是,我在图中没有发现任何建议。

我看不到足够的上下文来猜测为什么从IntElementValuation没有“uses”行。在给定IntElement成员的情况下,VariableElementevaluate在这方面似乎处于平等地位。另一方面,我会质疑为什么现有的线连接到VariableElement而不是连接到应该定义别名的假设的公共(public)父级。这可能是关系图作者提出的。 (有时人们会犯错误,甚至是教授。)

附录:我想到了IntElement::evaluateVariableElement::evaluate之间的区别。前者可能会忽略其参数,因此,除了类型名称以外,它实际上并没有使用Valuation。另一方面,后者可能会在 map 中查找条目,因此实现需要Valuation为完整类型。即使我发现这样的实现细节影响类图是可疑的,但这也是一种动机。

09-11 18:53