Visual Studio 2015 C#:ウルトラマンをオブジェクト指向で表現

霜月になりましたね。武田です。

ウルトラマンは、スペシウム光線を使った!
ウルトラマンは、マッハ5で飛んだ
ウルトラセブンは、アイスラッガーを使った!
ウルトラセブンは、マッハ7で飛んだ

突然で恐縮です。
文章に書くと何気ない言葉ですが、今日はこれをオブジェクト指向のプログラミング言語を使って表現したいと思います。

ひたちなか情報電子専門学院のSE・プログラマコースではC#というオブジェクト指向プログラミング言語を学んでいます。
現在、ソフト開発の分野では、オブジェクト指向のプログラミング言語が主流となっています。

教科書的な物言いをすると、オブジェクト指向とは、物事の単位を全てオブジェクトとして表す考え方です。
何かに例えて分かりやすく言うなら、こんな感じです。

「人」というものがある(単位)

「人」は手が2本ある(要素)
「人」は足が2本ある(要素)
「人」は目が2つある(要素)
「人」は口が1つある(要素)
     :

「人」が笑う(振る舞い)
「人」が怒る(振る舞い)
「人」が遊ぶ(振る舞い)
     :

物(オブジェクト)を何かの単位ととらえて、要素と振る舞いに分けて考えることです。

例えばウルトラマンはこうなります。

    // ウルトラマンクラス
    class UltraMan
    {
        // ウルトラマンの要素
        private string name;		// 名前
        private string waza;		// 必殺技
        private int speed;		// 飛行スピード

        // ウルトラマン誕生(名前、必殺技、飛行スピードを設定)
        public UltraMan(string _name, string _waza, int _speed)
        {
            name = _name;
            waza = _waza;
            speed = _speed;
        }
        // 攻撃をする
        public void Attack()
        {
            Console.WriteLine(name + "は、" + waza + "を使った!");
        }
        // 空を飛ぶ
        public void Fly()
        {
            Console.WriteLine(name + "は、マッハ" + speed + "で飛んだ");
        }
    }

この場合、ウルトラマンは「名前」、「必殺技」、「飛行スピード」という3つの要素と「攻撃する」「空を飛ぶ」という2つの振る舞いを持っているということになります。

ウルトラマンクラスとありますが、クラスはオブジェクトの設計図みたいなものです。
でもこのままではウルトラマンは設計図のままです。

実際にこのクラスを元にウルトラマンとウルトラセブンを登場させるには、こんな感じです。

UltraMan man = new UltraMan("ウルトラマン", "スペシウム光線", 5);
UltraMan seven = new UltraMan("ウルトラセブン", "アイスラッガー", 7);

これで「ウルトラマン」(プログラム上の名称はman)と「ウルトラセブン」(プログラム上の名称はseven)が登場しました。
この2人に何かさせます。

man.Attack();
man.Fly();

seven.Attack();
seven.Fly();

これを実行すると、冒頭の

ウルトラマンは、スペシウム光線を使った!
ウルトラマンは、マッハ5で飛んだ
ウルトラセブンは、アイスラッガーを使った!
ウルトラセブンは、マッハ7で飛んだ

となるわけです。
日常を自然な形でプログラミングできるため、オブジェクト指向は面白い考え方だとわたしは思います。

Visual Studio 2015で確認する場合は、新規プロジェクトを作成して名前欄に「ウルトラマンをクラスで表現」と入力し、コンソールアプリケーションを選択します。
ソリューションエクスプローラーの中にあるファイル「Program.cs」をクリックして、ファイル内容を全て消して以下に置き換えると動作確認することが出来ます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ウルトラマンをクラスで表現
{
    // ウルトラマンクラス
    class UltraMan
    {
        // ウルトラマンの要素
        private string name;		// 名前
        private string waza;		// 必殺技
        private int speed;		// 飛行スピード

        // ウルトラマン誕生(名前、必殺技、飛行スピードを設定)
        public UltraMan(string _name, string _waza, int _speed)
        {
            name = _name;
            waza = _waza;
            speed = _speed;
        }
        // 攻撃をする
        public void Attack()
        {
            Console.WriteLine(name + "は、" + waza + "を使った!");
        }
        // 空を飛ぶ
        public void Fly()
        {
            Console.WriteLine(name + "は、マッハ" + speed + "で飛んだ");
        }
    }


    class Program
    {
        // プログラムはここから開始
        static void Main(string[] args)
        {
            // ウルトラマンとウルトラセブン登場
            UltraMan man = new UltraMan("ウルトラマン", "スペシウム光線", 5);
            UltraMan seven = new UltraMan("ウルトラセブン", "アイスラッガー", 7);

            // ウルトラマンの行動
            man.Attack();
            man.Fly();

            // ウルトラセブンの行動
            seven.Attack();
            seven.Fly();
        }
    }
}

どうでしょう???
つまらなかったですか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です