トップページ⇒tech
615コメント193KB

あなたたち、オブジェクトとかインスタンスとか…

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/01/14(日) 18:08:38
前から言おう言おうと思って黙ってたけど、この機会に言うよ!
オブジェクトの別名がインスタンスなんじゃなくて
クラスをインスタンス化したオブジェクトをインスタンスと言うんだからね!
勘違いしないでよね!!
0002デフォルトの名無しさん2007/01/14(日) 18:22:52
違うだろ
オブジェクトをクラス化したインスタンスをクラスと言うんだろ
0003デフォルトの名無しさん2007/01/14(日) 18:26:33
クラス化ってなんだよ
そんなのねーよw
JAVAの絵本でも読んでろwww
0004デフォルトの名無しさん2007/01/14(日) 18:29:26
ふーん
0005デフォルトの名無しさん2007/01/14(日) 18:30:40
てかちがうだろ
0006デフォルトの名無しさん2007/01/14(日) 18:33:27
はあ?
おまえどこ中よ?
0007デフォルトの名無しさん2007/01/14(日) 18:54:52
>>1
ワロタ。

「クラスをインスタンス化したオブジェクト => インスタンス」

一瞬うまい説明かと思ったけど、トートロジーで説明になっていない件w
0008デフォルトの名無しさん2007/01/14(日) 19:42:20
おまいら、オブジェクト指向の本を読んだほうがいいよ
馬鹿にしていってるんじゃなくて、読んでおいた方がいいよ
俺頭悪いから、人に何かを説得するだけの力ないけど、とにかく読んでおいた方がいいよ
3回いったよ
0009デフォルトの名無しさん2007/01/14(日) 19:45:11
>>1
>勘違いしないでよね!! 

ツンデレ?
0010デフォルトの名無しさん2007/01/14(日) 19:47:09
でもオブジェクト指向とかプログラム書くやつがみんな知っている必要は無い
そんなの期待してたら仕事にならんからなw
0011デフォルトの名無しさん2007/01/14(日) 20:03:40
クラスをオブジェクト化したのがインスタンス?
0012デフォルトの名無しさん2007/01/14(日) 20:05:17
インスタンス=クラスのオブジェクトじゃねーの?
プリミティブとオブジェクトを分けてるのは言語上の都合だろ。
0013デフォルトの名無しさん2007/01/14(日) 20:06:58
クラスをオブジェクト化したのがインスタンス

インスタンスをクラス化したのがオブジェクト

オブジェクトをインスタンス化したのがクラス
0014デフォルトの名無しさん2007/01/14(日) 20:11:57
愉快なスレだなw
0015デフォルトの名無しさん2007/01/14(日) 20:25:56
クラスのインスタンスが、オブジェクト
0016デフォルトの名無しさん2007/01/14(日) 20:31:37
名前や関数をポッチンで繋げて書くのがオブジェクト指向
引数がいっつも関数の()で指定するのが手続き型言語

反論は認めない
0017デフォルトの名無しさん2007/01/14(日) 20:32:48
「メソッド」=「関数」
0018デフォルトの名無しさん2007/01/14(日) 20:50:00
否、メソッド=振る舞い、関数=関数
0019デフォルトの名無しさん2007/01/14(日) 20:51:08
いいかげんネカマから卒業してください
0020デフォルトの名無しさん2007/01/14(日) 21:17:20
クラスをインスタンス化したオブジェクトがクラスである場合もあるんだからね!
0021デフォルトの名無しさん2007/01/14(日) 21:23:39
論旨がみえん
0022デフォルトの名無しさん2007/01/14(日) 21:28:08
インスタンスとオブジェクトのどっちが強いかだろ?
もちろんインスタンス
0023デフォルトの名無しさん2007/01/14(日) 21:35:24
インスタンス=実行単位
オブジェクト=メモリ上の状態
0024デフォルトの名無しさん2007/01/14(日) 21:54:02
class = instance builder object
0025デフォルトの名無しさん2007/01/14(日) 21:54:42
なにそれ?
0026デフォルトの名無しさん2007/01/14(日) 21:55:53
サーバーインスタンスという言葉がある
データベースオブジェクトという言葉もある
0027デフォルトの名無しさん2007/01/14(日) 22:03:36
ルーチン!ルーチン!
0028デフォルトの名無しさん2007/01/14(日) 22:04:31
鋳型=クラス
鋳物=インスタンス
どっちもオブジェクト
0029デフォルトの名無しさん2007/01/14(日) 22:05:12
コルーチン!コルーチン!コルーチンコルーチンコーチンコ!チンコ!
0030デフォルトの名無しさん2007/01/14(日) 22:06:22
じゃあクラスでないオブジェクトは何て言うの?
0031デフォルトの名無しさん2007/01/14(日) 22:08:11
問題は、

