我遇到了几个关于 OCL 表达式的问题。在阅读了一些大学幻灯片并在谷歌上搜索后,我仍然无法正确理解它。
我想知道你们中是否有人知道我应该阅读以理解这些东西的任何好资源。
困扰我的约束:
- 在部门工作的每个人都有同一个经理。
- 公司里没有人是他/她自己的经理。
- 公司里没有人比他的经理挣得更多。
对于第一个我有:
背景部门
inv self.stuff -> forAll(manager = self.staff.manager)
第二个:
背景公司
inv self.employee -> select(manager = manager.manager) -> isEmpty()
第三个:
背景公司
inv self.employee -> select(salary > manager.salary) -> isEmpty()
但我不认为这些是正确的。我最不确定的是,在示例 2 和示例 3 中,我是否真的将个别员工与他们的实际经理/经理工资进行了比较。