オブジェクト制約言語 (OCL) ステートメントを書き込む場合、
OCL ステートメントがアクセスできるコンテキスト要素のフィーチャーを、
ターゲット・モデルによって決定します。ターゲット・モデルは、ユーザー・モデルまたはメタモデルのいずれかにすることができます。
ユーザー・モデル
ユーザー・モデルをターゲット・モデルに
指定する場合、OCL ステートメントをコンテキスト要素のユーザー定義フィーチャーに制限してください。
同じくユーザー・モデルをターゲット・モデルに指定する場合は、
OCL ステートメントを評価することはできません。
OCL ステートメントの構文解析を実行できるのは、
OCL ステートメントが文法的に有効であることを確認する場合のみです。
例えば、ユーザー・モデルをターゲット・モデルに指定し、
クラスまたはインターフェースをコンテキスト要素として選択した場合、
OCL ステートメントは以下の属性および操作に制限されます。
- クラスまたはインターフェースが定義する属性
- 特定の OCL 定義操作 (oclIsType() など)
メタモデル
メタモデルをターゲット・モデルに
指定する場合、OCL ステートメントはコンテキスト要素のメタモデル・フィーチャー、
およびコンテキスト要素に適用されるステレオタイプが寄与するフィーチャーへの
アクセス権を持ちます。
また、ターゲット・モデルをメタモデルにした場合、
OCL ステートメントからの出力を評価するだけで
なく、OCL ステートメントを構文解析して、
文法的に有効かどうかを確認することができます。
例えば、メタモデルをターゲット・モデルに
指定する場合、OCL ステートメントは
以下のフィーチャーにアクセスすることができます。
- コンテキスト要素を表すメタクラスで定義される、すべての属性
- コンテキスト要素に適用されるステレオタイプ内で定義される属性
- すべての OCL 定義メソッド