• ベストアンサー

php インスタンスとオブジェクトの呼び方

new obj = new Test(); という一文は、 「Testクラスのオブジェクト、objを作成している」という考えを持っています。 オブジェクトは物という概念で、 「Testクラス を new して、objインスタンスを作成している」 というのが正しいのでしょうか? 【objを Testオブジェクトと呼ぶのは間違っているのでしょうか? objは Testインスタンスと呼ぶのがやはり正しいのでしょうか?】 知り合いにも、インスタンスではなくオブジェクトと呼んでる人が多いのでわからなくなってきました。 ご教授お願いします。

  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

> new obj = new Test(); 確認ですが、 $obj = new Test(); var $obj = new Test(); などの typo という事で良いでしょうか? > objを Testオブジェクトと呼ぶのは間違っているのでしょうか? 間違っていないと思います。 > objは Testインスタンスと呼ぶのがやはり正しいのでしょうか? 実体という事を強調したい場合はそういう言い方をする場合が多いですが、「Testオブジェクト」という言い方が間違っているわけでは有りません。 オブジェクト指向の話題では、ほとんどの文脈で「オブジェクト」と「インスタンス」は同じ意味で使われると思いますよ。 ↓のページでもほとんど同じ意味で使っていますね。 http://www.php.net/manual/ja/language.oop5.basic.php また、下記のページにもある様に「オブジェクト」という単語はいろいろな意味で使われる事が有るので、混乱を避けるために「インスタンス」と言い換える事も有りますね。 http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88 逆に(DBのインスタンス等の)クラス以外のインスタンスと混同しやすい文脈では、「オブジェクト」といったほうが明確になるときも有るでしょう。

ShiftTail
質問者

お礼

>実体という事を強調したい場合はそういう言い方をする場合が多いですが、「Testオブジェクト」という言い方が間違っているわけでは有りません。 間違っているわけではないのですね。 良かったです。 >下記のページにもある様に「オブジェクト」という単語はいろいろな意味で使われる事が有るので、混乱を避けるために「インスタンス」と言い換える事も有りますね。 時と場合によるのかな。とも思いました。 情報ありがとうございました。

その他の回答 (2)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.3

> new obj = new Test(); > > という一文は、 > > 「Testクラスのオブジェクト、objを作成している」という考えを持っています。 ここを「Testクラスのオブジェクトを作成し、それに対してobjという名前を付けている」あるいは「Testクラスのオブジェクトを作成し、objと書かれたポストイットをそれに張り付けている」という見方でプログラムを見ると今後のオブジェクト指向の考え方に一役買うのではと思っております。 > 「Testクラス を new して、objインスタンスを作成している」 こちらの言い方は私の中ではNGですな。○○インスタンスの○○はクラス名が入るべきだと思います。 「Testクラスをnewして、Testインスタンスobjを作成している」という言い方だとGood。 オブジェクト、クラス、インスタンスの表現の仕方はみんなまちまちなので人としゃべる時に意思の疎通ができれば問題ないかと。ちなみに私はオブジェクトという言葉は極力使わず、クラス(設計図)とインスタンス(設計図を基に作成された実体)という表現をします。

ShiftTail
質問者

お礼

>Testクラスをnewして、Testインスタンスobjを作成している」という言い方だとGood。 >オブジェクト、クラス、インスタンスの表現の仕方はみんなまちまちなので人としゃべる時に意思の疎通ができれば問題ないかと。ちなみに私はオブジェクトという言葉は極力使わず、クラス(設計図)とインスタンス(設計図を基に作成された実体)という表現をします。 なるほど。言葉一つでも結構難しいものですね。 参考にさせていただきたいと思います。 ありがとうございました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

> objを Testオブジェクトと呼ぶのは間違っているのでしょうか? 間違ってないのでは。 > objは Testインスタンスと呼ぶのがやはり正しいのでしょうか? これも正しいです。 オブジェクトは広義の概念ですので、文脈を考慮する必要があります。 話し言葉の場合、文脈はspeakerやlistenerに応じますから、そういったことが不明な状態で質問しても明確な回答は得られないかと。

ShiftTail
質問者

お礼

>話し言葉の場合、文脈はspeakerやlistenerに応じますから、そういったことが不明な状態で質問しても明確な回答は得られないかと。 なるほど。ありがとうございます。 参考になりました。

