高橋 憲義 2002/06
demo.tar.gz を展開すると demo ディレクトリができます.
numex.rb が本体です.
% ruby numex.rb
とするとメニューが開くので初期値,ステップ数を設定して実行ボタンを押してください.
まず NumEx から Menu が呼ばれます.NumEx クラスは Menu の Observer として 登録されており,メニューの実行ボタンが押されると,Menu クラスから設定値を 引数として NumEx の update メソッドが呼ばれます.
NumEx の update メソッドでは数値計算用の Model クラスとデータ処理用の NData クラスのインスタンスが生成されます.
NData は Model の Observer として登録され,Model クラス内の数値計算の 1 ステップ毎に NData の update メソッドが呼ばれます.
NData は update が呼ばれると Model の get メソッドを呼んで数値計算の結果を 取得し,グラフを描きます.
全体を管理するクラスです.
menu_set(menu_hash)
モデルに渡すべき設定を { 設定名 => 設定値 } の形の Hash で渡します.
start
メニューウィンドウを開きます.
update(hash)
Observer の仕組みによりメニューウィンドウの実行ボタンが押された時に 呼ばれ,Hash としてメニューの設定内容を受けとります.
また,Model クラスと NData クラスのインスタンスを作成し,実行します.
数値計算をするクラスです.
run
数値計算のためのループがあります.
calc
x(n+1) = 2.0 * x(n)**2 - 1.0 という 漸化式の計算をします.
get
呼ばれた時点での x(n) の値を返します.
データを加工します.
update(obj, i)
obj オブジェクト(今の場合は Model クラスのインスタンス)からの更新情報を 受けとり,obj.get メソッドを呼び,数値計算の結果を取得します.
draw_graph
DCLを使ってグラフを描きます.
configure_event
DCL over GTK+ の初期設定をします.
expose_event
ウィンドウの再描画をします.