オブジェクト指向な思考を練習中というか、Javaの本を読んでオブジェクトの概要をおぼろげにを掴んで、PHP4のオブジェクトがいかに中途半端だったのかを知った。それに比べて、さすがというか、PHP5はよく出来てるし、コンストラクタの名前とかはこちらの方が便利では無いかとも思う次第。
次に、JScriptのプロトタイプベースというか、何でもかんでもオブジェクトにしてしまうという初心者からすると大混乱の状況を何とか乗り越えた(やはりオライリー本が1番良い)。たぶん。prototypeはメモリの共有という点ではJavaでいうstaticな雰囲気だけど、インスタンス無しでは呼び出せないという点においてまったく違うものらしい。インスタンスごとにメソッドまでプロパティとしてメモリ領域を確保していたらもったいないので存在するだけだそうだ。そもそも最初はstaticの使い道が良くわからなかったのだが、クラスとは関係有るがオブジェクトを直接いじるわけではない関数、という認識でいいのかな。
それにしても、staticとか抽象クラスとかインターフェースとか、とりあえず、デザインパターンの本を読まないと実際に使いこなすのは難しそうだ。今悩んでいるのは、今までの「処理が長くなるし、似たようなことを何度もするから分割して関数にしちまえ、そのその方がコードが読みやすいぜ」的関数はstaticにすべきなのか、それとも単純に外部から隠したprivateなメソッドにするべきなのかどちらなの? という点で、たとえば、コンストラクタが長くなるのが嫌だから似たようなメンバ変数(ここら辺の名前が言語ごとに違うのは一体なんの策略なのだ)の初期化をするために関数を作ったのはいいけど、これってオブジェクト自体をいじるわけではないから、従来的に引数を処して処理結果をreturnしてくれる関数をstaticに宣言すればいいのかなぁ、うーん、みたいな事だ。どうなんだろう。
もうちょっと理解したらHIMMELもちゃんとしたクラスに書き直してあげよう。
http://yudai.arielworks.com/memo/2004/10/13/165031.trackback
末尾に「1 + 3」の計算結果を繋げて下さい。例えば計算結果が「17」の場合、「165031.trackback17」です。これは機械的なトラックバックスパムを防止するための措置です。