前回の「型と値」で、C#での重要な要素である「型」と「値」を大雑把に解説しました。
型って何だっけ?値って何だっけ?という場合は、もう一度読み返しましょう。
今回は、前回の続きで、さらに詳しく型について扱います。
型と値の関係はわかりました。
では、型と型ではどういった関係があるでしょうか。
たとえば、「毒属性の剣」を考えましょう。
「毒属性の剣」をばらすと、「毒属性」と「剣」。
そのままですね。
わかりやすく、「剣」からいきましょうか。
剣は、大きく分けて短剣と長剣があります。
この2つはどちらも型であることがわかるでしょうか。
たとえば、短剣型の値としては、ダガーやトレンチナイフなどがあります。
長剣型の値としては、クレイモアやバスターソードなどがありますね。
別の視点からいきましょう。
剣は武器の一部です。
武器といえば他に、銃や弓やスタンガンなど、たくさんの種類があります。
銃も弓も、型であることがわかるでしょうか。剣の例と同じ要領です。
そして、武器も型です。もうなんとなくわかるようになってきたでしょうか。
さて、これをまとめると・・・
「【武器型】の一部に【剣型】や【銃型】がある」
「【剣型】の一部に【長剣型】や【短剣型】がある」
となります。
図にしてみると・・・
こんな感じでしょうか。
さて、図から読み取れることはすごく単純です。
つまり、型は階層構造を持っている、ということです。
上の図は、すごーーーく単純に、いろいろ要素を削ったものになっています。
たとえば、武器型の上には、さらにアイテム型とかがあるでしょう。
逆に、ハンドガン型には、リボルバー型とかオートマチック型などがあるでしょう。
そして、リボルバー型の値として、コルトパイソンやニューナンブといったものがあるイメージですね。
この階層構造はとても重要です。
なんせ、プログラムのコードにそのまま現れるからです。
現時点で、具体的なプログラムは書きませんが、後できっと、この概念が頭に浮かぶでしょう。
さて、では「毒属性の剣」の話から始まったので、もう片方の「毒属性」を見てみましょう。
もうお分かりでしょうが、毒属性は属性型の一部です。
他には回復属性や炎耐久属性や高速移動属性など、いろんな属性がたくさんあるでしょう。
さらにいうと、属性型は、強化系属性型、回復系属性型、状態異常属性型のような直系の属性があるはずです。
毒属性はおそらく、状態異常属性型の下にある型だと予想されます。
ここで「状態異常属性型の下にある型」と書きました。
図の階層構造は、上が大雑把な分類、下に行くほど具体的な分類になっているのがわかります。
別の言い方をすると、親の型から子供の型に行くほど具体的になり、機能が限定的になっていま
す。
このことから、型には親子関係があると言うことが出来ます。
たとえば、毒属性型の親は状態異常属性型であり、さらにその親は属性型である、と言えるでしょう。
剣の例でも同じです。
エクスカリバーという値の型は長剣型であり、長剣型の親は剣型、その親は武器型、さらにその親はアイテム型でしょうか。
さて、結構長くなってきました。
考えながら書いてるので、見返すと結構量があって自分でもビックリ。
ちゃんと読んで理解できているでしょうか?
書き方があやふやで、よくわからん、という人は、「よくわからん状態」が「なんとなくわかった」状態になれば
今はそれでも十分です。
ここまで説明したもので、
「型と値」
「型と型の関係」
「型の階層構造・親子関係」
これが頭に入っていれば、とりあえずクリアです。
図も頭に浮かんでいれば、全然問題ないです。
好きなゲームを例に、「アレとアレが型で、親子関係になってる・・・かな?」
など、適当に想像できるようになっていれば、もう100点満点です。
今日はここまでです。
長かった。お疲れ様でした。
次回も、型を引き続き勉強していきます。
「毒属性の剣」には、また登場してもらいましょう。
毒属性と剣は両方型ですが、どうやら親子関係ではなさそうです。
では、別の関係性があるのでしょうか?
その辺りを詳しく見てみましょう。
では。
0 件のコメント:
コメントを投稿