オブジェクトとは何か?
インスタンスとは何か?

だろ?
0032デフォルトの名無しさん2007/01/14(日) 22:08:34
インスタンスは相対的な言葉だよね
0033デフォルトの名無しさん2007/01/14(日) 22:10:15
プリミティブ型クラス
プリミティブ型インスタンス
結局全部オブジェクト。
0034デフォルトの名無しさん2007/01/14(日) 22:11:41
よーするによくわからん
ってことだな
0035デフォルトの名無しさん2007/01/14(日) 22:14:45
正解
0036デフォルトの名無しさん2007/01/14(日) 22:16:07
「構造体」=「クラス」
0037デフォルトの名無しさん2007/01/14(日) 22:25:20
C++はC言語の中途半端なオブジェクト指向拡張でしかないからなぁw
0038デフォルトの名無しさん2007/01/14(日) 22:30:11
クラスベースのオブジェクト指向しか扱ったことがないやつには理解できまい
0039デフォルトの名無しさん2007/01/14(日) 22:32:33
C++最強って思っていた時期が
オレにもありました
0040デフォルトの名無しさん2007/01/14(日) 22:39:36
>>38
たしかに私はC++とJavaしか嗜んでおりません
0041デフォルトの名無しさん2007/01/14(日) 22:50:20
javaはかなり無理をしてるがプリミティブにもクラス型があるからOOPに近い。
0042デフォルトの名無しさん2007/01/14(日) 23:13:26
JavaはOOPLといえるだろう
あとは使い手の問題
0043デフォルトの名無しさん2007/01/14(日) 23:53:22
そこでRubyですよ。
0044デフォルトの名無しさん2007/01/14(日) 23:58:57
Rubyはアラン・ケイにも認められてるOOPLだからね。
JRubyとかいうのがもしかしたら、将来最強になるかも。ねーよw
0045デフォルトの名無しさん2007/01/15(月) 01:03:06
インスタンスを日本語にすると、実体?実態? 
なんかどっちでも書いてあったりするけど、実体だよなぁ?
0046デフォルトの名無しさん2007/01/15(月) 01:10:14
文脈によって使い分けりゃいんじゃね
0047デフォルトの名無しさん2007/01/15(月) 01:13:30
若いの オラが村では派遣の問題を口にしちゃなんねーだ
お前さんはまだわけぇから言いたいこともあるべぇ
だべな、派遣問題を口にするとムキになって怒る者がおるでよぉ
問題の指摘は駄目だっぺぇ
派遣のことは口にしちゃなんねぇ
この村みたいな糞田舎で悲惨な生活するためにはよぉ
北朝鮮と一緒でよ、駄目のものを駄目と言ってはなんねえだべさ
0048デフォルトの名無しさん2007/01/15(月) 02:12:17
Wikipediaにはインスタンスの定義についてこう書いてある。

インスタンス
http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9

計算機科学でのインスタンス(instance)とは、オブジェクトの実体のことをいう。
instanceとは、英語で「実例」を意味する。オブジェクト指向言語においては、
多くの場合クラスと呼ばれるものを元に作成したオブジェクトの実体を指す。
データモデルやオブジェクト指向設計においても用いられる用語である。
インスタンスを生成することをインスタンス化(instantiate)という。

(略)


このように、同じオブジェクトでもメソッドなどの動きによってオブジェクトの状態が異なる。
そのときの一つ一つの状態のことをインスタンスと呼ぶ。

一般には、インスタンスはオブジェクトと同義として扱う事が多い。
0049デフォルトの名無しさん2007/01/15(月) 02:19:20
オブジェクトの状態をインスタンスと呼ぶ?

大丈夫かこの説明・・・
0050デフォルトの名無しさん2007/01/15(月) 02:19:28
ちんこ=オブジェクト
まんこ=オブジェクト
俺のチンコ=インスタンス
読めのマンコ=インスタンス
セクロス=メソッド

