[gruby-list:0006] gRubyについて(2)

Back to archive index

Yuya Kato yuya****@katod*****
2004年 2月 6日 (金) 14:28:04 JST


Yuyaです。

 まず始めに、4つの構成要素の1つ「Facade」について解説します。
「Facade」はその名の通り、GoFのFacadeパターンを利用している
クラス群です。
例えば、下記のようなクラスがあります。

* GRb::Chart::ChartFacadeBase
* GRb::Chart::XYChartFacadeBase
* GRb::Chart::LineChartFacade

チャート描画に関するクラス群は、すべてGRb::Chartモジュール下
に定義されています。ですので、以降はクラス名のGRb::Chartを
省略して書くことにします。

例として示したクラス名の上2つには、クラス名の末尾にBaseが
ついています。これらは抽象クラスを示し、通常は直接使用しません。
LineChartFacadeは具象クラスで、直接使用する、つまりオブジェクト
として扱うクラスです。

GRb::Chartによるチャート描画は、大変多くのオブジェクトが組み
合わされて実現しています。これらの大量のオブジェクトを生成
するのがFacadeクラスの役目です。
ユーザーは通常、GRb::Chartの複雑なクラス群を理解することなく、
Facadeクラスだけを気にするだけで、チャートを描画することが
できます。

Facadeオブジェクトは複数のPropertyオブジェクトを保持しています。
これらのPropertyオブジェクト群からDecoratorオブジェクト群と
Chartオブジェクトを生成するのがFacadeクラスの仕事です。
実際の描画処理は、DecoratorオブジェクトとChartオブジェクトが
行います。

使用例line1.rbで解説すると:

 1 facade = GRb::Chart::LineChartFacade.create(500, 300)
 2 facade.title.text                  = 'Line Chart Sample 1'
 3 facade.chart.scale1.maximum        = 10
 4 facade.chart.scale1.minimum        = 0
 5 facade.chart.scale1.interval.major = 2
 6 facade.chart.scale1.interval.minor = 0.5
 7 facade.chart.axis.label.text       = ['A', 'B', 'C', 'D', 'E']
 8 facade.data                        = data
 9 facade.write_png_file('line1.png')

1行目でFacadeオブジェクトを生成し、2〜7行目でFacadeオブジェクト
のPropertyオブジェクトに値を設定しています。
そして9行目でDecorator/Chartオブジェクト群を生成してPNGファイル
に描画しています。

(上手に解説できないけど続く、、、)

====== Yuya Kato ======
E-Mail yuya****@katod*****
   Web http://nuance.cc/
i-mode http://nuance.cc/i/




gruby-list メーリングリストの案内
Back to archive index