在uml中覆盖方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在uml中覆盖方法相关的知识,希望对你有一定的参考价值。
我正试图创建UML图,例如,我有一个带有方法a()的类A和扩展A并覆盖方法a()的类B。例如,我有一个带有方法a()的类A和扩展A并覆盖方法a()的类B。在UML中是否有任何标准来表示被覆盖的方法?
正如该答案中所指出的 https:/stackoverflow.coma289324822458991。 有一个特定的指标来表示一个成员(例如一个操作)是被继承的,但这个指标不是强制性的,规范说...。
成员 继承的 分类器 可 在该分类器的图上显示,方法是在文字表示前加上一个"^"符号,如果是在 成员 并非遗传。
所以,有了.B
B不会覆盖 操作
但是有了.的情况下,我们就无法知道,除非我们确定在模型中总是使用^,如前图所示。
我们无法知道,除非我们确定在模型中总是使用^,就像前面的图一样。
[编辑]
注意规范使用了两次词 成员 (而不是 属性)中,而 级别 继承 分类器所以,这适用于操作。
正如在另一个答案中所注意到的那样,规范也说。
继承的 成员 可 还 以浅色显示,以帮助区别于非继承的**成员。
所以又是两次 成员 而非 属性以及他们使用 还 清楚地提到还有另一种方式,那就是^。所以 两种 表示^适用于操作的一致句子
[警告]
我用的是 BoUML 来做图,在第一个图中,你可以看到"^oper()",但我 "作弊 "地把相应的操作命名为"^oper",在图中没有显示^的选项来表示一个操作或其他成员是继承的。
不,对于覆盖父类上的操作,没有特定的指标。如果签名匹配,就会覆盖父类上的操作。
规范在第101页上说。
继承的成员也可以用浅色显示,以帮助区分它们和非继承的成员。一个符合规范的实现不需要提供这个选项。
遗憾的是,我的工具(EA)并不支持这个功能。
最简单的方法是只复制那些你要覆盖的操作的操作签名。这样就可以清楚地知道你要覆盖的东西。
只需查看 Class2
无从得知 b
实际上是一个覆盖。但是,如果有人想处理 Class2
他 必须 知道它是一个子类--因此会知晓 b
是一个覆盖。
注: UML 2.5 规范对 caret 的使用是模糊的。虽然(在第100页)他们说
在分类器的图上,可以通过在前面加一个'^'符号来显示由分类器继承的成员......。
下面的句法只解释了属性和连接器,这段话是
类似的符号可以用于所有属于分类器的inheritedMembers的NamedElements,以表示它们是继承的。
以上是关于在uml中覆盖方法的主要内容,如果未能解决你的问题,请参考以下文章