私は大学院と学部の 2 つの関連付けを持つ学生クラスを持っています。学生が両方に関連付けられていないことを確認する不変条件を作成しようとしています。私はOCLに非常に慣れておらず、これや構文へのアプローチを知りません。Student.allInstances->forAll(something here) のようなものが必要だと考えています
しかし、私は知りません。
ありがとう!
私は大学院と学部の 2 つの関連付けを持つ学生クラスを持っています。学生が両方に関連付けられていないことを確認する不変条件を作成しようとしています。私はOCLに非常に慣れておらず、これや構文へのアプローチを知りません。Student.allInstances->forAll(something here) のようなものが必要だと考えています
しかし、私は知りません。
ありがとう!
UML には、この正確な意味を持つ 2 つの関連付けの間にグラフィカルな xor 依存関係さえあるため、必要に応じて、この特定の ocl 制約をスキップすることもできます。
協会は学生の自己言及ですか?または、関連付けの最後に別のクラスがありますか?
別のクラス「Study」があり (例として)、関連付けがカーディナリティ * でそれらの間にある場合、解決策は次のようになります。
context Student s:
inv only_one_graduate_type:
( (s.graduate -> notEmpty() implies s.undergraduate -> isEmpty()) &&
(s.undergraduate -> notEmpty() implies s.graduate -> isEmpty()) )
Student.allInstances->のようなものを使用する場合は、コンテキスト Studentを使用して OCL 式をより適切に書き直してください。