范围类似关系的 UML 类图关联名称
Posted
技术标签:
【中文标题】范围类似关系的 UML 类图关联名称【英文标题】:UML class diagram association name for scope like relation 【发布时间】:2022-01-02 22:41:25 【问题描述】:我们如何调用和表示子范围和父范围所具有的关联?
+--------------------+ +-------------------+
| parent scope | <――――――――――――――――――――――x | child scope |
+--------------------+ +-------------------+
父子关联明确,不允许父子访问。
子对象与父对象的关联受到限制,子对象不能完全访问父对象,只能查找特定标识符,而子对象中必须缺少该标识符。
【问题讨论】:
【参考方案1】:您的图表意味着从Child scope
到Parent scope
的关联可导航,但从Parent scope
到Child scope
的关联不可导航。
导航是关于运行时效率的承诺:
可导航性意味着在运行时参与链接的实例(关联的实例)可以从关联另一端的实例有效地访问。实现这种有效访问的精确机制是特定于实现的。如果一端不可导航,则可能无法从另一端访问,如果是,则可能效率不高。- UML 2.5.1 规范。
所以这不是“被允许”的问题,而是关于这种访问的便捷性和效率的问题。
但是,您的图表与叙述之间存在不匹配。假设您的上下文中的可导航性是通过使用标识符实现的,该标识符具有基于该标识符查找类实例的有效方法:
从Child scope
到Parent scope
的可导航性意味着子级将知道其父级的标识符。
从Parent scope
到Child scope
的不可导航性意味着父级没有其子级的标识符,并且必须找到子类的所有实例并询问子级谁是父级。效率极低。
(请注意,这实际上是特定于实现的。如果您要在 RDBMS 中实现这样的模型,则不会存在导航问题,因为根据父 ID 查询子代总是很容易且相对有效。)。
【讨论】:
感谢您抽出宝贵时间回答我的问题。是否有表示“部分”可导航性的术语?子对象无法在父对象中完全导航 @Slev7n UML 规范中没有定义特定的术语。 “单向”与“双向”关联是常用和理解的。但是它有点模棱两可(即关联始终是双向的,因为反向关系始终独立于可导航性定义):我宁愿推荐“单向”与“双向”可导航性。【参考方案2】:从业务的角度来看(在“业务用例”中也是如此),没有可导航性的概念,此属性用于 O.O 编程中对象之间的链接。 在业务用例中,箭头的方向实际上指示了主角触发用例后信息流向的方向。大多数情况下,由于存在“交互”,信息是双向的(例如,屏幕通过编码、鼠标事件等方式发送信息、视觉信息和接收信息等。如果信息只通过一种方式,那么关系是单程。 例如,一个用例将数据发送给辅助参与者(即另一个系统),而该系统“使用”该数据而没有任何反馈。
【讨论】:
以上是关于范围类似关系的 UML 类图关联名称的主要内容,如果未能解决你的问题,请参考以下文章