29122


オブジェクト指向の話題でよく出てくる用語に object と instance の２つがあります。  
日本語的にはどちらも class 型な変数の意味で用いられていることが多いように感じます。  
でも単語も違いますし、ニュアンスは違いそうに思えます。

この2つの用語はどう違うのでしょうか？  
（あるいはどう同じなのでしょうか？）


CC BY-SA 3.0
2016-09-25T12:38:33.810
29120
2016-09-27T14:04:20.220
2016-09-25T14:59:04.683
15185
8589
question
英語 専門用語
instance と object のニュアンスの違い


自分の理解を。

クラスベースのオブジェクト指向言語においては、設計図(クラス)に対する実態(インスタンス)があるので、インスタンスという言葉が使われている。

オブジェクト指向のオブジェクトとはもう少し広い概念で、オブジェクトそれぞれがメソッド(メッセージ)を受け取って特定の処理をする、そのパラダイムのプログラミングの登場人物。

なのでクラスベースではインスタンス=オブジェクトだが、その他のオブジェクト指向ではインスタンスという用語は本来の意味から考えれば使われるべきではない。

* * *

と思っていたのですが、ちょっと調べると javascript でも instanceof
演算とかありますね。。ただ、オブジェクトが定義されるにあたって、その原型(クラスやプロトタイプ)は必ずしも存在する必要はなく、やっぱり、インスタンス ==
特定のクラスないしプロトタイプを実装・実現するオブジェクト が自分の理解です。

* * *

例えば具体的には、 OCaml はクラスがないオブジェクトを生成できたはず。


CC BY-SA 3.0
2016-09-25T13:02:47.903
29121
2016-09-25T14:55:59.170
2016-09-25T14:55:59.170
754
754
29120
answer


Yuki Inoueさんとそう違わない感覚だとは思いますが、

> オブジェクト指向のオブジェクトとはもう少し広い概念で...

オブジェクトをどうとらえているかはYuki Inoueさんと同じです。

> クラスベースではインスタンス=オブジェクトだが...

インスタンス＝実体という訳を自分は素朴に解釈していてプログラムからみてそれが「何か意味のある情報をカプセル化していてメッセージを送ると何かしてくれるようなものと理解しています。これは特定の言語システムの話をしているなら意味が違ってくると思います。例えばJavaなどではクラスも実体を持っていてプログラムからアクセスできるという意味でオブジェクト（かつインスタンスといっても御幣はない）と解釈しています。一方でC++のようなものだとC++クラスに対して実行時に何かアクセスするようなコードを普通書かない（書けない）ものだと思うのでC++クラスはインスタンスでもないしオブジェクトでもないと思います。

特定の言語システムの話をしているのではない文脈では、クラスとインスタンスという用語を、「振る舞いの定義」と「定義に従って振る舞う個々の実体」として明確に区別したい場合に使い、特に区別する必要がないような文脈では先の定義通りの意味でオブジェクトという用語を使っていると思います。


CC BY-SA 3.0
2016-09-25T13:55:42.507
29122
2016-09-25T13:55:42.507
4417
29120
answer


なんとなくですが、

  * インスタンスはメモリ上にある情報・実態。関数は含まない。現実に例えるとただ存在してるだけ（時間軸がない）。
  * オブジェクトはインスタンス + クラスで定義された関数。現実に例えるとそこにあり他と干渉するもの（時間軸がある）。

なんかすごい厨二くさい…


CC BY-SA 3.0
2016-09-25T15:15:23.507
29125
2016-09-25T15:15:23.507
3974
29120
answer


上手く書けませんが・・・  
クラスはインスタンスではありませんが、クラスもインスタンスもオブジェクトです。


CC BY-SA 3.0
2016-09-27T13:36:25.887
29188
2016-09-27T13:36:25.887
5008
29120
answer


簡単に、

  * インスタンス=実体、物。(例:人、車)
  * オブジェクト=クラス、インスタンスをまとめた物、メモリに置かれているもの。
  * クラス(質問には無いですが)=設計図

と考えればいいと思います。


CC BY-SA 3.0
2016-09-27T14:04:20.220
29190
2016-09-27T14:04:20.220
15185
29120
answer