まつもと ゆきひろです

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のように同じクラスからならインスタンス変数もアク
セスできるなんてのも一つの方法なんですが.

                                まつもと ゆきひろ /:|)