From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2005-11-07T13:34:58+09:00 Subject: [ruby-list:41499] Re: Matrixの継承について けいじゅ@いしつかです. In [ruby-list:41497] the message: "[ruby-list:41497] Re: Matrixの継承 について", on Nov/07 12:13(JST) "T.Y" writes: >エルミート行列で表現される演算子のクラスを作ろうとしていて、 >メソッドと定数をMatrixに追加したかったのが主な目的です。 >is_a Matrix として継承が自然かなと思ったのですが、まつもとさんが >書かれたように、サブクラスを作ることが想定されていないクラスも >あるので、継承は慎重に使わないといけないのですね。 たしかに, is_a 関係は成り立つかもしれません. ただ, rubyは単純継承しか許していないので, エルミート行列などのようなも のをすべてサブクラスと考えるようになると, 何でもかんでもサブクラスにす るということになって, すぐに破錠しちゃいそうです. >> もし、特定の行列のみ new_method_for_yamatrix メソッドを持たせたければ、 >> extendしてしまいましょう。 > >Matrixは数みたいなものなので、特異メソッドを持たせるには >抵抗があったのでした。 この辺りの感覚はなぜでしょう? わたし的には, この行列Mにはエルミート性があるがあるので, エルミート性 を提供するモジュールHを extendするというのは, それほど違和感がないよう に感じます. >今の仕様で困っている方はあまりおられないのでしょうが、 >何かの折にご検討頂けたら嬉しいです。 行列ってその行列の特質によって, アルゴリズムを置き換えたいとか, 構造 (ex 対角行列や粗行列みたいなもの)を変えたいとかあるので, サブクラスを 追加できるようにすると言うよりも, もうちょっと別のアプローチを考えた方 がよい気がしています. たとえば, Matrixそのものはインターフェイスを提供するだけにして, 別に構 造を表すクラスとアルゴリズムを提供するクラスに分けるような感じです. た だ, アルゴリズムを置き換えることができるようにすると言っても, そう単純 ではないのですが... __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---