まつもと ゆきひろです
In message "[ruby-list:7205] Re: sort-schedule.rb (Re: call for scripts)"
on 98/03/23, Takao KAWAMURA <kawamura / ike.tottori-u.ac.jp> writes:
|Scheduleクラスのメソッドのうち、kind以外は外に見せる必要はな
|いのですが、sortしたいので、<=>の中で呼び出すためにpublicに
|しています。
|
|たぶん設計が悪いのだろうと思うのですが、本当はどんな風に書く
|のがよいのでしょうか。
オブジェクト指向設計で良く問題になる点ですね.
結局は自分と同じクラスのオブジェクトのprivate(にしたい)メソッ
ドにアクセスしないと実装できないメソッドが存在するので,本当
はprivateにしたいのにpublicにしないといけない,という問題な
のですが,上手な解法はまだ思い付いていません.
場合によってはdouble dispatchなどを使って解決できる場合もあ
りますが,大体はきれいに出来ないんですよね.
あまりきれいでない解法としては,たとえば,
[year,month,day,week,hour,min,past]
を配列として返すメソッドを用意しておき,<=>の中から呼び出す
と言うようなものが考えられますが,結局不要なメソッドをpublic
にしていることには代わりがないですね.
Objective-Cのように同じクラスからならインスタンス変数もアク
セスできるなんてのも一つの方法なんですが.
まつもと ゆきひろ /:|)