对于Employee类,我必须指出可以通过其个人号码清楚地标识每个雇员。我不知道我是否觉得太复杂,因为我没有真正的主意。
属性: 最终的int人员编号 ...
答案 0 :(得分:3)
您甚至不需要OCL约束即可在UML中表达该约束。
属性元类上有一个属性isID
,可以确保做到这一点:
根据UML 2.5规范§9.5.3(第111页)
可以通过属性isID将某个属性标记为(一部分) 它是其成员的分类器的标识符(如果有)。的 对此的解释尚待解决,但可以将其映射为 实现,例如关系数据库表的主键或 XML中的ID属性。如果多个属性标记为isID (可能是归纳分类器),则它是 (属性,值)元组将在逻辑上提供 任何实例的唯一性。因此,不需要任何 订单说明,并且某些物业可能 值为空。如果属性是多值的,那么所有值都是 包括在内。
此属性的表示法与其他约束的表示法相似
使用
在属性名称和类型后{id}
答案 1 :(得分:2)
您没有提供您的元模型,并且显然向每位员工提供的personelNumber是单值的,因此必定是唯一的。大概在公司这样的范围内,personelNumber应该是唯一的,因此答案通常是类似的。
context Company
inv UniquePersonelNumber: employees->isUnique(personelNumber)
答案 2 :(得分:0)
在以下问题中可以找到两个替代的OCL表达式: Why allInstance not for isUnique?
在您的情况下,它将是:
context Employee
inv personalNumberUnique : Employee.allInstances() -> isUnique(personalNumber)