(Translated by https://www.hiragana.jp/)
インスタンス - Wikipedia コンテンツにスキップ

インスタンス

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

計算けいさん科学かがくでのインスタンスinstance)とは実体じったいのことをいう。instance英語えいごで「実例じつれい」を意味いみする。

オブジェクト指向しこうにおけるインスタンス

[編集へんしゅう]

オブジェクト指向しこう言語げんごにおいては、おおくの場合ばあいクラスばれるものをもと作成さくせいしたオブジェクトの実体じったいす。データモデルやオブジェクト指向しこう設計せっけいにおいてももちいられる用語ようごである。 インスタンスを生成せいせいするプロセスをインスタンス (instantiation動詞どうしがたinstantiate)という。

概要がいよう

[編集へんしゅう]

オブジェクト指向しこうにおいて、クラスあるいはかたはオブジェクトの分類ぶんるい分類ぶんるい概念がいねん)や集合しゅうごう相当そうとうしている。 あるクラス C のインスタンスとは、C という分類ぶんるいぞくする(分類ぶんるいされる)オブジェクトのことである。 Smalltalk影響えいきょうつよ言語げんごでは、クラス自体じたいもまたオブジェクトとしてあつかうことができる(これをクラス・オブジェクトとう)。そのような場合ばあいとくに、「クラスC のオブジェクト」といったいいかたでは、「クラスC にぞくするオブジェクト」の意味いみか「クラスC そのものをあらわすオブジェクト」の意味いみ曖昧あいまいになる。この場合ばあい、「クラスC のインスタンス」といういいかた利用りようできる。 クラス・オブジェクトと対比たいひして、「インスタンス・オブジェクト」という言葉ことば使つかわれている。

オブジェクト指向しこうにおけるインスタンスという言葉ことばは、元々もともとSketchpadという言語げんごの"Master"から"Instance"を生成せいせいするという仕組しくみ"instance drawings"が由来ゆらいとなっている用語ようごである。[1]そしてC++とならびオブジェクト指向しこう概念がいねんきずけづいたSmalltalkが、この"Master"と"Instance"の関係かんけいをクラスから生成せいせいされたオブジェクトになぞらえ、クラスから生成せいせいされたオブジェクト(インスタンス・オブジェクト)の意味いみ使つかはじめインスタンス・オブジェクトをあらわ言葉ことばとして定着ていちゃくさせた。[2]

静的せいてき型付かたつのオブジェクト指向しこう言語げんごではめずらしいが、動的どうてき型付かたつのオブジェクト指向しこう言語げんごおおくは、メタクラスをサポートし、クラス自体じたいもオブジェクトとしてあつかうことができる(クラス・オブジェクト)。クラス・オブジェクトは、はしてきえば変数へんすう束縛そくばくできるクラスである。クラス・オブジェクト、インスタンス・オブジェクト双方そうほう変数へんすう束縛そくばくしたさいどちらもオブジェクトとしてかけじょう区別くべつはつかない。たとえばクラス・オブジェクト、インスタンス・オブジェクト双方そうほうが readFrom: というメソッドをっていた場合ばあい、どちらも #readFrom: メッセージをおくってやるとエラーもこさずそれぞれのメソッドを実行じっこうする。

Objective-CPythonにおいてはクラス・オブジェクトとインスタンス・オブジェクトの明確めいかく区別くべつおこなわれている。[3][4]

メタクラスがサポートされているシステムでは、クラス・オブジェクトもまたべつのクラス(メタクラス)のインスタンスであるということがありうる。この場合ばあい「クラス・オブジェクトはインスタンスではない」とはえないので、注意ちゅういされたい。


脚注きゃくちゅう

[編集へんしゅう]

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]