提问人:Gameriker 提问时间:12/20/2021 最后编辑:ChristopheGameriker 更新时间:12/20/2021 访问量:315
我应该把删除的成员函数放在 uml 类图中吗?
Should I put deleted member function in uml class diagram?
问:
我是否应该将删除的方法或成员函数放在 UML 类图中,例如对于这样的类:
class ProfilometerManager
{
int a = 6;
public:
ProfilometerManager(ProfilometerManager& other) = delete; //can not be cloneable
ProfilometerManager& operator=(const ProfilometerManager&) = delete; // can not be assignable
};
答:
1赞
Christophe
12/20/2021
#1
UML 表示法不支持此表示法。UML 规范定义了一种语法,用于属性的默认值,但不用于操作(成员函数)。对于大多数读者来说,类图中操作后面的后缀 = delete
在语法上是不正确的和令人困惑的,即使 C++ 从业者会理解它。因此,您不应该使用这样的表示法(如果将其视为实现细节,则更不应该使用)。=
UML 没有内置的方式来表示没有操作的方式,就像在 C++ 中一样:如果一个操作没有显示在 UML 图上,它可能意味着它不存在,或者它存在,但与图的目的无关。=delete
在这方面,如果删除对您的设计至关重要:
如果对您的设计来说重要的不是删除单个成员函数,而是它们对类的影响(例如 正如 Pepijn Kramer 的评论所建议的那样),你可以更好地用临时的阶级刻板印象来表达这一点。这将更具表现力,您可以将设计映射到实现规则,而不会迷失在太多细节中。«not copiable»
评论
1赞
Axel Scheithauer
12/21/2021
完美的答案。我还有一个建议:您可以重新定义操作并将其设为私有。
评论