オブジェクト (コンピューター サイエンス)

フリー百科事典ウィキペディアより
ナビゲーションにジャンプ 検索にジャンプ

コンピュータ サイエンスではオブジェクト変数データ構造関数、またはメソッドです。メモリの領域として、それらは値を含み、識別子によって参照されます

オブジェクト指向プログラミングパラダイムでは、オブジェクト変数、関数、およびデータ構造の組み合わせにすることができます。特に、パラダイムのクラスベースのバリエーションでは、クラスの特定のインスタンスを参照します。

データベース管理のリレーショナル モデルでは、オブジェクトは、テーブルまたは、またはデータとデータベース エンティティ間の関連付け (個人の年齢を特定の人物に関連付けるなど) の場合があります。[1]

オブジェクトベース言語

プログラミング言語の重要な違いは、オブジェクト指向言語とオブジェクトベース言語の違いです。オブジェクトの基本的な機能 (ID、プロパティ、および属性) が言語に含まれている場合、その言語は通常、オブジェクトベースであると見なされます。オブジェクトベースであり、ポリモーフィズム、継承、カプセル化、および場合によっては構成の機能も備えている言語は、オブジェクト指向と見なされます。ポリモーフィズムとは、渡されたオブジェクトに基づいて複数の動作を持つ関数の名前をオーバーロードする機能を指します。従来のメッセージパッシングでは、最初のオブジェクトのみを識別し、それをそのオブジェクトへの「メッセージの送信」と見なします。ただし、FlavorsCommon Lisp Object System (CLOS) は、関数の最初のパラメータ以上の識別を可能にします。[2]継承とは、オブジェクト クラスをサブクラス化し、既存のクラスのサブクラスであり、すべてのデータ制約とその親の動作を継承するだけでなく、新しいクラスを追加したり、それらの 1 つまたは複数を変更したりする新しいクラスを作成する機能です。 . [3] [4]

オブジェクト指向プログラミング

オブジェクト指向プログラミングは、モジュール式の再利用可能なソフトウェア システムを設計するためのアプローチです。オブジェクト指向のアプローチは、コンピューター プログラミングの初期にまでさかのぼる優れた設計手法の進化です。オブジェクト指向は、構造化プログラミング抽象データ型などの古い手法を単に論理的に拡張したものです。オブジェクトは、ポリモーフィズム継承が追加された抽象データ型です。

オブジェクト指向システムは、プログラムをコードとデータとして構造化するのではなく、「オブジェクト」の概念を使用して 2 つを統合します。オブジェクトには、状態 (データ) と動作 (コード) があります。オブジェクトは、現実世界で見つかったものに対応できます。たとえば、グラフィック プログラムには、circlesquaremenuなどのオブジェクトがあります。オンライン ショッピング システムには、ショッピング カート、顧客、製品などのオブジェクトがあります。ショッピング システムは、注文支払い割引などの動作をサポートします。オブジェクトはクラス階層として設計されています。たとえば、ショッピング システムでは、電子製品などの高レベルのクラスが存在する可能性があります。キッチン製品、およびたとえば、電子製品: CD プレーヤー、DVD プレーヤーなどで、さらに改良が加えられる場合があります。これらのクラスとサブクラスは、数学的論理のセットサブセットに対応します。[5] [6]

特殊なオブジェクト

オブジェクトの重要な概念はデザイン パターンです。デザイン パターンは、一般的な問題に対処するための再利用可能なテンプレートを提供します。次のオブジェクトの説明は、オブジェクトの最も一般的な設計パターンの例です。[7]

分散オブジェクト

オブジェクト指向のアプローチは、単なるプログラミング モデルではありません。分散システムのインターフェース定義言語としても同様に使用できます。分散コンピューティングモデルのオブジェクトは、プログラミング オブジェクトよりも粒度が大きく、持続時間が長く、サービス指向である傾向があります。

分散オブジェクトをパッケージ化する標準的な方法は、インターフェイス定義言語 (IDL) を使用することです。IDL は、分散サーバー オブジェクトのすべての詳細からクライアントを保護します。オブジェクトが存在するコンピューター、使用するプログラミング言語、オペレーティング システム、その他のプラットフォーム固有の問題などの詳細。通常、IDL は分散環境の一部でもあり、トランザクションや永続化などのサービスをすべてのオブジェクトに均一な方法で提供します。分散オブジェクトの最も一般的な 2 つの標準は、Object Management GroupCORBA標準とMicrosoftの DCOM です。[8]

