オブジェクトとは
コンピュータ科学において、オブジェクトという言葉は、その文脈によって異なる意味を持つことがあります。一般的には、
識別子によって参照されるメモリ上の値を指し、変数、
データ構造、関数、メソッドなどが含まれます。特に
オブジェクト指向プログラミングでは、データとそれに対する操作を組み合わせた実体として扱われます。
オブジェクト指向プログラミングでは、オブジェクトは関連するデータをひとまとめにし、代入、演算、手続き(関数やメソッドなど)を介した受け渡しといった操作の対象となる実体です。メッセージの受け手にもなれます。ただし、数値のような基本的な
データ型はオブジェクトとして扱わない
プログラミング言語も存在します。
オブジェクトは、他のオブジェクトを要素として含めることができ、複雑な
データ構造を表現するのに役立ちます。プログラム上で表現したい概念(例えば「顧客」「商品」「注文書」など)をメタファとして表現するのにも使われ、プログラムの設計や共有を容易にします。また、マウスカーソル、ウィンドウ、メニュー、ファイルなど、ユーザーが目にする多くの要素もオブジェクトとして表現できます。
オブジェクトは、自身に関するデータだけでなく、そのデータに対する操作もまとめて保持します。例えば、注文書オブジェクトには、商品の追加や注文の取り消しといった操作が組み込まれています。操作対象とその操作をまとめて表現することで、プログラムの見通しが良くなり、
プログラミング効率や再利用性を高めるのに貢献すると考えられています。
クラスベースの
オブジェクト指向プログラミングでは、共通の特徴や動作を持つオブジェクトをまとめて「クラス」として定義します。クラスはオブジェクトの分類であり、その性質を記述します。そして、あるクラスに分類される具体的なオブジェクトを「
インスタンス」と呼びます。例えば、「ファイル」というクラスはファイルの性質を定義し、実際のファイルは「ファイルクラスの
インスタンス」となります。
処理系におけるオブジェクトの実装
オブジェクトは抽象的な概念ですが、プログラムが実行される際には、メモリ上のデータとして具現化されます。クラスは
インスタンスが持つデータの形式と操作の定義であり、プログラム実行時にはプログラムとして存在します。このとき、オブジェクトは「何か」を抽象化していると表現できます。
例えば、「会員」を表すオブジェクトは、会員番号、氏名、所属クラスといった情報を含むデータとして実装されます。操作に関しては、同種の動作をするオブジェクトをクラスとしてまとめることで、個々の
インスタンスに操作プログラムを持たせる必要がなくなり、クラス側に操作プログラムを持たせる実装が可能です。
インスタンス生成が可能なクラスは、自らの
インスタンスを生成するための手続きを備えています。この手続きが呼び出されることで、
インスタンスが作成されます。
データベースにおけるオブジェクト
データベース管理のリレーショナルモデルでは、オブジェクトはテーブル、列、データとデータベースエントリーの関係などを指す場合があります。例えば、人物の年齢と特定の人物との関係などが該当します。
まとめ
オブジェクトは、コンピュータ科学における重要な概念であり、
プログラミング、データベース、処理系など、様々な分野で利用されています。
オブジェクト指向プログラミングでは、データと操作をまとめた実体として、プログラムの設計や再利用性を向上させるのに役立ちます。クラスと
インスタンスの関係を理解することで、オブジェクトの概念をより深く理解することができます。