uml中的覆盖方法

uml中的覆盖方法,uml,Uml,我正在尝试创建UML图。例如,我有一个包含方法a()的类a和扩展方法a并重写方法a()的类B。是否有任何标准来指示UML中被重写的方法 否,对于重写父类上的操作的操作,没有特定的指示符。 如果签名匹配,它将覆盖父项上的操作 如该答案所示,有一个特定的指标表明成员(例如操作)是继承的,但该指标不是强制性的,规范规定: 分类器继承的成员可以通过在文本表示前面加上插入符号“^”来显示在该分类器的图表上,如果该成员未继承,则会显示该文本表示 因此,有: B不覆盖操作 但有: 我们无法知道,除非我们确

我正在尝试创建UML图。例如,我有一个包含方法a()的类a和扩展方法a并重写方法a()的类B。是否有任何标准来指示UML中被重写的方法

否,对于重写父类上的操作的操作,没有特定的指示符。
如果签名匹配,它将覆盖父项上的操作


如该答案所示,有一个特定的指标表明成员(例如操作)是继承的,但该指标不是强制性的,规范规定:

分类器继承的成员可以通过在文本表示前面加上插入符号“^”来显示在该分类器的图表上,如果该成员未继承,则会显示该文本表示

因此,有:

B不覆盖操作

但有:

我们无法知道,除非我们确定模型中始终使用“^”,如上图所示

[编辑]

请注意,规范在该语句中使用两倍于单词member(而不是properties)的词,并且类继承(间接)分类器,因此这适用于操作

正如在另一个答案中所注意到的,规范还说:

继承的成员也可能以较浅的颜色显示,以帮助区分它们与非继承的**成员*

同样,两次使用成员而不是属性,它们使用的事实也清楚地说明了另一种方式,即^。所以两个一致的句子表示^适用于运算

[警告]


我曾经制作图表,第一次你可以看到“^oper()”,但我“欺骗”了你,在命名相应的操作“^oper”时,没有选项在图表中显示“^”,以指示操作或其他成员被继承。101:

继承的成员也可能以较浅的颜色显示,以帮助区分它们与非继承的成员。一致性实现不需要提供此选项

遗憾的是,我的工具(EA)不支持这一点

最简单的方法是只复制要重写的操作的操作签名。这将清楚地表明你在逃避某些事情

仅通过查看
Class2
无法判断
b
实际上是一个覆盖。然而,如果有人想处理
Class2
,他必须知道它是一个子类,从而知道
b
是一个覆盖


注意:UML2.5规范对于插入符号的使用是模棱两可的。而(第100页)他们说

由分类器继承的成员可以通过在插入符号“^”前加上前缀显示在该分类器的图表上

下面的语法明确地提到了属性和连接器以及本文

类似的符号可用于所有继承了分类器成员的名称删除,以表明它们是继承的


事实上,一个UML操作可以重新定义另一个操作。我暂时结束了这个问题,因为我认为这是一个重复的操作,但这个是关于操作的。不,UML没有本地的方式来表示操作。我认为那句话中的“可能”表示显示继承的成员是可选的。我相信,如果你给他们看,插入符号是强制性的。@GeertBellekens不,对我来说,“ma'y concerns”可以通过在文本表示中加上插入符号“^”来显示在该分类器的图表上,而不仅仅是“显示在该分类器的图表上”。如果我没有错的话,我会在规范的其他地方看到,^没有被使用。我在我的答案中添加了一些关于UML模糊性的文本。让我们就这样吧,喝杯咖啡;-)(删除我的评论)