OCL验证参数中的值

时间:2013-10-28 09:35:28

标签: uml ocl

Class Game
Method: addPlayer(param Player)

我想为我的方法addPlayer创建一个不变量,以便验证参数Player是否存在。

示例:

context Game::addPlayer(pl:Player)
    inv pl->exists( p : Player | p.playerID = pl.playerID )

不确定语法是否有效

1 个答案:

答案 0 :(得分:2)

如果约束本身有意义,我不会参与讨论。在这种情况下,只是一些评论可以帮助您理解OCL。

  1. 在类上创建不变量。它们在操作环境中没有意义。
  2. 您可能想要的是操作precondition
  3. “exists”是处理集合的运算符(存在量词)。关键是你隐式使用参数 p1 创建一个集合(通过执行pl->exists(...),因此你的约束将永远为真。
  4. 可能更好的约束是以下
  5. 使用allInstances()操作

    context Game::addPlayer(pl:Player)
    pre : Player.allInstances()->exists(p : Player | p.playerID = pl.playerID )