0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHPで学ぶクラスとオブジェクトの理解

Posted at

##はじめに
オブジェクト指向プログラミングとして、PHPやJava,Ruby,Swiftなどプログラミングを学ぶ上で必要な「クラス」と「インスタンス」の理解をするために自分用に記録します。

##オブジェクトとは

関数や関連している変数をまとめてセットにしたもの。
変数と関数など別々に宣言せずに関連したものをまとめて
管理しやすくしたものがオブジェクト指向です。
(例:スライムAのセットの中にHPやMPを作るイメージ)

オブジェクト指向には「クラス」と「インスタンス」の側面があります。

##クラスとは

「クラス」は、オブジェクトの設計図と言われ、
宣言することで、どんな関数や変数を置くのかを決めて
クラスの内部で宣言をします。
全ての関連する変数や関数は、クラスの宣言のタイミングで決定します。
先ほどのスライムで例えると、クラス内部に$hp;や関数でfunction attack(){...}を宣言します。

宣言方法は、最初に class クラス名 {...}と書き
クラス宣言は、上方に変数、下方に関数を宣言します。

test.php

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 クラス名()という命令で生成します。

test.php

//インスタンスの生成と変数への代入
$slime_a = new Slim();
$slime_b = new Slim();
$slime_c = new Slim();

//インスタンスの使用
$slime_a->attack("主人公");
$slime_b->attack("主人公");
$slime_c->attack("主人公");

クラスという設計図があれば、上記のような
スライムabcのように何個でもインスタンス生成することが可能です。

##試してみよう

test.php

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
)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?