今日はClassをいろいろ作ってみた。
いままでClassなんて無視してたんでね。これはいけませんよ。
そもそもデフォルトでもフォームアプリケーションは
スタート→Program Class{Form1 Classを起動→Form1 Class{いろいろ仕事}}
てなイメージでした。
まぁしかしオブジェクト指向というのは動作をオブジェクトを中心にという意味らしい。
オブジェクトをいじることでいろいろな仕事をさせると。
さて、たとえばComplex(複素数)というClassを作りましたと。
まずreal(実部)とimaginaly(虚部)を保持しなくてはならない。
それを書く。float real;みたいに。
そしてまず、a+biの形で文字列化する機能をつけようと。
そこでToStringというメソッド(オブジェクトにある関数?)を作ろうと。
まぁ別に普通につくればいいんですけどね。
それとか共役複素数のプロパティを作ろうとか…
そうやって複素数というオブジェクトを作っていくと。
まぁそのClassをForm1とかで使うと。
Complex comp1 = new Complex(2,3);
とかやって宣言してやると。
非常にわかりやすい。Form1を作っているときにはもはや複素数の複雑なことは考えなくてOKと。
これをConsoleに表示するに当たっては
System.Console.Write("comp1=" + comp1.ToString());
みたいに書けば勝手に書いてくれる。
では別の例を。次は四則計算をしようと。そのためにCompCalcというClassを作ろうと。
まぁなんで電卓みたいな役目を果たすのをわざわざ作ったのかはまぁいいが…
この中でいろいろ計算にひつような関数を作って、
たとえば
public Complex multi(Complex a,Complex b){ [a*bの計算をしてそれをreturn] }
みたいな内容で書かれた掛け算の関数があれば、
Compcalc calc = new Compcalc();
Complex comp3 = calc.multi(comp1 , comp2);
のように書けばcomp1*comp2をcomp3に代入するのはたやすい。
非常にここの部分の作者は困らなくていいですね。
よくオブジェクト指向はテレビにたとえられる。
8chを映せとかボリュームをあげろとかいうのメソッドを持つと。
これは中身がどうなっているは関係ないし。急に中身が変わっても外面が変わらなければ無問題。
そういうことです。非常におもしろいし、わかりやすくなりますね。