Uml 参数中的OCL验证值

Uml 参数中的OCL验证值,uml,ocl,Uml,Ocl,我想为我的方法addPlayer创建一个不变量,以便它验证参数Player是否存在 例如: Class Game Method: addPlayer(param Player) 不确定语法是否有效如果约束本身有意义,我就不打算讨论了。只是一些评论,以帮助您理解本例中的OCL 不变量是在类上创建的。它们在操作上下文中没有意义 也许你想要的是手术 “exists”是处理集合的运算符(存在量词)。关键是,您正在使用参数p1(通过执行pl->exists(…))隐式创建一个集合,因此您的约束将始终为真

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

例如:

Class Game
Method: addPlayer(param Player)

不确定语法是否有效

如果约束本身有意义,我就不打算讨论了。只是一些评论,以帮助您理解本例中的OCL

  • 不变量是在类上创建的。它们在操作上下文中没有意义
  • 也许你想要的是手术
  • “exists”是处理集合的运算符(存在量词)。关键是,您正在使用参数p1(通过执行
    pl->exists(…)
    )隐式创建一个集合,因此您的约束将始终为真
  • 一个可能更好的约束条件是:
  • 使用allInstances()操作

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