Art*_*tur 6 uml modeling constraints
我遇到了几个关于OCL表达式的问题.在阅读了一些大学幻灯片和Google搜索后,我仍然无法正确理解它.
我想知道你们中是否有人知道我应该阅读的任何好资源来理解这些东西.
困扰我的限制因素:
我有第一个:
上下文部
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中,我是否将个体员工与他们的实际经理/经理薪水进行比较.
针对约束的快速解决方案:
context 部门 inv: self.staff -> forAll(s1,s2| s1.manager = s2.manager)
context 公司投资: self.employee->forAll(e| e.manager<>e)
context 公司投资: self.employee->forAll(e| e.salary<=e.manager.salary)
顺便说一句,我真的不认为有必要使用 Company 类(系统中有多少个 Company 类型的对象?)。如果约束二和三对于所有公司都成立,那么可以使用 Person 作为上下文来表达它们(例如,使用数字 2): context Person inv: self.manager<>self)
我们还可以在进行比较之前添加检查以查看员工是否有经理