アバター作成画面で理解する「クラス」と「インスタンス」

オブジェクト指向の最初の壁は、

「クラス」と「インスタンス」の違いです。

今日は、ゲームのアバター作成画面を例にして整理してみましょう。


🎮 アバター作成画面を思い出してください

ゲームでキャラクターを作るとき、こんな画面があります。

入力する内容は例えば:

  • 名前
  • 性別
  • 髪型
  • HP
  • 攻撃力

ですよね。


🧱 クラスとは何か?

クラスとは、

「どんな情報を持つか」を決めた設計図

です。

例えば、C#ではこう書きます。

class Player
{
    public string Name;
    public int Hp;
    public int Attack;
}

これはまだキャラクターそのものではありません

これは、

「プレイヤーとは、名前・HP・攻撃力を持つものですよ」

という設計書です。


🏗 インスタンスとは何か?

では、実際のキャラクターはいつ作られるのでしょうか?

アバター作成画面で

OKボタンを押した瞬間を想像してください。

プログラム内部では、こういう処理が行われます。

Player p = new Player();

この new が重要です。

new が実行された瞬間、

設計図(クラス)から

実体(インスタンス)が作られます


※ここで大事な補足

ここでは例えとして「OKボタン」と言っていますが、

実際にインスタンスを作っているのは new です。

ボタンそのものが作っているわけではありません。

ボタンが押されたことをきっかけに、

プログラムの中で new が実行されている、というイメージです。


🧠 対応関係を整理すると

ゲーム画面C#の世界
アバター作成画面クラス(設計図)
OKボタン(きっかけ)new の実行
作られたキャラインスタンス

つまり、

インスタンスとは「実際にメモリ上に作られた実体」です。


🔥 同じ設計図から何人でも作れる

Player p1 = new Player();
Player p2 = new Player();
Player p3 = new Player();

クラスは1つでも、

インスタンスは何個でも作れます。

ここが非常に重要です。


🛠 実際に入力してPlayerを作ってみよう

では、アバター作成画面を

コンソールアプリで再現してみます。

class Player
{
    public string Name;
    public int Hp;
    public int Attack;
}

class Program
{
    static void Main()
    {
        Console.Write("名前を入力してください: ");
        string name = Console.ReadLine();

        Console.Write("HPを入力してください: ");
        int hp = int.Parse(Console.ReadLine());

        Console.Write("攻撃力を入力してください: ");
        int attack = int.Parse(Console.ReadLine());

        Player player = new Player
        {
            Name = name,
            Hp = hp,
            Attack = attack
        };

        Console.WriteLine();
        Console.WriteLine("----- 作成されたキャラクター -----");
        Console.WriteLine($"名前: {player.Name}");
        Console.WriteLine($"HP: {player.Hp}");
        Console.WriteLine($"攻撃力: {player.Attack}");
    }
}

🔍 ここで何が起きているのか?

① new が実体を作る

Player player = new Player

この瞬間に、

メモリ上にPlayerの実体が作られます。


② { } は生成直後の代入

{
    Name = name,
    Hp = hp,
    Attack = attack
}

これは、

作られた直後のインスタンスに

値を代入しているだけです。


🎯 重要な理解ポイント

  • クラスは設計図
  • new が実体を作る
  • オブジェクトは「まとめて扱えるデータのかたまり」

変数をバラバラに扱うのではなく、

player.Name
player.Hp
player.Attack

のように、

「player」という1つのまとまりとして扱える。

これがオブジェクト指向の第一歩です。


📌 まとめ

  • クラス = 設計図
  • new = 実体を作る命令
  • インスタンス = 実際に作られたオブジェクト
  • 同じ設計図から何個でも作れる

アバター作成画面は、

オブジェクト指向を理解するための

とても良い例です。

難しく考える必要はありません。

設計図から実物を作る。

まずはそこをしっかり押さえましょう。


訪問数 2 回, 今日の訪問数 3回