##はじめに
オブジェクト指向プログラミングとして、PHPやJava,Ruby,Swiftなどプログラミングを学ぶ上で必要な「クラス」と「インスタンス」の理解をするために自分用に記録します。
##オブジェクトとは
関数や関連している変数をまとめてセットにしたもの。
変数と関数など別々に宣言せずに関連したものをまとめて
管理しやすくしたものがオブジェクト指向です。
(例:スライムAのセットの中にHPやMPを作るイメージ)
オブジェクト指向には「クラス」と「インスタンス」の側面があります。
##クラスとは
「クラス」は、オブジェクトの設計図と言われ、
宣言することで、どんな関数や変数を置くのかを決めて
クラスの内部で宣言をします。
全ての関連する変数や関数は、クラスの宣言のタイミングで決定します。
先ほどのスライムで例えると、クラス内部に$hp;や関数でfunction attack(){...}を宣言します。
宣言方法は、最初に class クラス名 {...}と書き
クラス宣言は、上方に変数、下方に関数を宣言します。
class slime {
// オブジェクトの変数
public $type = "スライム";
public $hp = 20;
public $power = 12;
//オブジェクトの関数
function attack($character_name) {
print $this->type . "が" . $character_name . "を攻撃して" . $this->power . "ポイントのダメージを与えた!!" . PHP_EOL;
}
}
##インスタンスとは
インスタンスはオブジェクト(つまりスライム)の中身です。
クラスを宣言($hp;)したところにインスタンスを
new クラス名()という命令で生成します。
//インスタンスの生成と変数への代入
$slime_a = new Slim();
$slime_b = new Slim();
$slime_c = new Slim();
//インスタンスの使用
$slime_a->attack("主人公");
$slime_b->attack("主人公");
$slime_c->attack("主人公");
クラスという設計図があれば、上記のような
スライムabcのように何個でもインスタンス生成することが可能です。
##試してみよう
class Slime {
public $type = "スライム";
public $hp = "25 ";
public $power = 15;
function attack($charanter_name) {
print $this->type . "が" . $character_name . 'を攻撃して' . $this->power . 'ポイントのダメージを与えた!' . PHP_EOL;
}
}
$slime_a = new Slime();
$slime_a->attack("主人公");
print_r($slime_A);
$php memo.php
▼実行結果
スライムが主人公を攻撃して3ポイントのダメージを与えた!
Slime Object
(
[type] => スライム
[hp] => 10
[power] => 3
)