分散オブジェクトに加えて、分散コンピューティングを可能にするために、オブジェクトの基本概念に対する他の多くの拡張が提案されています。

  • プロトコル オブジェクトは、ネットワーク通信をオブジェクト指向インターフェイス内に閉じ込めるプロトコル スタックのコンポーネントです。
  • レプリケートされたオブジェクトは、分散マルチパーティ プロトコルを実行して内部状態間の高い一貫性を実現し、調整された方法で要求に応答する分散オブジェクトのグループ (レプリカと呼ばれます) です。例には、耐障害性のあるCORBAオブジェクトが含まれます。
  • ライブ分散オブジェクト(または単にライブ オブジェクト) [9]は、複製オブジェクトの概念を、分散プロトコルを内部で使用する可能性があるレプリカのグループに一般化し、おそらくそれらのローカル状態間の一貫性が弱いだけになります。

分散オブジェクトプロトコル オブジェクトなど、これらの拡張機能の一部は、特定のコンテキスト (リモート メソッド呼び出しプロトコル構成など) で使用される特別な種類の「通常の」オブジェクトを表すドメイン固有の用語ですレプリケートされたオブジェクトライブ分散オブジェクトなどの他のオブジェクトは、オブジェクトが一度に 1 つの場所に存在するという通常のケースを放棄し、複数のエンティティ (レプリカ) のグループに概念を適用するという点で、より標準的ではありません。複数の場所にまたがる場合、状態の一貫性が弱く、メンバーシップが動的に変化する可能性があります。

セマンティック Web

セマンティック Webは、本質的に分散オブジェクト フレームワークです。セマンティック Web の 2 つの重要なテクノロジは、Web オントロジー言語(OWL) とリソース記述フレームワーク(RDF) です。RDF は、インターネット経由でアクセスできる基本的なオブジェクト (名前、プロパティ、属性、関係) を定義する機能を提供します。OWL は、集合論に基づいて、より豊富なオブジェクト モデルを追加し、多重継承などの追加のモデリング機能を提供します。

OWLオブジェクトは、インターフェース定義言語を介してアクセスされる標準の大粒分散オブジェクトとは異なります。このようなアプローチはインターネットには適していません。インターネットは常に進化しており、1 セットのインターフェイスでの標準化を達成するのは困難だからです。OWL オブジェクトは、 JavaC++などのプログラミング言語でアプリケーション ドメイン モデルを定義するために使用される種類のオブジェクトに似ている傾向があります

ただし、OWL オブジェクトと従来のオブジェクト指向プログラミング オブジェクトの間には重要な違いがあります。従来のオブジェクトは通常、単一継承で静的階層にコンパイルされますが、OWL オブジェクトは動的です。OWL オブジェクトは、実行時にその構造を変更することができ、新しいクラスまたは異なるクラスのインスタンスになることができます。

もう 1 つの重要な違いは、モデルが現在システムにない情報を処理する方法です。プログラミング オブジェクトとほとんどのデータベース システムは、「閉世界の仮定」を使用します。ファクトがシステムに認識されていない場合、そのファクトは偽であると見なされます。セマンティック Web オブジェクトは、オープンワールドの仮定を使用します。ステートメントは、それが偽であるという実際の関連情報がある場合にのみ偽と見なされます。そうでない場合、真でも偽でもない不明であると見なされます。

OWL オブジェクトは、実際には、 KL-ONEや Loom などの人工知能フレーム言語のオブジェクトに最も似ています。

次の表は、Java や C++ などのオブジェクト指向プログラミング言語の従来のオブジェクトとセマンティック Web オブジェクトを対比しています: [10] [11]

