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 コンソールを使用しています。