netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2004-09-28 古い日記からの変換データ [長年日記] ▲
_ [論文] Before/After の合成 ▲
Ira R. Forman, Scott Danforth, Hari Madduri:Composition of Before/After Metaclasses in SOM.Proceedings of OOPSLA 94, pp.427-439, Portland, Oregon, USA, 1994.
Before/After メソッド(AspectJでいう before/after advice)を複数同じクラスにくっつける場合にはどうしたらよいか,というので・メタクラス2個を順序付きで合成したメタクラスを作って, それをインスタンス化したクラスを作る・合成したいメタクラスを個別にインスタンス化した クラスを作って,それらのクラスを多重継承・一方のメタクラスをインスタンス化したクラスを継承して クラスを作り,そのクラスにもう一方のメタクラスをくっつけるという手法があるが,メタクラス2個を順序付きで合成したメタクラスを作るという方法が,関係が明示的で良い,というふうに言っている.
ただ,3個以上のメタクラスを合成するときの結合規則の問題(A(BC)と(AB)Cが等しい振る舞いをする)や,他にどのメタクラスがかかわっているか分からないのでC=AB, D=BA といったメタクラスがあるときにE=CD を作って貼り付けると ABBA と同じメソッドが2回ずつ動いてしまったりする問題がある.また,read-onlyなメソッドに対してのみ動きたいとか,条件付きのメタクラスも存在する上,本来動くべきメソッドを動かしたくないメタクラスも扱っていく必要がある.
クラスが名詞ならメタクラスは形容詞に相当する,とかいう言い方をしているのは面白いところだけど.