• 締切済み

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

お尋ねします。 既に、バリバリオブジェクト指向でプログラムを書いている方が多いので恐縮ですが、とあるサイトのオブジェクトのサンプルを使って、下記のようにサンプルソースを書いてみました。 --以下ソース--- <?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 です。

みんなの回答

  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.1

合っているかと。(さほど厳密に区別されずにインスタンスをオブジェクトと呼んだりもします) ただ少し気になるのは、 "$objectKamaboko の private $name に「'.$objectKamaboko->getName().'」と書いた" という表現です。 クラスを使っている立場の時には、あなたは「名前を"かまぼこ"とセットしただけ」です。 「private $name に書いたかかどうか」は知っていてはいけません。 クラスの中で、どのような変数が使われていて、どのような処理が行われているのかは分かってはいけません。(自分で作成したので当然知っているのですが、知らないことにしなければなりません) クラスを「作成する人」と「使う人」、頭を切り替えて2人の人間になってください。

besei
質問者

お礼

お礼が遅れて申し訳ありません。 なるほど「セットしてあった」「セットした」ですね。 旧)'$objectNerimono の private $name に「' . $objectNerimono->getName() . '」と、既に書いたあった';   "$objectKamaboko の private $name に「'.$objectKamaboko->getName().'」と書いた" ↓↓↓ 変)'$objectNerimono に「' . $objectNerimono->getName() . '」と、既にセットしてあった';   "$objectKamaboko に「'.$objectKamaboko->getName().'」とセットした" となるわけですね。 ありがとうございました。

関連するQ&A