在尝试检查 OCL 中的重复项时,我面临着挑战。
这是类图的简化:
+-----------+
|ChapterName|
+-----------+
^ 0..* chapterNames
|
^
V
+-------+ books 0..* +----+
|Catalog|<>------------>|Book|
+-------+ +----+
catalogs 0..* ^ ^ 0..* books
| |
+----+ customers 0..* +--------+
|Shop|<>-------------->|Customer|
+----+ +--------+
每个类的属性声明如下:
- 章节名称
- 姓名
- 目录
- 类别
问题: 我要检查的是客户是否有任何章节名称重复的书籍,也属于目录中的特定类别。
我还没有设法绕开逻辑。到目前为止,我所拥有的是:
context Shop
self.customers.books->select(cubks | cubks =
self.catalogs.books->select(cabks | cabks = cubks)->first())
...应该从客户拥有的目录中找到书籍。
问题:如何添加更多约束来解决上述问题?
还。我在 Eclipse 中使用 Eclipse、EMF 和 OCL 控制台。