• ベストアンサー

インスタンスの定義について。

今プログラミングについて勉強しています。そこでよく耳にするのがインスタンスという言葉なんですが、本やネットで調べてもなんとなくわかったような、わからなかったような…。よく「実体」という例えは聞くんですが、実体というのはオブジェクトのことになるんじゃないんですか?ご指導お願いします。 あっ!!ちなみにインスタンスという言葉は、使い方によって意味が違ってくるなんてことはないですよね?

質問者が選んだベストアンサー

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

No.1のお答えは非常に的を射ていると思います。 蛇足ですが、例えで補足します。(多少厳密性は犠牲にしますが) オブジェクト、クラス、インスタンスといった時にオブジェクトはクラスと インスタンスの両方を意味する事が多いです。 例えば、ある車種を考えた時に、設計図がクラスです。クラスは車そのものではありません。 お客さんの注文内容と設計図から車が生産されます。出来た車の1台、1台が インスタンス(実体)です。 クラスとインスタンスは設計図と車と考えると理解しやすいです。 話は飛びますが、オブジェクトと言うのは「ある性質を持ち、周囲から刺激を受けると、ある振る舞いをするもの」と表現する事が出来ます。 人間も、動物も植物も、自動車もパソコンも全てオブジェクトです。 インスタンス(実体)がオブジェクトであることは明白です。 そこで、自動車の設計図を考えて見ます。 設計図は、それ自身は実体としての振る舞いはしないけれど、ちょうど、 遺伝子のように、実体を作り出すための情報を全て持っています。 つまり、実体ではないが、実体そのもの(というよりはオブジェクト)と いってもいい。 そこで、設計図(クラス)は、オブジェクトと言う事があるわけです。

その他の回答 (1)

回答No.1

「実体」は「例え」ではなくて、まさにインスタンスの「意味」です。 実体というのはオブジェクトのことです。 objectという用語は広範囲、多様であるのに対し、instanceといえば実体だと すぐ分かる。 class,型に対しinstance、実体があります。 objectはinstanceを指す場合もあるし、classとinstanceを指す場合、 classを指す場合(あまりないか)もあるし。なので、instanceと言う用語の 方が、何を意味するか分かりやすい。objectというと何を指すのか前後の文脈 から判断しなければなりません。 instance objectなんて好んで使い出したら、「煙にまこうとしてるな」と 予感してください。

