如何解决表示一棵树,其中根只有一个这种特定类型的孩子
我想对一棵树建模,在这种情况下,类 Node
由自身的多个实例组成。
现在如何指示诸如“树的根可以包含任意数量的节点,但只能具有这种特定类型节点的一个实例”之类的约束(特殊节点本身可以包含任何内容
通过下面的图a,我们在两个组合之间存在冲突,我将能够向根添加任意数量的specialElement
,因为它们是treeNodes
。>
我如何表示这个约束?
解决方法
您当前的模型有一个缺陷:root
和 specialElement
都继承了他们社会化的带有 TreeNode
的组合。因此,您在 root
和 specialElement
之间表示的组合被理解为附加组合。
三种简单的方法:
- 基于子集使用 Jim’s excellent answer。但这需要明确记录组合每一端的角色。
- 直观地表明
root
和specialElement
之间的合成是TreeNode
的自反合成的特化(只需添加 generalization arrow on the diagram between the lines representing composition)。 - 删除额外的冗余组合,而是在附加到
root
的注释中添加一个 constraint,例如在纯文本{ can have at most one specialElement child node }
中(但我相信有人会设法在OCL ;-) )
有关更多想法,您还可以查看 UML 中的 this question about covariant associations。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。