ごとけんです
In message "[ruby-list:12000] how to make class?"
on 99/02/11, "Kikutani, Makoto" <kikutani / sprintmail.com> writes:
>「rubyの匠な人々はどうやってクラスを作るんでしょうか?」
匠でなくて申し訳ありませんが,面白そうなんで,ぼくの場合(^^;;
>オブジェクト指向をたぶんまったく理解してない私はこうやる
>傾向があります。
>
>1 階層構造を持ったデータをツリー表示できるクラスが欲しいな
この例なら,とりあえず Array か Hash に何か加えてできそう
なんで,DelegateClass を使って,例えば
class Hierarchy < DelegateClass(Hash)
としてHash でインスタンス変数が持てるようにします.
あとは traverse のしかたを横型というか指定した深さまでを
列挙する引数つきの each_upto(lev) とかメソッドなどを
追加しそうです.
>5 これのうち、ディレクトリというデータ構造に依存しない部分を
> メソッド化したクラスを作ってみる
たいていは,上の段階で用が足りてしまうので終ってしまいます(^^;;
まぁ,おそらく「表示する」というのが,print 程度でいいのか,
curses ベースなのか,GUI なのか,印刷するのかで変わってくるので,
データの断片の切り取り方だけを抽象化すべくインターフェイスを
考えるでしょう.フォーマッタによって欲しい形式は違いそうだし.
# 深い階層を使うときは面倒なので HTML を吐くことを考えます.
# Lynx だと HTTP を使わずに疑似的に CGI を実現できるので.
>6 そのクラスのサブクラスを使ってプログラムを書き直してみる
>7 5と6をグルグルしているうちになんとかクラスができる
>8 でも他に応用するとまたクラスを変更したくなってくる
もし階層データなら,僕は手繰りやすい木構造の実装と,
出力を書きやすくするためのユーティリティを充実しそうです.
# 一般化しすぎてコケるというのが僕のハマりやすい傾向なので(^^;;
結局,僕は新しいものを考えるのが苦手なんで,知ってるものの
うちで一番なにに近いかを探します.
>というところでどうもダサい。昔で言うとこのボトムアップじゃん。
>こういうノウハウもruby本に載ってるのかもしれないけど。
そういう設計論は明文化して有効なことは少ないんではないか
と思います.僕は,いかに知ってるものを思い出せるかに
ポイントをおきます.そのためにはいろんなコードを読んだり,
典型的な「パターン」みたいなものを知らないといけないの
ですが,それは単に経験の問題なのではないかと思う次第です.
クラスの設計といっても,それはとっても広いハナシなので,
もっと目標が定まらないと考察は困難だと思うわけで…
# なんだかんだいっておきながら否定的ですみません.
-- gotoken