カスタムクラスを作る前にオブジェクトを考える

090705-one

昨日は誰かが作ったクラスを読み込んだが、それでも他の人が作ったクラスは、その人の目的があり自分(私)の目的に完全に合致すればいいのだが、そうは世の中うまくいかない。
そんな場合、自分自身でクラスを作る必要がある。
この自分で作るクラスのことを「カスタムクラス」と呼ぶそうだ。
そのカスタムクラスの説明は次回以降に後回しにして、今回はクラスを扱う際に必要な考え方、オブジェクトについて考えてみた。

オブジェクトって

カスタムクラスを作るには「オブジェクト」というものを少し理解しなければならないらしい。

オブジェクトというのは変数(プロパティ)メソッドを持ったものをいう。

オブジェクトを簡単に言うとモノや物体と言い表せる。
変数とはプロパティ、そのオブジェクト:モノが持っている数値やパラメータのこと。

メソッドとは、そのオブジェクト:モノを操作するためのもの。

object-001

ぼんやりとイメージできた・・・はず。

結局オブジェクトってなに?

私は頭の弱い子なので、オブジェクトはわかったけど、結局オブジェクトとactionscriptとの関係は?クラスとの関係は?という疑問がでてくる。

結局のところ、このオブジェクトというのがカスタムクラスと結びつくらしい。
上図例の人間を苦労してActionscriptで作ったとする。
上図のプログラムは「男性」をあらわしているが、たとえば「女性」を作りたい場合、まるっきりコピーして、修正するのでは時間がかかる。
というのもメソッド(操作)「寝る、だらける、食う」自体は男と同じなのに、「もう一度これをコピペするんかい!」ってことになる。
仮に「だらける」操作に男女共通の「ビールを飲みながらだらける」に修正したいといった場合、「両方のプログラム修正するんかい!」ということになる。
これが、男性と女性の2パターンだったらまだ楽だけど、老人、主婦、若者、団塊・・・と増えていった場合そのすべてに修正を加えるのは容易ではない。

そこで、人間オブジェクトという雛形を作っておいて、必要な変数:パラメータを渡せば、さまざまなタイプの人間を生成できるようになれば楽かと。
さらに雛形となった人間オブジェクトを修正することによって、「人間」の動作を修正できるようにできればもっともっと楽になる。

object-002

これが、カスタムクラスの基本で、これをオブジェクト指向のプログラムと呼ぶ・・・らしい。

そして、この「人間オブジェクト」から「男オブジェクト」と「女オブジェクト」を作り出すことを、「インスタンスを作る」という。
この人間から男と女オブジェクトを作るには、asでは次のようなコードを書く。

[as3]
男 = new 人間("31","男");
女 = new 人間("24","女");

男.寝る();
女.食う();
[/as3]

上記プログラムを実行すると、男31歳と女24歳を作り、男は寝て、女は食うという動作を行うw
ちなみにこの例はあくまでも例なので。
日本語使っているが、実際は使えない・・・と思うよ。

今日はここまで。
自分なりの解釈なので間違ってたらゴメンナサイ。
ご指摘いただけると勉強になるっす!