ちんこまんこにセクロスメソッドはあるけど
ちんこまんこだけではセクロスできない。
俺のチンコと読めのマンコというインスタンスがあってはじめて
セクロスメソッドは可能なのである。
0051デフォルトの名無しさん2007/01/15(月) 02:50:15
鋳型と鋳物の関係だろ
0052デフォルトの名無しさん2007/01/15(月) 02:51:14
>>49
むしろ非常にうまい説明だろ


というか、OOPLだとしても言語によって用語の使い方が微妙に違ったりするが・・・
0053デフォルトの名無しさん2007/01/15(月) 03:06:09
>>49
きになるなら、Wikiを修正してみてはどうだろう?
0054デフォルトの名無しさん2007/01/15(月) 03:57:43
>>28-30
クラス(鋳型)からできたインスタンス(鋳物)にメッセージを送れば反応する。インスタンスはオブジェクト。
クラスにnewというメッセージを送ると反応する。クラスもオブジェクト。
オブジェクトOSならウィンドウにメッセージを送れば反応する。ウィンドウはオブジェクト。

たぶん、クラス=newメソッドがあるオブジェクトと説明しないから皆こんがらがる。
もちろんnewメソッドがないクラスもある。
0055デフォルトの名無しさん2007/01/15(月) 07:56:31
>>50
その例はいい!
それでWiki書き換えてw
0056デフォルトの名無しさん2007/01/15(月) 08:07:05
オブジェクト=インスタンス
は違和感ある
インスタンスは、オブジェクトの状態を表す
は、ある意味そうだ
オブジェクトとインスタンスは対象が同じだから同じものとして
扱われる事もあるけど、意味は違う。
「ちんこ」は、その物体を表しているにすぎないからオブジェクト。
「俺のちんこ」は、「ちんこ」が「俺」上で稼動状態にあるからインスタンス。
0057デフォルトの名無しさん2007/01/15(月) 08:08:04
オブジェクトとインスタンスって同じ意味だと思ってた?違うの?

クラス=オブジェクトの仕様みたいの
オブジェクト=クラスの実体化したもの
インスタンス=オブジェクトの別名

じゃないの?
0058デフォルトの名無しさん2007/01/15(月) 08:11:59
オブジェクト=クラスの実体化したもの
インスタンス=稼動状態のオブジェクト
0059デフォルトの名無しさん2007/01/15(月) 08:20:41
オブジェクト=車
インスタンス=エンジンがかかってる車
一般に、両者は「車」と呼ばれて区別しないが、「車」に付随する状態があるかないかの違いがある
0060デフォルトの名無しさん2007/01/15(月) 08:23:46
つまり

インスタンス=オブジェクトのメンバの変数の状態

のことか

車だと

エンジンがかかっている/かかっていない
窓が開いている/開いていない

みたいな、その時々の情報まで考慮したオブジェクトのこと
0061デフォルトの名無しさん2007/01/15(月) 08:29:23
その情報は「実行中である」に限定されてるけどね
念のため、「実行中ではない」=オブジェクトではない
0062デフォルトの名無しさん2007/01/15(月) 08:42:59
クラスから作られた実態がインスタンス。
クラスとかそういうのに関係なく単に実態を示すのがオブジェクト。
0063デフォルトの名無しさん2007/01/15(月) 12:10:59
どうしておまいらはどうでもいい話題だとこんなに張り切るのか・・・
0064デフォルトの名無しさん2007/01/15(月) 12:51:06
・専門用語の意味がわかった(つもり)のヤツほど講釈をたれたがる
・さらに、自分の方言が標準語だと思い込んでるヤツが他の方言を訂正したがる
0065デフォルトの名無しさん2007/01/15(月) 13:53:35

馬鹿ばっかりだからマジレスしておく

クラスをインスタンス化したオブジェクトはエンティティだ
0066デフォルトの名無しさん2007/01/15(月) 15:53:26
>>28
> 鋳型=クラス
> 鋳物=インスタンス
それはいいとして、

> どっちもオブジェクト
それはちょっと違うと思う。オブジェクトになるものはSingletonのような
staticなインスタンスしか生成できないクラスだけなものだけ。
Singletonなオブジェクトは、インスタンスにしても一切変更できないし
どんな場合でも確実にインスタンス=オブジェクト
という状態が成り立つ。

