OCL中的UML聚合

OCL中的UML聚合,uml,aggregation,diagram,ocl,Uml,Aggregation,Diagram,Ocl,我被赋予一项任务,为一项手术创造前后条件: getInformation(givenTitle:String):Integer 该操作应返回指定标题项目的大量所有错误报告。至于先决条件,我已得出以下结论: context Company::getInformation(givenTitle:String):Integer pre: has->size() > 0 and has->exists(title = givenTitle); post: has-&

我被赋予一项任务,为一项手术创造前后条件:

getInformation(givenTitle:String):Integer
该操作应返回指定标题项目的大量所有错误报告。至于先决条件,我已得出以下结论:

context Company::getInformation(givenTitle:String):Integer
    pre: has->size() > 0 and has->exists(title = givenTitle);
    post: has->select(title = givenTitle)->first().Artifact.relatedTo->size() = result;
然而,如何处理项目中工件的聚合,我有一个大问题

如果只是一个协会,我会做以下事情:

context Company::getInformation(givenTitle:String):Integer
    pre: has->size() > 0 and has->exists(title = givenTitle);
    post: has->select(title = givenTitle)->first().Artifact.relatedTo->size() = result;

但是我不知道如何处理聚合,而且我似乎在google上找不到任何关于聚合的有用信息。

聚合不是一个独立的UML元素,它只是一种双向关联(具有“共享”端),因此适用于关联的所有内容都是有效的

构图也是如此,只是结尾是“复合的”)

还有一个小小的更正——我注意到您在OCL表达式中使用了关联名称(“has”、“relatedTo”等)。为了完全符合OCL规范,您应该使用关联端点的角色名称