OOP オブジェクト セマンティック Web オブジェクト
クラスはインスタンスの型と見なされます。 クラスは個体の集合と見なされます。
インスタンスは実行時に型を変更できません。 クラスのメンバーシップは、実行時に変更される場合があります。
クラスのリストはコンパイル時に完全に認識され、その後は変更できません。 クラスは実行時に作成および変更できます。
コンパイラはビルド時に使用されます。コンパイル時エラーは問題を示します。 Reasoner は、実行時またはビルド時の分類と一貫性チェックに使用できます。
クラスは、命令型の関数とメソッドを通じて、その意味と動作の多くをエンコードします。 クラスは、OWL ステートメントに関してその意味を明示します。命令コードを添付することはできません。
インスタンスは、実行中のプログラムの外部から簡単にアドレス指定できない限り、匿名です。 すべての名前付き RDF および OWL リソースには、それらを参照できる固有の URI があります。
閉ざされた世界: ステートメントが真であることを証明するのに十分な情報がない場合、それは偽であると見なされます。 オープン ワールド: ステートメントが正しいことを証明するのに十分な情報がない場合、それは正しいか間違っている可能性があります。[12]

も参照

参考文献

  1. ^ オッペル、アンディ (2005). SQL の謎解きマグロウ・ヒル。p。7.ISBN _ 0-07-226224-9.
  2. ^ ガブリエル、リチャード。リンダ G. デミチー (1987)。「Common Lisp オブジェクト システム: 概要」(PDF) . Lucid Inc.テクニカルレポートコンピュータ サイエンスの講義ノート。276 : 151. Bibcode : 1987LNCS..276..151D . ドイ10.1007/3-540-47891-4_15 . ISBN  978-3-540-18353-2.
  3. ^ ウェグナー、ピーター (1987 年 12 月). マイロウィッツ、ノーマン(編)。「オブジェクトベースの言語設計の次元」。OOPSLA'87 会議議事録22 (12): 168–182. ドイ: 10.1145/38807.38823 .
  4. ^ バーベイ、S; M.ケンペ; A. ストロマイヤー (1993)。「Ada 9X によるオブジェクト指向プログラミング」 . ドラフトテクニカルレポートローザンヌのソフトウェア工学研究所にあるスイス連邦工科大学2013年 12 月 15 日閲覧Ada 83 自体は、一般にオブジェクト指向とは見なされません。むしろ、Wegner の用語 [Weg 87] によれば、制限された形式の継承のみを提供し、ポリモーフィズムを欠いているため、オブジェクトベースであると言われています。
  5. ^ ヤコブセン、イヴァル。マグナス・クリスタソン; パトリック・ジョンソン; Gunnar Overgaard (1992)。オブジェクト指向ソフトウェア エンジニアリング. Addison-Wesley ACM プレス。ISBN 0-201-54435-0.
  6. ^ 「オブジェクトとは?」. oracle.comオラクル社2013年 12 月 13 日閲覧
  7. ^ Martin、Robert C. 「デザイン原則とデザイン パターン」(PDF) . 2015 年 9 月 6 日にオリジナル(PDF)からアーカイブされました2017年4月28日閲覧
  8. ^ オルファリ、ロバート (1996). エッセンシャル クライアント/サーバー サバイバル ガイド. ニューヨーク: Wiley Computer Publishing。pp.399–403。  _ ISBN 0-471-15325-7.
  9. ^ Ostrowski, K.、Birman, K.、Dolev, D.、および Ahnn, J. (2008). "Programming with Live Distributed Objects"、 Proceedings of the 22nd European Conference on Object-Oriented Programming、パフォス、キプロス、2008 年 7 月 7 ~ 11 日、J. Vitek 編、 Lecture Notes in Computer Science、vol. 5142, Springer-Verlag, Berlin, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536 .
  10. ^ バーナーズ・リー、ティム。ジェームズ・ヘンドラー; Ora Lassila (2001 年 5 月 17 日)。「セマンティック Web コンピュータにとって意味のある新しい形の Web コンテンツは、新しい可能性の革命を解き放ちます」 . サイエンティフィック アメリカン284 : 34–43. ドイ: 10.1038/scientificamerican0501-34 . 2013 年 4 月 24 日にオリジナルからアーカイブされました。
  11. ^ Knublauch、Holger。オーバーレ、ダニエル。テトロウ、フィル。ウォレス、エヴァン (2006-03-09)。「オブジェクト指向ソフトウェア開発者向けのセマンティック Web 入門書」 . W3C . 2008年 7 月 30 日閲覧
  12. ^ 次の表から抜粋した表: http://www.w3.org/2001/sw/BestPractices/SE/ODSD/

外部リンク