関数型プログラミングには、バックアップ理論として非常にエレガントなラムダ計算とその変形があります。OOPにそのようなことはありますか?オブジェクト指向モデルの抽象化とは何ですか?
関数型プログラミングには、バックアップ理論として非常にエレガントなラムダ計算とその変形があります。OOPにそのようなことはありますか?オブジェクト指向モデルの抽象化とは何ですか?
回答:
4つの主なアプローチがありますが、これらは利用可能なものの表面をひっかくだけです:
オブジェクトモデルのコアと集合論の関係は、次のドキュメントで説明されています。
ドキュメントは、インスタンスの構造とオブジェクト間の継承関係を提示します。このような構造は、OOPの可能な限り最高の抽象化と考えることができます。特定のプログラミング言語(Ruby、Python、Java、Scala、Smalltalk-80、Objective-C、CLOS、Perl、Dylan、JavaScript)およびオントロジー言語(RDFスキーマおよびOWL 2フル)に構造がどのように適用されるかが示されています。
ドキュメントでは、クラスはオブジェクトであるアプローチが採用されているため、コア構造は単一ソートされます。メイン形式では、構造は(O、 ϵ 、≤、.ec)として表現できます。ここで、
Rubyオブジェクトモデルによるサンプルのコア構造を次の図に示します。青色のリンク-グリーンリンクは青色のリンクは、「包摂削減」の会員の関係を示し、反射的推移の低減に継承関係を示したのxの少なくともコンテナへのポイントのxを。powerclassマップ.ecは、水平の青いリンクで形成されています。このマップの画像のオブジェクトは、パワークラス(灰色)です。Rubyでは、これらは固有クラスまたはシングルトンクラスとも呼ばれます(後者の用語は非推奨です)。オブジェクトs、uおよびv(ピンク色)は端末です、残りのオブジェクトは継承ルート rの子孫です。
r = BasicObject; c = Class; A = c.new(r); B = c.new(A); s = A.new; u = B.new; v = B.new; class << s; end; class << v; end
上記のすべての言語のオブジェクトモデルのコア部分は、構造の特殊化と見なすことができ、追加の構成要素はまったくないか、わずかです。理論的な観点から、追加の構成要素の最も重要なケースは、ディランによって導入されたシングルトンマップ(.ɛϲと表記)です。これにより、Dylanは(上記の)唯一のプログラミング言語になります。thasは、構成記号○が左から右に解釈される単調性条件(≤)○(ϵ)⊆(ϵ)の影響を受けません。
オブジェクトモデルのコアと集合論の間の関係を形式化する1つの方法は、x.ecまたはx.ɛϲを考慮することができるため、参照ドキュメントでメタオブジェクト構造と呼ばれる構造のファミリー(O、≤、r、.ec、.ɛϲ)を使用することですxのメタオブジェクトとして。これらの構造においてx.ecすべてのオブジェクトに対して定義され、X及びx.ɛςすべてのために定義される境界(「小」)、オブジェクトX。構造は、以下の9つの公理に従います。公理化は、最初の8つの公理(T子孫ではないもの-端子オブジェクトのセット表し、R、及び.EC *はの反射的推移閉包である.EC)むしろ、最後の公理のために関与します。
最後の公理では、ϖは固定の制限順序であり、.dは定義拡張によって導出されるランク関数です。オブジェクトメンバーシップ関係、は、((. ɛϲ)∪(.ec))○(≤)として取得されます。最後の公理によれば、boundの境界付きオブジェクトのセットに対するドメイン制限は(.ɛϲ)○(≤)に等しくなります。参照されたドキュメントでは、この関係は有界メンバーシップと呼ばれ、∊で示されています。重要な特性として、この関係は十分に根拠があります。これは、r ϵ r以来根拠のないϵとは対照的です。。オブジェクトテクノロジー(のコア部分)と集合論の間の主な対応は、次のように表現できることがわかります。
∊↔∈
すなわち、有界メンバーシップは、十分に確立されたセット間のセットメンバーシップに対応します。特別な場合として、ランクϖ + 1の部分フォン・ノイマン宇宙は、定義拡張によるメタオブジェクト構造です。一般に、すべての抽象(ϖ + 1)- 上部構造 (O、 ∊ )は、定義上、完全なメタオブジェクト構造と同等です。すべてのメタオブジェクト構造は、完全にメタオブジェクト構造に忠実に埋め込むことができ、これは、フォンノイマン宇宙に忠実に埋め込むことができます。
基本構造という用語は、メタオブジェクト構造の一般化に使用されます。この一般化では、.ecおよび.ɛϲは(任意に)部分的で、空である可能性があります。特に、継承ルートrのみを含む最小構造を持つ有限の基本構造が可能です。すべての基本構造は、パワークラス補完とそれに続くシングルトン補完によってメタオブジェクト構造に拡張できます。これにより、基本構造がフォンノイマン宇宙に忠実に埋め込まれます。