ObjectSquare [1999 年 8 月号]

[オブジェクト指向モデリング言語 UML]
   - 情報処理 VOL.40 NO.1, NO.3より -


オブジェクト制約言語OCL

OCL(Object Constraint Language)はモデル記述のための形式言語であり,モデルが整合的であるためにモデル要素や関係の間で満たすべき命題を式として定義できる.

OCLはIBMとObjecTimeによってUMLの構成要素としてOMGに提案されたもので,UML1.1から導入された.UMLのセマンティクス記述にも積極的に使われている.OCLによってUMLのメタモデル定義も以前に比べて整合的なものになったと評価できる.OCLはメタモデルに対してだけでなく,一般の分析設計者がモデルを正確に表したいときに,従来のビジュアルなモデル記述に注釈として追加する形でモデルの厳密性を増すのに使うこともできる.

たとえば,分析モデルにおいて,単に「会社」クラスと「人間」クラスの間に多対多の「雇用」関連が存在するという以上の詳細な制約の記述(この場合は,従業員の年齢に関するビジネスルール)を追加できる.

  例:会社.従業員.forAll( 人間 p | 18 >= p.age and p.age <= 65 )

OCLのもう1つの使い方は,RDBにおけるSQLのようにクラス図で示されたオブジェクトモデルに対する検索操作いわゆるナビゲーション言語としての利用である.ナビゲーションの対象は「フラットセット」であり,フラットセットの要素が1つの場合,その集合を要素と同一視(シングルトンと呼ぶ)する.また,セレクタが何重にも適用されて,結果が入れ子の集合になった場合,一番外側の括弧を残し後はすべて取り除いてしまった集合と解釈する.この規則により,複数の関連をまたいでナビゲーションを行っても集合が入れ子にならず,集合演算や選択操作を簡易化できる.

  例:  Set{ 1 }  =  1
  例:  Set{ Set{りんご, オレンジ} Set{バナナ} } =  {リンゴ, オレンジ, バナナ}

またOCLの文法では,セレクタとして,属性名や操作名,関連名,ロール名,を自由に使って,クラス図を介してモデルを自由に参照できる.

  例: 従業員
         self.雇用者.資本金
  例:  会社.全従業員->size    全従業員の人数が返される
  例:  会社.全従業員->select(役職=“マネージャ”and 年齢 <30)

© 1999 OGIS-RI Co., Ltd.

Prev.

Index

Next