関連するQ&A

  • インスタンスオブジェクトとはなんなのでしょうか

    現在Objective-cを勉強中なのですが、インスタンスオブジェクトの 意味がよくわかりません。ネットで調べても「インスタンス」と 「オブジェクト」それぞれの意味しか出てきません。 インスタンスオブジェクトという単語が出てきた参考書には以下のように 書かれています。 ---------------(引用ここから)------------------- - (int)up{ ・・・  return self; } selfはメッセージを受け取ってそのメソッドの処理をしている インスタンスオブジェクトそのものなので、返り値に対して 続けてメッセージを送ることができる。 ---------------(引用ここまで)--------------------------- どなたかインスタンスオブジェクトの意味をご教示いただけないでしょうか。 以上、何卒よろしくお願いいたします。

  • インスタンスとは?

    JAVAとかに出てくる「インスタンス」という言葉の意味をもっとわかりやすく教えてください。 小学生でもわかるような例えで教えてください

  • マルチプルインスタンスのメリット

    100%の自信をもって回答できる方のみ回答をお願いします。 Java等のオブジェクト指向プログラミング技術において、クラスからインスタンスを たくさん作れるというのが特徴の一つとなっていますが、クラスからインスタンスを たくさんつくれるメリットはなんでしょうか。 クラスからインスタンスをたくさん作れなくても、1つ作れば動くプログラムはたくさんありますし、 そういうプログラムであれば、staticなアクセスにすればよいですよね。 クラスからインスタンスがつくれることを説明した本やサイトは山ほどありますが、 インスタンスがたくさん作れることのメリットを説明した本をみたことがなく、 「なぜオブジェクト指向でつくるのか」という本を買って読みましたが、 納得がいくメリットを感じられませんでした。 また世の中のソースをみると、みんな、すぐにクラスを作ってオブジェクトを作っていますが、 みなさんがどうして、オブジェクトを作らなくてもコーディングできるケースのプログラムを オブジェクトを作るのか不思議でしかたありません。 どうしてオブジェクトを作らなくてもいいケースでもオブジェクトを作るのか、 またたくさんオブジェクトを作れるメリットはなんなのか、教えてください。

  • UMLでの「オブジェクト」と「インスタンス」の違い

    Java的な概念での説明や、単に「オブジェクト指向」と銘打つHPなどの説明では、「オブジェクト」と「インスタンス」は同じものとして扱われたり、「クラスオブジェクト」「インスタンスオブジェクト」等という言葉を持ち出し、単独の「オブジェクト」という言葉は存在しないなどと取れる説明をしていることが多いように感じます。 しかし、一般的にUMLを元にしたオブジェクト指向の考え方の下では「オブジェクト」と「インスタンス」という言葉は明確に使い分けられており、また「クラス」と「オブジェクト」は対極にあるものとして扱われるため、「クラスオブジェクト」等という言葉が使われることもありません。 下記URLと書籍では、「オブジェクト」と「インスタンス」を明確に使い分けています。 http://www.atmarkit.co.jp/fjava/devs/object04/object04.html テクノロジックアート UMLモデリングL1 P2,3 しかし、この使い分けのニュアンスの違いが理解できません。 オージス総研 初めて学ぶUML 21P では、「型/インスタンス」→「クラス/オブジェクト」という明確な解を提示していますが、微妙な感じだし、何より前出の2者とは明らかに異なる意味合いで使われています。 人によって異なる意味合いで使われているということは理解しています。また、その人による微妙な違いもおおむね理解しているつもりです。しかし、上記の2者のニュアンスだけは理解できない状態です。このニュアンスがわかる方、解説よろしくお願いします。

  • クラス、オブジェクト、インスタンスの理解で?

    お尋ねします。 既に、バリバリオブジェクト指向でプログラムを書いている方が多いので恐縮ですが、とあるサイトのオブジェクトのサンプルを使って、下記のようにサンプルソースを書いてみました。 --以下ソース--- <?php class Nerimono { private $name; public function __construct() { $this->name= 'ねりもの'; } public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } $objectNerimono = new Nerimono(); $objectKamaboko = new Nerimono(); $objectKamaboko->setName('かまぼこ'); $objectHanpen = new Nerimono(); $objectHanpen->setName('はんぺん'); echo 'Nerimono オブジェクトの $objectNerimono 実体(インスタンス)を生成した。'; echo "\n"; echo '$objectNerimono の private $name に「' . $objectNerimono->getName() . '」と、既に書いたあった'; echo "\n"; echo 'Nerimono オブジェクトの $objectKamaboko 実体(インスタンス)を生成した。'; echo "\n"; echo '$objectKamaboko の private $name に「' . $objectKamaboko->getName() . '」と書いた'; echo "\n"; echo 'Nerimono オブジェクトの $objectHanpen 実体(インスタンス)を生成した。'; echo "\n"; echo '$objectHanpen の private $name に「' . $objectHanpen->getName() . '」と書いた'; echo "\n"; --ここまで--- そして、これの実行結果が下記です。 C:\Temp>php Nerimono.php Nerimono オブジェクトの $objectNerimono 実体(インスタンス)を生成した。 $objectNerimono の private $name に「ねりもの」と、既に書いたあった Nerimono オブジェクトの $objectKamaboko 実体(インスタンス)を生成した。 $objectKamaboko の private $name に「かまぼこ」と書いた Nerimono オブジェクトの $objectHanpen 実体(インスタンス)を生成した。 $objectHanpen の private $name に「はんぺん」と書いた このコメントのような解釈で、合っておりますでしょうか? 今までオブジェクト指向のメリットが全然理解できず、関数の変わった呼び出し方法としか、理解できていませんでした。 PHPは、本来のオブジェクト指向とは違うようだとは、知っているつもりです。(Pブジェクト思考?w) 間違っているところあれば、ご指摘ください。m(_。_)m PHPは、Ver 5.3.5 です。

    • 締切済み
    • PHP
  • オブジェクト指向コンパイラのインスタンスの構造について

    インタプリタやコンパイラの中身について興味があり勉強しています。といってもまだ簡単な字句解析や構文解析のレベルです。 読んだ本にはオブジェクト指向言語については書かれていませんでした、そこで一つ疑問に思ったこと点について質問させてください。 簡単な言語の場合、使用する変数が宣言されると、その領域がスタックやヒープ空間に確保されるという風に理解しました。 一方オブジェクト指向言語にて、あるクラスのインスタンスを生成した場合を考えます。インスタンスには変数の他に関数やメソッドといった処理手続きが含まれていますよね。その手続きをコンパイルしたコードは何処に置かれているのでしょうか? 手続きのコードもヒープ空間に確保された各インスタンスの領域にコピー(?)されて実行されるのでしょうか。それとも処理手続きの実体は実行プログラムに含まれていて全インスタンスで共通で利用するようになっているのでしょうか。 初心者の素朴な疑問です、ご回答いただければ幸いです。

  • インスタンス変数について

    JAVA勉強中のものです。 インスタンス変数についてわからないのですが、 class Data{int d;} classSample{ public static void main(String[] args){ Data data1 =new Data(); Data data2 =new Data(); data1.d = 100; data2 = data1; data2.d = 200; System.out.println(data1.d); } } 実行すると200が表示されますが、new演算子によってできたオブジェクトの実体を参照する ID がdata1およびdata2に入るのは理解できるのですが、 インスタンス変数のdはメモリ上でどう設定されているかイメージがわきません。 わかる方どうぞ教えて下さい。

    • ベストアンサー
    • Java
  • インスタンスとオブジェクト

    こんばんは。 変数について教えて下さい。 プログラム自体が初めてなので 「たのしい Ruby 第3版」を読んでいます。 ずっとインスタンスとオブジェクトの違いが曖昧なままです。 その本の「クラスとモジュール」という章にて クラスを定義する構文。 インスタンス変数とローカル変数の違いですが、 以下の説明で一部理解できずにつまずいています。 ―――――――――――― @ で始まる変数は インスタンス変数 といいます。 ローカル変数はメソッドごとに異なる変数として扱われますが、 インスタンス変数は同じインスタンス内であれば、 メソッド定義を超えてその値を参照したり、変更したりできます。 なお、初期化されていないインスタンス変数を参照すると nil が得られます。 インスタンス変数は、インスタンスごとに違う値を持つことができます。 またインスタンス変数は、 インスタンスがある間は値を保持しておいて 何度でも利用することができます。 一方、ローカル変数はメソッド呼び出しごとに新しく割り当てられるため、 メソッドから抜けると値を忘れてしまいます。 ―――――――――――― ここで分からないのは、 ・ローカル変数が "メソッドごと" に異なる変数として扱われる ・インスタンス変数は同じ "インスタンス内" であれば、 メソッド定義を超えてその値を参照したり、変更したりできます の部分です。 Webで検索してますが、 プログラミング経験ありを前提で書かれているような。 他の言語も知らないので分からない、そんなページが多いです。 人に聞くからには 自分でも頑張って理解できるように考えますので、 どうか回答よろしくお願いします。

    • ベストアンサー
    • Ruby
  • インスタンスリカバリとメディアリカバリの違いは?

    こんにちは。 Oracle Bronze の勉強中なのですが、iStudyをやっていたら、「インスタンスリカバリ」と言う言葉が出てきました。黒本で調べたのですが、そういう言葉は載っていませんでした。 メディアリカバリとは、完全・不完全リカバリ等のことをいうのですよね?では、インスタンスリカバリとはどういう意味なのでしょうか? わかりやすく教えていただければありがたいのですが。 よろしくお願いいたします。

  • インスタンスとスレッドの違い

    Javaカテゴリでお訊きすることではないとも思うのですが、今、Javaを勉強中で、その中でもマルチスレッドの段階に入ってきたので、こちらで質問させて頂きました。 インスタンスとスレッドって、要は何が違うのでしょうか。 当方はプログラミング歴自体は、C言語で仕事で10年以上やっていて、その中では、組み込みもやりましたから、当然マルチスレッド環境のソフトにも関わってきましたが、 スレッドの原理的な制御部分はできあがった状態でプロジェクトに参入することが多く、担当を任されたスレッドの中で(要は閉じた中で)の仕事経験しかありません。 そこにきて今、Javaをゼロから勉強してみると、あくまでインスタンスとスレッドは分けて表現されており、 私も本を読み進めてみて、感覚的にはわからないではないですが、ちょっと立ち入った説明になると、双方がごっちゃになりわからなくなってしまいます。 どなたかお教え頂けませんか。 Javaの文法的なことは一通り勉強しましたし、C言語の素地もあるので、難しめの話でも結構ですし、たとえ話でも結構です。よろしくお願いします。

専門家に質問してみよう