インスタンス
計算機科学でのインスタンス(instance)とはオブジェクトの実体のことをいう。instanceは英語で「実例」を意味する。オブジェクト指向言語においては、多くの場合クラスと呼ばれるものを元に作成したオブジェクトの実体を指す。データモデルやオブジェクト指向設計においても用いられる用語である。
インスタンスを生成するプロセスをインスタンス化 (instantiation、動詞形instantiate)という。
目次 |
[編集] インスタンス
インスタンスとは、「オブジェクト同士の自律的な通信により処理が実行される」ための、クラスにおいて記述される定義(相手クラスのメソッドにおけるラベル名等)のこと。
[編集] インスタンスの喩え
キー情報毎に発行されるオブジェクト群が、データベースオブジェクト等からそれぞれの求めに応じた情報を自律的に得るため確保されている通信手段。すなわち、相手オブジェクト所有の「フィールド名を持ったメソッド」等を自分のスタンスで利用するため自分の親クラスによって宣言され、付与された機能。
インスタンスとクラスとの関係は、わかりやすく説明するために、しばしば様々なものに喩えられることがある。喩え方によってはかえってわかりづらくなり逆効果になることもある。
[編集] 設計図
クラスが設計図に相当し、インスタンスが設計図から作り上げた実物であるという喩え。
[編集] プラトンのイデア論による喩え
プラトン哲学において、クラスがイデアに相当し、そのクラスから実際に生成されるインスタンスがこの現実世界に存在するものを意味する実体と喩えられる。
[編集] タグ
インスタンスは物自体であり、クラスはその物の種類を示すタグであるという喩え[1]。
[編集] スタンプ、型抜き
スタンプ、型抜きがインスタンスを生成するクラスに相当し、スタンプによって押される印。
[編集] アウトレット
Xcode 3.0においてインスタンス変数はアウトレット(日本語で言うコンセント、ソケットの意)として表現される。
[編集] 具体的に・・
もっと具体化しC言語の構文でいうと、
int a;
と宣言した時、intがクラス(整数型という属性を持った)、変数aがインスタンスというイメージ。
あるいは、構造体で、
typedef struct {
int length; int weight; int sex;
} HUMAN;
HUMAN A;
とした時のHUMANがクラス、Aがインスタンス。
もちろん、厳密には「クラス」にはメンバー変数の加工を行うためのメソッドなどが含まれたりと異なる場合があるが概ねこのような理解で良い。
⇒例えば、身長と体重からメタボ具合を計算する関数をHUMAN内に持たせるなど。
肝心であるのは、このような考え方で構造体=クラス(オブジェクト)を設計しクラス自身にどのような機能を持たせてソリューションを得るのか、ということである。それがオブジェクト指向。
[編集] 関連項目
- ^ 「続・初めてのPerl(オライリージャパン)」等