我有一个应用程序,模型树,带班树,节点和边缘(我需要的边缘种类!),我不知道如何来表示这个在类图的关系。 我读过关于这个其他职位,但我还是个疑问。
树对象有一个指针指向一个节点(它的根),我相信限定单向关联(树->
在两端节点)与多重1..1。 这样对吗?
每个Node对象有一个指针,以散发出来的它(Edge对象)的边缘。 因为只有当节点存在存在这些边缘,我相信这是一个组成关联。
但是,我有,在各边缘对象,一个指针到边缘的目标节点。 我怎么能代表这种关系,考虑到我已经有节点->
上述边缘组成?
另外,如果你还在读书:),每个节点都有一个指向它的父节点。 在这里,我会用一个单向一元的关联,但我不知道使用这种关系,其名称。
谢谢你的帮助。
我想说的是:
注意:
- 您可能需要一个UML类图对一个UML对象图之间的区别
- 我不知道根节点和子节点是否是同一类(一个子节点可能是根节点的子类,因为这两种类型的节点有孩子,但只有子节点有一个父节点)
边缘可能不是一个类都:而不是一个边缘可能只是一个节点的实例。
从你描述它听起来像UML 类图应该有:
Tree -> Node, aggregation, 1..0-1
Node -> Edge, aggregation, 1..*
Edge -> Node, composition, 1..2 (an edge exists only if it connects 2 nodes)
Node -> Node, aggregation, 1..1 (would be composition, except the root node doesn't point to a node.
聚合和组合之间的差异可以在寿命方面被认为。 如果两个对象的寿命是相同的,因为它们是互相依赖于彼此,则关系是组成一个,否则是聚集。
--The树对象有一个指针指向一个节点(它的根),我相信限定单向--association(树 - >节点)与在两端多重1..1。 这样对吗?
不,多样性应该是0..1 - 1(不是所有的节点将是树的根)
你还应该考虑边缘是否真的是一个类或没有。 如果你不需要存储任何类型的关于边的信息(即它们未标示),我只是模型边作为节点之间的二元关联
于二OO树结构的处理由解决复合 设计模式 。
你似乎通过聚合和组合之间的差异会略有混淆。 使用复合当整个的生命周期和部分都是平等的,使用聚集在部件的使用寿命是不同的,即从集合中添加和/或删除的部分。