オブジェクト指向コーディング実演

2023年9月5日

教科書で勉強すると、どうしても写す作業、暗記作業になってしまう方がおられますね
教科書を写すことは決して悪いことではないのですが、作者はノーミスで上から順番に作っていっているんだと固定観念で捉えるとスキル向上の妨げになります

実際のコーディングのサンプルを見てもらって、そんなことはないんだ、自分も間違えながら作成してもいいんだという意識づけで眺めてもらうといいと思います

また、インテリセンスを最大限活用している様子も見てもらえるといいでしょう
あなたは、どれくらいインテリセンスを使いこなせているでしょうか?

また、自分のコードのクラス図やシーケンス図をビジュアルで確認してイメージを作っていきましょう
これまでは、これらの図は自分で頑張って作ることが一般的でしたが、今回はこれすらも AIを使って支援してもらうことにします

あらためてですが、コード書く順に正解はありません
今回はインテリセンスでクラスを作成してもらいましたが、もちろん、ご自身でクラスを先に作成しても構いません
これしか正解がないというものではないのです
そう強く思った時点で、色々なコードを見て混乱してしまい、何が正解か分からず、プログラムは難しい・・・となってしまいます

企画

Playerが1人、敵(Enemy)が1匹でPlayerが敵に攻撃を仕掛けます
敵の名前はスライムです
攻撃されると、「スライムに攻撃された」とコンソール画面に表示されます

ライブ

コンソールアプリでオブジェクト指向プログラミングのライブをしてみます
未編集です
なので、間違えたり、それを修正したりしています
教科書は最終的に完成したものを掲載していますが、実際はタイプミスやスペルミスがあるものです

コード生成1

〜敵の名前を代入するところまで

 コード生成2

〜実行するところまで

出来上がったコード

Player player = new Player();
Enemy enemy = new Enemy();
enemy.Name = "スライム";

player.Attack(enemy);

internal class Enemy
{
    public string Name { get; set; }
}

internal class Player
{
    public Player()
    {
    }

    internal void Attack(Enemy enemy)
    {
        Console.WriteLine($"{enemy.Name}に攻撃した");
    }
}

UML図のAI自動生成

PlantUML図サンプル

Regenerateの度に違ったものができますので、各自判断しましょう

クラス図

シーケンス図

PlantUML作成ページ

リファクタリングしてもらった

リファクタリングの指示をすることもできます
ただし、必ずしも正しいとは限りませんので、自分の実力をアップさせて、判断するスキルをつける必要があります

おまけ

C#のオブジェクト指向を5歳児にでもわかるように説明して

もちろんです!C#のオブジェクト指向を5歳の子供に説明しましょう。

ねえ、オブジェクト指向って、プログラムをする時に、物事を考える方法の一つなんだよ。これを考えると、プログラムを書くのが簡単になることがあるんだよ。

  1. オブジェクト(物):まず、何か物事を考えてみよう。例えば、動物や果物があるよね。それぞれの動物や果物は、特有の性質や行動を持っているでしょ?犬は吠えるし、リンゴは赤いことが多いよね。この物事をプログラムの中で表現するのがオブジェクトなんだ。
  2. クラス(種類):オブジェクトがたくさんあると思うけど、似たような性質や行動を持つオブジェクトはグループに分けられるよ。例えば、犬のオブジェクトと猫のオブジェクトは、どちらも動物クラスに属するよ。クラスは、同じ種類のオブジェクトを作るための設計図みたいなものだよ。
  3. メソッド(動作):オブジェクトができることも考えてみよう。例えば、犬は吠えることができるし、猫は鳴くことができるよね。これらの動作をメソッドと呼ぶんだ。メソッドは、オブジェクトが何かをする方法を教えてくれるんだ。
  4. プロパティ(性質):オブジェクトが持つ性質も大切だよ。例えば、犬は色が茶色か黒か白か、猫は毛の長さが長いか短いか、という性質があるでしょ?これをプロパティと呼ぶんだ。プロパティはオブジェクトの特徴を表すんだ。

だから、C#のオブジェクト指向は、プログラムを作るときに、物事をオブジェクトとして考え、それらをクラスにまとめて、メソッドで動作を定義し、プロパティで性質を表現する方法なんだよ。これによって、プログラムが整理されて、理解しやすくなるんだ。楽しいプログラム作りを始めてみてね!

new キーワードを5歳児でもわかるように説明して

もちろんです!"new"キーワードを5歳の子供にも分かるように説明しましょう。

ねえ、"new"っていうのは、新しいものを作る魔法の言葉みたいなものなんだよ。例えば、おもちゃがあると思ってみて。それを使いたい時、新しいおもちゃを作ることができるんだ。これをプログラムの中でやるときに、"new"って言葉を使うんだ。

たとえば、おもちゃの名前を指定して、新しいおもちゃを作るときは、こんな感じだよ:

Toy myToy = new Toy("ロボット");

これで、"ロボット"っていう名前の新しいおもちゃができるんだ。"new"は、新しいものを作るための特別な命令って思ってね。

だから、"new"はプログラムの中で新しいものを作るための魔法の言葉みたいなもので、何か新しいものが必要なときに使うんだよ。