我该如何实施评估“类别”

问题描述 投票:1回答:1

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

enter image description here

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

我现在在标题中有这个,它是该图所寻找的吗?

class Valuation{

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

};
c++ uml
1个回答
0
投票

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

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

即,将Valuation定义为特定映射的别名。基于“合理”的设计,我希望这一行可以在VariableElementIntElement的公共父类中使用,可能作为受保护的typedef。但是,我在图中没有看到任何建议。

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

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


0
投票

让我们看看UML 2.5规范怎么说。

9.2.4.1分类器 ((p。99)] >>

分类器的默认符号是一个实线轮廓矩形,其中包含分类器的名称,并在名称下方用水平线分隔各个分隔间。分类器的名称应以粗体居中。对于区分大写和小写字符的语言,分类器名称应以大写字符开头。

我在UML规范中找不到任何将名称限制为任何给定的(unicode)字符集的地方。可能是因为您需要另一本书。因此,我们可以从上面得到的是

Valuation = std::map<char,int>

是与例如相同的标识符

wiec8736b(/&& 3l?!blurb

将是(奇怪的)标识符。但是绝不会是某个运算符子句,您可以在其中将字符=解释为赋值或相等。

tl; dr

这是垃圾。去问一下作者是什么意思。告诉他使用评论和易于理解的文字描述,或使用有效的UML表示法。
© www.soinside.com 2019 - 2024. All rights reserved.