---------------------------------
オブジェクト指向モデリングと数学モデル
~型・クラス・集合・数学的構造~
----------------------------------
数学には考察対象を数学的に分類する手法がある。
最も良く使変われるのが同値関係(equivalence relation)である。
ソフトウエア開発でもタイプ(型)に同値関係を利用してモデル化する。
つまり考察対象を普遍値集合(universal value set)と置くと、互いに素な同値クラスに分類する。
各値は正確にただ1つの型に含まれる。
同値関係は値を「互いに素」なクラス(集合*)に分類するので継承のような多態(ポリモフィズム)を利用する様な場合は最適では無い分類の考え方となる。
多態を扱うからである。
未分類の値が存在するという部分分類も必要になるし、値が幾つかのクラス(集合)に包含される分類方法が必要となる。
*厳密にはクラスと集合は異なるが、ここでの文脈には関係しない
これは部分同値関係(Partial Equivalence Relation)と呼ばれる。
形式的なは部分同値関係の定義は「対称律」「推移律」は成立するが「反射律」は成立しない同値関係となる。
多態(ポリモフィズム)な型を必要とする場合は,「反射律」と「対称律」は成り立つが「推移律」は成立しない「共存関係」が扱える分類が必要となる。
「共存関係」はオーバーラップする共存クラス領域のカバリング(cover-ing)を決定する。
整理すると:
「対称律」∧「推移律」 → 値は高々1つのクラスに所属する
「反射律」∧「対称律」 → 値は少なくとも1つのクラスに所属する
「反射律」∧「対称律」∧「推移律」→ 値は正確に1つのクラスに所属する
同値関係は,ある2つの値が同一型(クラスあるいは集合)に含まれる事を決定するが,型の(そのままでは)属性は扱えない。
型の振舞いを規定するためには集合内の要素に対して「より強い構造」を導入する。
代数は,演算を用いて集合上に構造を作り,クラスと「抽象データ型(ADT)」をモデル化することが可能となる。
ある集合(台集合)上の関係に演算を適用することで,「構造を導入できる」ことは近代数学の基本的アプローチである。
以上から「抽象データ型(オブジェクト指向のクラスを含む)」は、数学的なアプローチを基礎に置く。
次に考える事は、「抽象データ型(ADT)」に「公理」を導入する。
「抽象データ型(ADT)」に「公理」を導入する事で、「抽象データ型(ADT)」のインスタンスに振舞いのセマンテイックスが付与できる。
これらの公理は状態の概念を使用する様な場合は、そのままでは更新可能な状態を待つオブジェクトの表現には適していないが、拡張することで扱うことが可能となる。
最近のコメント