如何指定类的唯一标识符

时间:2019-10-03 14:17:26

标签: uml class-diagram ocl

对于Employee类,我必须指出可以通过其个人号码清楚地标识每个雇员。我不知道我是否觉得太复杂,因为我没有真正的主意。

属性: 最终的int人员编号 ...

3 个答案:

答案 0 :(得分:3)

您甚至不需要OCL约束即可在UML中表达该约束。 属性元类上有一个属性isID,可以确保做到这一点:

根据UML 2.5规范§9.5.3(第111页)

  

可以通过属性isID将某个属性标记为(一部分)   它是其成员的分类器的标识符(如果有)。的   对此的解释尚待解决,但可以将其映射为   实现,例如关系数据库表的主键或   XML中的ID属性。如果多个属性标记为isID   (可能是归纳分类器),则它是   (属性,值)元组将在逻辑上提供   任何实例的唯一性。因此,不需要任何   订单说明,并且某些物业可能   值为空。如果属性是多值的,那么所有值都是   包括在内。

此属性的表示法与其他约束的表示法相似 使用 在属性名称和类型后{id}

enter image description here

答案 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)