中学国語を参考にしたオブジェクト指向の学習(2.クラスからオブジェクトを作成)

2023年7月10日

アプリケーションでの想像ができないサンプルより、世の中にプログラミングされていそうなサンプルで考える方がいいでしょう

抽象と具体

一例としてスーパーのレジで考えてみます

スーパーのレジは、液晶画面に表示があり、バーコードリーダーで商品を読み取り、商品代金を入金し、支払います
また、レシートを印字することで出力もしています

実際、レジは、WindowsOS上で動作しているケースが多く、C#やVBでコードが記述されていると考えられます

では、レジに並んでいる様子を想像してみましょう

買い物かごには、購入したい商品が複数入っていことでしょう
あなたのかごには、りんご3個が袋詰めされているもの1つと秋刀魚2匹のパック1つが入っているとしましょう

それぞれには、バーコードも印刷されているラベルも貼っていることでしょう

では、プログラミングの世界でこの様子を考えてみることにします

この想像上のケースでは、2つの商品を扱っていると考えることができますね

抽象(商品)の作成

ここでは、アイテム(Item)と名前付けして考えてみます

まず最初にアイテムに必要な情報を格納するためのブロック(class)を作成します

class Item
{
}

次に要素をブロック内に記述していきます
アイテムは抽象的なものですが、属性(商品に必要と思われる要素)によって具体にできるようになりそうです
一例ですが、「名前」がありますね(イメージでは、商品に貼ってあるラベルでしょうか)

class Item
{
    // 商品名
    public string name;
}

続けて他の情報を追記していきましょう(ラベルを想像してみましょう)

class Item
{
    // 商品名
    public string name;
    // 価格
    public int price;
}

商品の具体を作成

属性を追加したところで、抽象化されているItemから具体を作成します

C#では、次のように記号で実現します

item1とitem2が具体になります

3個パックのりんご

Item item1 = new Item { name = "りんごパック(3個)", price = 300 };

2匹パックの秋刀魚

Item item2 = new Item { name = "秋刀魚パック(2匹)", price = 200 };

レジでの合計

item1の価格は、C#では次のように表現します

item1.price

なので、合計は次のように表すことができます

int totalPrice = item1.price + item2.price;

全てのコード(トップレベルステートメント)

上から写す作業をするのではなく、上記のことを念頭に置きながら、クラス部分から先に記述してみましょう

Item item1 = new Item { name = "りんごパック(3個)", price = 300 };
Item item2 = new Item { name = "秋刀魚パック(2匹)", price = 200 };

int totalPrice = item1.price + item2.price;

Console.WriteLine(totalPrice);

class Item
{
    // 商品名
    public string name;
    // 価格
    public int price;
}

参考

具体

3個パックのりんごと2匹パックの秋刀魚

具体的にイメージできるものですね

抽象

ともに、スーパーの商品

具体的なイメージはできませんが、意味はわかります
りんごや秋刀魚も商品であることも理解はできますね

C#,クラス,入門

Posted by hidepon