前田です。 On Sat, 29 Mar 97 11:23:49 JST, matz / caelum.co.jp (Yukihiro Matsumoto) wrote: | |ScreenというモジュールとWindowというクラスで実装しようと思います。 | |WindowはもちろんWINDOW構造体のラッパークラスです。 | | ScreenはモジュールなのにSTDSCRのクラスになっていますね.これ | はまずいでしょう.まず,設計を行いましょうか. STDSCRはWindowのインスタンスにするつもりでした。 On Sat, 29 Mar 97 11:24:08 JST, matz / caelum.co.jp (Yukihiro Matsumoto) wrote: | でも,よくわかんないことがあります.なんでWindowはEnumerable | をincludeしているんでしょう? eachは定義していないみたいです | けど. Enumerableをわかってなかったからです:-) 列挙される方のクラスにincludeするものだと思ってincludeしたのですが、 eachを実装しなければいけないというところで気づきました。 On Sat, 29 Mar 97 13:19:13 JST, matz / caelum.co.jp (Yukihiro Matsumoto) wrote: | まず,cursesにはどのようなデータ構造があるんですか?それによっ | てどれがクラスでどれがモジュールであるかどうかが決まると思い | ます.Screenってのはモジュールになっていますが,その場合 | STDSCRのクラスはなんなんでしょう? cursesにはWINDOW構造体というのがあって、だいたいこんな感じになってます。 struct { short _cury, _curx; short _maxy, _maxx; short _begy, _begx; short _flags; bool _clear; bool _leave; bool _scroll; char **_y; short *_firstch; short *_lastch; } それと以下に分類される関数があります。 cursesの開始と終了のための関数 入出力関数 ウィンドウ操作関数 その他、端末操作などの関数 入出力も実際にはウィンドウに対する操作になります。 それで class Window に WINDOW構造体へのアクセスメソッド 入出力を含むウィンドウ操作メソッド module Screen に cursesの開始と終了 STDSCR(Windowのインスタンス)に対するメソッド その他、端末操作など を受けもたせようと思ったんですが、Screenというのはやっぱり名前が まずいですね。 とりあえずTextInterfaceに変えました。 # 名前つけるのって結構むずかしいですね。 あと座標を扱うことが多いのですが、これはクラスを作ったほうがいいで しょうか。 その方が多分すっきりすると思うのですが、使いにくくなるような気も するんです。 前田 修吾