Inheritance 表示一棵树,其中根正好有此特定类型的一个子树
我想对一棵树进行建模,在这种情况下,类Inheritance 表示一棵树,其中根正好有此特定类型的一个子树,inheritance,tree,constraints,uml,class-diagram,Inheritance,Tree,Constraints,Uml,Class Diagram,我想对一棵树进行建模,在这种情况下,类节点由自身的多个实例组成 现在,如何指示一个约束,如“树的根可以包含所需的任意多个节点,但只能有此特定类型节点的一个实例”(特殊节点本身可以包含任何内容) 下面的图a表明,这两个组合之间存在冲突,我将能够添加尽可能多的specialElement作为根元素,因为它们是treeNodes 我如何表示这个约束 您在关联的末尾缺少属性。更具体的属性可以子集更一般的属性,其多重性正好为[1]。您在关联的末尾缺少属性。更具体的属性可以子集更一般的属性,其多重性正好为[
节点
由自身的多个实例组成
现在,如何指示一个约束,如“树的根可以包含所需的任意多个节点,但只能有此特定类型节点的一个实例”(特殊节点本身可以包含任何内容)
下面的图a表明,这两个组合之间存在冲突,我将能够添加尽可能多的specialElement
作为根元素,因为它们是treeNodes
我如何表示这个约束
您在关联的末尾缺少属性。更具体的属性可以子集更一般的属性,其多重性正好为[1]。您在关联的末尾缺少属性。更具体的属性可以子集更一般的属性,其多重性正好为[1].您当前的模型有一个缺陷:
root
和specialElement
都继承了它们所社交的带有TreeNode
的组合。因此,您在root
和specialElement
之间表示的组合被理解为另一个组合
有三种简单的解决方法:
- 使用基于子集的base。但这需要明确地记录组合每一端的角色
- 直观地显示
和根
之间的组合是特殊元素
的自反组合的特化(只需添加)树节点
- 删除额外的冗余组合,改为在附加到
根的注释中添加a,例如在纯文本
(但我相信有人会设法在OCL中正式表达这一点;-){最多可以有一个specialElement子节点}
有关更多想法,您还可以查看UML。您当前的模型有一个缺陷:
root
和specialElement
都继承了它们专用的TreeNode
组合。因此,您在root
和specialElement
之间表示的组合被理解为另一个组合
有三种简单的解决方法:
- 使用基于子集的方法。但这需要明确地记录组合每一端的角色
- 直观地显示
和根
之间的组合是特殊元素
的自反组合的特化(只需添加)树节点
- 删除额外的冗余组合,改为在附加到
根的注释中添加a,例如在纯文本
(但我相信有人会设法在OCL中正式表达这一点;-){最多可以有一个specialElement子节点}
关于更多的想法,您还可以看看UML。我想您需要提供一张图纸,使其成为一个好的答案。特别是
子集部分不明显。这是一个很好的答案,如果你添加一个图表,我将投票!我想你需要提供一张图纸,让它成为一个好的答案。特别是子集部分不明显。这是一个很好的答案,如果你添加一个图表,我将投票!谢谢,我也曾经理解过子集银行,我也曾经理解过子集银行