【C# 超基礎】カスタムクラスとコンストラクタについて
最初にコードサンプル
Program.csと、Hero.csという二つのcsファイルがあります。
Program.csのコード
using SampleConsole;
Hero nyannyan = new Hero();
Hero wanwan = new Hero("inu", 5, 10);
Console.WriteLine("仲間が増えた!");
Console.WriteLine(nyannyan.GetHero());
Console.WriteLine(wanwan.GetHero());
Console.ReadLine();
続いて、Hero.csのコード
using System;
namespace SampleConsole
{
//Heroという名のカスタムクラス
//色々な変数を持たせたオブジェクトを作りたいときに使用する仕様書みたいなもの
public class Hero
{
//Heroクラスに持たせたい変数を定義する
string name;
int hp;
int mp;
//Heroというクラス(仕様書)を使って、設計図を書く(1体目)
public Hero()
{
this.name = "Neko";
this.hp = 10;
this.mp = 5;
}
//Heroというクラス(仕様書)を使って、設計図を書く(2体目)
public Hero(string n,int h, int m)
{
this.name = n;
this.hp = h;
this.mp = m;
}
//実際にHeroオブジェクトを表示させる
public string GetHero()
{
return "NAME:" + this.name + "HP:" + this.hp.ToString() + "mp:" + this.mp.ToString();
}
}
}
実行すると、以下の様になります。
仲 間 が 増 え た !
NAME:Neko HP:10 mp:5
NAME:inu HP:5 mp:10
何をしているのか
カスタムクラスを作り、
コンストラクタを使い、
オブジェクトを生成しています。
わかりますか...?未だ私は瞬時に組み立てられません。。。
もっとざっくり言うと
Hero.csは、作りたい物、やりたい物に関する仕様書and材料保管庫みたいなものです。
Program.csが、Hero.cs仕様書を見ながら足りない材料があれば、それを集めて実際にHeroを二体作っています。
もっともっとざっくり(?)言うと
Hero.csは畑と一次工場です。
Programは二次工場と店舗です。
カレーで例えると
Curry.cs下請工場で、材料を羅列します。
string yasai1;
string yasai2;
string spice;
とか。
そして、材料であるyasai1とかyasai2とかを何にするか決めて生産し、一次加工します。
public Curry()
{
yasai1 = "rangiriJaga";
yasai2 = "rangiriNinjin";
spice = "chickenspice";
}
とか。
ここまでCurry.cs工場が作ったら、それをProgram.csレストランに出荷します。
Program.csは、それを元にカレーを作ります。
Curry ChickenCurry = new Curry();
ここにはCurry.cs工場が作ったcurryがそのまんま入ります。
しかし時に、Program.cs側が材料も決めて調達したくなる場合もあります。
その場合は、とりあえずこんな感じのもので私作りたいから設計図とかその他ラインを合わせて作っといてねというアバウトなオーダーをCurry.cs下請け工場に出します。
下請け工場のCurry.csは、Program.csが何を作ろうとしてるかわからないけどnew curryがきちんと完成するように、仮設計図を作っておきます。
public Curry(string y1,string y2,string s)
{ //とりあえず、これら↑を材料と仮定して、、、
this.yasai1 = y1;
this.yasai2 = y2;
this.spice = s;
}
といった感じに。
それで仮CurryをProgram.csに出荷します。
Program.csは、もらった仮Curryに、自分で調達した材料を当てはめてnew Curryを作っていきます。
Curry NattoCurry = new Curry("Natto","Renkon","BeefSpice");
Curry SeafoodCurry = new Curry("Ika","Tako","SeaSpece");
仮設計図なのでProgram.csはどんどん好きな材料で好きなnew Curryを作れます。
最後に、下請けCurry.cs工場が作った盛り付け例(returnのところ)を見ながら店舗にラインナップしてきます。
と言う感じです。
おわかりいただけただろうか・・・