前田です。

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に変えました。
# 名前つけるのって結構むずかしいですね。

あと座標を扱うことが多いのですが、これはクラスを作ったほうがいいで
しょうか。
その方が多分すっきりすると思うのですが、使いにくくなるような気も
するんです。

前田 修吾