OCL - 组合关系,可以向后引用吗?

Yan*_*ang 2 uml ocl

因此,假设我有一个简单的关系,其中“汽车”由“轮”组成(通过“有”关系)。

我知道在 Car 的上下文中,我可以在 OCL 中导航,通过编写获取与此self.has“Car”链接的一组“Wheel”,轻松查看与此车关联的轮子。

然而,通过这种组合关系(与单向关联相反),是否可以导航回到“Wheel”上下文中的“Car”?如果是,应该怎么做?(如果出于某种原因,我们需要在“轮”而不是“汽车”的背景下工作。只是为了这个问题)

Ed *_*ink 5

OCL 中的所有关联都可以按任一方向导航。OCL 规范的第 7.5.4 节解释了如何从远程类型名称(例如 self.Car)推导出未指定的角色名称,并且在存在歧义的情况下推导出 self.Car[Car::has]。

注意。UML 定义是单向关联还是双向关联都没有区别。UML 或 Ecore 定义运行时导航性。OCL 关注分析/编译时可见性;所有协会均可在各个方向导航。