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/