関連するQ&A

  • インスタンスオブジェクトとは何かについて教えて!!

    下記内容はあるサイトのインスタンスについての説明文です。 画像は、自分なりに理解したものです。 (1)メモリ上には記憶場所(=ポインタ)はない (2)var Aa = new Bb("13" , "smole");とscript内に追加されたことにより メモリ上に記憶場所(=ポインタ)が作成され、 BbオブジェクトつまりBb("13" , "smole");がその記憶場所(=ポインタ)に入る (3)そしてBb("13" , "smole");が入った 記憶場所(=ポインタ)にAaという名前を付ける。 考え方に間違いがあるでしょうか? ---------------------------------------------------- var Aa = new Bb("13" , "smole"); これは、BbクラスオブジェクトのBbコンストラクタをnew演算子を利用して起動しています。 new演算子は、メモリ上に記憶場所を確保して、Bbオブジェクトを作成した後、そのポインタを返す演算子です。 new演算子から返されたポインタは、Aaへ格納されます。この場合のAaをBbオブジェクトのインスタンスといいます。 また、new演算子でメモリ上に記憶場所を確保して作られたオブジェクトをインスタンスオブジェクトといいます。 つまり、 オブジェクト == インスタンスオブジェクト で、 インスタンス != インスタンスオブジェクト インスタンス != オブジェクト です。 ----------------------------------------------------

  • オブジェクトとインスタンスはそれぞれあってますか?

    オブジェクトとインスタンスはそれぞれあってますか? vbaで Sub test() Dim CN As ADODB.Connection 【1】 Set CN = New ADODB.Connection  【2】 ・・・ それぞれ 【1】オブジェクトの作成 【2】インスタンスの作成 であってますか?逆ですか? 動作の名称を教えてください。

  • javascriptのObject()コンストラクタについて質問です。

    javascriptのObject()コンストラクタについて質問です。 var obj = new Object(); var obj2 = Object(); console.log(obj === obj2)//false いつも質問ばかり恐縮です。。。 どこかのサイトでこの2つは等価みたいな記事を読んだような気がするのですが、 ということはObjectコンストラクタでオブジェクトを作る際はnew演算子は要らない?? のでしょうか?? またobjとobj2の2つの違いを色々試したのですが違いがわかりません。new演算子を 付けたインスタンスと付けないインスタンス??の違いをどなたか ご教授いただけると助かります。

  • インスタンスとオブジェクト 生成

    クラスのオブジェクトを生成するときに(newをつかって) ●インスタンスを生成する。 ●オブジェクトを生成する。 と参考書に書いてありますが、言い方はどちらでもいいそうです。 でも、2種類の言い方がるということは厳密には意味が違うような気がするのですが、皆さんはどう思いますか? またどちらの言い方を使っていますか? どちらが正しいのでしょうか?

    • ベストアンサー
    • Java
  • UMLでの「オブジェクト」と「インスタンス」の違い

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

  • クラス、オブジェクト、インスタンス、メソッドについて。

    クラス、オブジェクト、インスタンス、メソッドに ついて教えていただけないでしょうか? 今現在の自分の認識では、乗り物を例にすると、 「乗り物」という大枠がクラス。それを、たとえば 飛行機なり電車なり船なり、より具体的にした ものがインスタンス=オブジェクト。 その具体化したものの挙動、動作(走るとか飛ぶとか) がメソッド、という理解です。 ただ、これだとオブジェクトとインスタンスを 同じものとして見てしまっているので、この2つの 違いを明確に説明しろと言われると困ってしまいます。 インスタンスとオブジェクトの違いを明確にした上で うまく伝えられる方法があれば、ご教授ください。

  • javascriptを只今勉強中なのですが、オブジェクトについてこんが

    javascriptを只今勉強中なのですが、オブジェクトについてこんがらがってしまいました。 var obj = new Object(); var obj2 = {}; Object.prototype.prop1 = "hoge"; obj,obj2共にprop1にhogeがセットされるのですが、オブジェクトリテラルのobj2は Objectコンストラクタのインスタンスと解釈できるのでしょうか?? new演算子について色々とfirebugで調べていたところこの疑問が出てきました。 newなしでもインスタンスができるのでしょうか? オブジェクトを理解していないので意味不明な質問かもしれませんが どなたかアドバイスいただけると嬉しいです。

  • モジュールの概念・リファレンスとオブジェクト

    {  package TEST;  new { bless {}; }  method {} } 最も簡単な(何もしない)クラスを作ってみたのですが、 $obj = new TEST; とした場合、この戻り値は『自分がどのパッケージに属しているか知っているリファレンス』である、と理解しました。 ここで考えたのですが、パッケージ外で $obj->method(); とした場合は『クラスのメソッド』を呼べると思うのですが 『自分がどのパッケージに属しているか知っているリファレンス』=要するにリファレンス に対してアロー演算子をつけると、クラスオブジェクトを表すようになるという概念が理解できません。 $obj->method(); は リファレンス->関数 という事になり、意味がわかりません。 挙動はわかるのですが、内部的にどのように処理しているのかをご存知の方、もしくはそれに関して言及している資料などご存知の方が居ましたら教えていただけないでしょうか。 よろしくお願いします。

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

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

    • ベストアンサー
    • Ruby
  • Objectの型チェック

    $obj = new Car(); としたとき、 $obj変数がCarクラスのインスタンスであるということをチェックしたいのですが、どのような手段がありますでしょうか。 もしかして、PHPでは無理ですか? よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう