【PHP初心者向け】クラスは「量産工場の設計図」だ!newで生み出し->で操る神の視点

クラス プログラミング

初心者殺し「クラス」

プログラミングを学んでいると、必ずぶつかる巨大な壁があります。

「オブジェクト指向」

この言葉を聞いた瞬間、多くの初心者がアレルギー反応を起こし、PCをそっと閉じます。

本を開けば「クラスとは、たい焼きの型である」という、手垢のついた説明ばかり。たい焼きはもう食べ飽きました。

今日は、できるだけ直感的に解説します。

クラスとは「量産工場の設計図」です。

そしてあなたは、その設計図を使ってモンスターやロボットなど好きなものを無限に生み出す「工場長(あるいは神)」です。


クラス:ただの「紙切れ」に過ぎない

まず、コードを見てください。これがクラスです。

class Monster {
    // ここに中身を書く
}Code language: PHP (php)

これは、ただの定義です。「モンスターとはこういうものだ」と書かれた設計図に過ぎません。

見ての通り、このままでは何も起きません。

設計図に向かって「攻撃しろ!」と叫んでも、紙が揺れるだけです。戦うためには、後でこの設計図をもとに、「実体化」させる必要があります。


プロパティとメソッド:スペックと必殺技

設計図には、2つの情報を書き込みます。

  • プロパティ(Property):そのモノの特徴。データ。
  • メソッド(Method):そのモノができること。処理。

RPGのモンスターで考えましょう。

class Monster {
    // プロパティ(特徴)
    public $name;
    public $hp;

    // メソッド(できること)
    public function attack() {
        echo "攻撃した!";
    }
}Code language: PHP (php)

プロパティ:名前(name)や体力(hp)といったステータス。
メソッド:攻撃する(attack)という動作。中身は以前解説した「関数」と同じです。

これで「名前とHPを持ち、攻撃ができる何か」の設計図が完成しました。

※attack()ではechoがひとつだけなので、実際に攻撃しているようには見えないかもしれませんが、モンスターが攻撃を行うものとお考え下さい。


インスタンス化:命を吹き込む「new」

設計図ができたら、工場を稼働させます。ここで使う魔法の言葉が new です。

$slime = new Monster();Code language: PHP (php)

この瞬間、パソコンのメモリ上に「モンスターの実体」が誕生しました。
これを専門用語で「インスタンス(実体)」または「オブジェクト」と呼びます。

設計図(クラス)から、実物(インスタンス)がポンと飛び出してくる。
newを書くたびに、新しいモンスターが次々と産まれます。

$goblin = new Monster(); // ゴブリンを生む
$dragon = new Monster(); // ドラゴンを生むCode language: PHP (php)

1枚の設計図から、異なる個体を無限に量産できる。これがクラスを使う最大のメリットです。


アロー演算子(->):こいつに命令しろ

産まれたモンスターは、まだ空っぽです。名前もなければHPもありません。
こいつらを操作するために使うのが、矢印 -> です。

正式名称は「アロー演算子」ですが、「指差し確認」だと思ってください。

「お前の名前はこれだ!」

と指図するイメージです。

// スライムの設定
$slime->name = "スライム"; // 「スライム」という名前をつける
$slime->hp = 10;           // HPが10と設定

// ゴブリンの設定
$goblin->name = "ゴブリン"; // 「ゴブリン」という名前をつける
$goblin->hp = 50;          // HPが50と設定 Code language: PHP (php)

同じMonsterという設計図(クラス)から生まれましたが、中身(プロパティ)は別々です。
スライムがダメージを受けても、ゴブリンのHPは減りません。それぞれが独立した存在だからです。

メソッド(技)を使うときも矢印を使います。

$slime->attack(); // 結果:攻撃した!Code language: PHP (php)

まとめ:神の視点で世界を作れ

オブジェクト指向、などと難しく考える必要はありません。

  • クラス:設計図を書く(class)
  • インスタンス:実体化する(new)
  • 操作:矢印でいじる(->)

これだけです。

もしクラスを使わずにRPGを作ろうとしたら、「スライムAの名前」「スライムAのHP」「スライムBの名前」……と、大量の変数を管理することになり、あなたは発狂します。

クラスを使えば、「モンスター」という概念を一つ作るだけで済みます。

あなたはコードの世界の創造主です。設計図を描き、newで命を吹き込み、世界を構築してください。

本記事では、クラスの中でも最も重要な概念を解説しました。クラスにある他の機能については他記事で解説しますので、お楽しみに!

コメント

タイトルとURLをコピーしました