不変クラスのオブジェクトについても同様に
インスタンス=オブジェクト
の関係が成り立つ。


現実世界を基準にすれば、別の意味では、森羅万象を構成するすべての
ものという意味で、オブジェクトと言うことになるけれども
プログラムの中ではちょっと違うかな。


一方、可変クラスのオブジェクトの場合は、
オブジェクトを生成したとき、そのオブジェクトのインスタンスは、
生成後も「可変クラスのオブジェクト」つまり「可変オブジェクト」ということで変化しうるので
同じオブジェクトでも状態が変化するから一つのオブジェクトでも異なるインスタンスを持つことができる。
よって、可変クラスのオブジェクトの場合は
インスタンス≠オブジェクト
という関係になる。

0067デフォルトの名無しさん2007/01/15(月) 15:55:39
●可変クラスの場合
オブジェクトとインスタンスとの関係は 1対多
クラスとオブジェクトとの関係も1対多

●不変クラスの場合
インスタンスを生成後、インスタンスを一切変更できないため

オブジェクトとインスタンスとの関係は1対1
クラスとオブジェクトとの関係は1対多

●Singletonの場合
インスタンスを一つしか生成できないため
(オブジェクトも一つしか生成できない)

オブジェクトとインスタンスとの関係は1対1
クラスとオブジェクトとの関係も1対1
0068デフォルトの名無しさん2007/01/15(月) 15:56:38
>>55
だめだろ。
つうか>>50の場合
ちんこまんこはクラスで
俺のちんこまんこはオブジェクトまたはインスタンス
0069デフォルトの名無しさん2007/01/15(月) 16:03:09
>>57
> オブジェクトとインスタンスって同じ意味だと思ってた?違うの?
> クラス=オブジェクトの仕様みたいの

それは合っている。
例としてここでは「人間」


> オブジェクト=クラスの実体化したもの

それは合っている。だが、厳密には、実態と言ってもそのとき
その瞬間の実体を表すものとはいえない。

例として、ここでは「ある人間A」。
ある人間Aは0歳の乳児であっても10代の少年であっても
20代の若者であっても40代の中年であっても
100歳の老人であっても、とにかく「ある人間A」というオブジェクトを表す。

ゆえに、newで生成したら、そいつはnullになるか再度newされたりFactoryなどから
makeされるまでずっと同じオブジェクト。


> インスタンス=オブジェクトの別名
> じゃないの?

違う。インスタンス=オブジェクトの実態
そのときその瞬間の実体を表すもの。


例として、ここでは「ある人間Aが50歳の時の姿」

newで生成されてから、インスタンスメソッドによって変更されれば、異なるインスタンスと見なされる。
0070デフォルトの名無しさん2007/01/15(月) 16:04:07
>>63
オブジェクト指向プログラミングになれてくると
確かにどうでもいいが、初心者が気にするようなので。
0071デフォルトの名無しさん2007/01/15(月) 16:04:32
>>64
そこでUMLの出番だ
0072デフォルトの名無しさん2007/01/15(月) 16:05:08
>>65
それも良いが。
実体をわざわざエンティティ
と英訳しただけに見えてしまうが
0073デフォルトの名無しさん2007/01/15(月) 16:48:18
俺はあえて抽象度合で区別すると

クラス>インスタンス>メソッド

だと思ってたんだけどちんこまんこ議論見てて自信なくなってきた
0074デフォルトの名無しさん2007/01/15(月) 16:49:14
×クラス>インスタンス>メソッド
○クラス>インスタンス>オブジェクト
0075デフォルトの名無しさん2007/01/15(月) 16:58:34
メモリの中に存在するのはインスタンスとクラスのみ
メモリのなかにオブジェクトは存在しない

BY どっかのだれか
0076デフォルトの名無しさん2007/01/15(月) 17:25:19
>>73
> 俺はあえて抽象度合で区別すると
> クラス>インスタンス>メソッド

メソッドと、クラス・インスタンスは畑違いだろ。


抽象度なら
クラス > オブジェクト > インスタンス


確かにメソッドも無形のものだが・・・・


0077デフォルトの名無しさん2007/01/15(月) 17:25:31
>>74
あ、訂正していたか
0078デフォルトの名無しさん2007/01/15(月) 17:26:02
>>75
インスタンスは存在するが、クラスは、存在方法が
異なる
0079デフォルトの名無しさん2007/01/15(月) 17:28:37
>>48
そもそもその文章の中の「実体」という日本語が指す意味が俺には分からんですたい
0080デフォルトの名無しさん2007/01/15(月) 17:31:31
うむむ
0081デフォルトの名無しさん2007/01/15(月) 17:32:00
>>77
俺も理解に苦しんだ
0082デフォルトの名無しさん2007/01/15(月) 17:32:44
クラスもメタクラスのインスタンスだったりする
0083デフォルトの名無しさん2007/01/15(月) 17:36:40
インスタンス「化」してオブジェクトを作るってところで
インスタンス>オブジェクト
って印象が付いたのかもな
0084デフォルトの名無しさん2007/01/15(月) 17:38:19
Pythonスレに出てくるメタクラスの人って何者?
0085デフォルトの名無しさん2007/01/15(月) 18:08:03
初心者でわからない単語ばかりです。
>>50 ベースでのトークは無理でしょうか?
ちなみに妹のマムコはインスタンスでいいんでしょうか?
0086デフォルトの名無しさん2007/01/15(月) 18:24:35
>>56
それで考えると、
「ちんこ」はオブジェクト
「俺の」はメモリ

メモリの上にオブジェクトが乗っかってる状態がインスタンス。
つまりメモリの上に乗った「瞬間」にそれをオブジェクトとは呼ばなくなると言うことか。

みかんはオブジェクト、そのみかんがアルミ缶の上に乗った状態をアルミカン-EXと名付ける。
アルミ缶の上にあるのはたしかにみかんだが、もはやそのみかんとアルミ缶を別々のものとして
名付けることは無意味な事。それそのものがアルミカン-EXなのだ。
0087デフォルトの名無しさん2007/01/15(月) 18:29:58
燃えてない火は無い
0088デフォルトの名無しさん2007/01/15(月) 18:52:35
>>79
たとえば
int x = 1;
という変数があったとしよう。
これのxはJavaではオブジェクトではなくプリミティブ型の変数であるが、

仮にオブジェクトだとしてみようするt。
オブジェクトxのインスタンスは1ということになる。

x=2;としたら
xのインスタンスは2ということだ。
0089デフォルトの名無しさん2007/01/15(月) 19:23:13
>>88
=メソッドが定義されているかによる
0090デフォルトの名無しさん2007/01/15(月) 19:23:59
>>88

ちがうよw
0091デフォルトの名無しさん2007/01/15(月) 19:25:48
intオブジェクトのインスタンスxだよ。
0092デフォルトの名無しさん2007/01/15(月) 19:28:14
Javaって変数がオブジェクトなの?
0093デフォルトの名無しさん2007/01/15(月) 19:31:13
まさかw
プリミティブ変数。ここに限界がある。
0094デフォルトの名無しさん2007/01/15(月) 19:33:26
int.classでプリミティブのクラス型はとれるけどな。
Integer.class != int.class、でもリフレクションのときは
Integerを放り込むあたりちょっとだけ破綻してる。
0095デフォルトの名無しさん2007/01/15(月) 19:53:17
Wikipediaの記事はJAVAの例しか書いてないから
誤解が生まれるな。
0096デフォルトの名無しさん2007/01/15(月) 20:01:18
>>92
Integer x = new Integer(1);とすればオブジェクト

今なら、Integer x = 1;
でもいい
0097デフォルトの名無しさん2007/01/15(月) 20:08:30
右辺の 1 そのものはオブジェクトなの?
0098デフォルトの名無しさん2007/01/15(月) 20:10:49
1も2もオブジェクト。

Cも変数のことオブジェクトって言うことがある。
英語の仕様書かなんかに書いてあった。
0099デフォルトの名無しさん2007/01/15(月) 20:14:00
全てがオブジェクトでしょ。
クラスオブジェクトからインスタンスオブジェクトを作るって話で、Javascriptだとprototype指向でクラスとインスタンスの区別が無いからオブジェクトと呼ぶと。
0100デフォルトの名無しさん2007/01/15(月) 20:17:17
そこらへんはSmalltalkとかRubyのが純粋だな
0101デフォルトの名無しさん2007/01/15(月) 20:24:05
ほなってメモリの上にオブジェクトなんてないねんもん。
■ このスレッドは過去ログ倉庫に格納されています