Prototype パッケージの概要
このセクションでは、BGO を作成するために Rogue Wave® Views の Prototype パッケージの使用方法を説明します。Rogue Wave Views BGO は、プロトタイプ・デザイン・パターンに基づいているので、しばしばプロトタイプと呼ばれています。
Prototype パッケージの概要として、このセクションでは次の項目を扱います。
ビジネス・グラフィック・オブジェクト
アプリケーション開発者は、ユーザーが対話的に使用できるようなドメイン固有アプリケーション・オブジェクトを表現するために、グラフィック・オブジェクトをカスタマイズ化する必要に迫られることがよくあります。Rogue Wave® Views Prototypes パッケージは、そのようなビジネス・グラフィック・オブジェクト (BGO) を構築するための簡単で効率的なソリューションを提供します。BGO は、Rogue Wave Views Studio の Prototype 拡張機能を使用して作成します。BGO の作成にはコーディングは必要ありません。3 つの基本手順を行うことで作成できます。
1. BGO のアプリケーション・インターフェースを、オブジェクトのドメインを表現するタイプ化されたアトリビュートのセットとして定義します。たとえば発電所のボイラを表すボイラー・オブジェクトの場合、温度、容量、レベル、インプット・バルブ、アウトプット・バルブなどのアトリビュートを設定できます。
2. 線、テキスト、画像などの基本的な Rogue Wave Views グラフィック・オブジェクトを使って、オブジェクトの外観を定義します。他の BGO を含めてオブジェクトを構造化することもできます。たとえば、ボイラー・オブジェクトは矩形で、矩形内のゲージで温度およびレベルを、そしてインプットおよびアウトプット・バルブを矩形内のトグル・ボタンで表すことができます。
3. 振る舞いをグラフィック・オブジェクトに付加して、これらをアプリケーション・オブジェクトのステータスをどのように表すか、さらにユーザー・イベントにどのように反応するかを定義します。動的に形状のアトリビュートを変更したり、オブジェクトをアニメーション化したり、BGO を互いに接続してユーザー・インターフェースでのオブジェクトのステータスを反映させることができます。たとえば、塗りつぶしの振る舞いをレベル・アトリビュートに付加すると、ボイラーのレベルをそのグラフィック表示と同期できます。
次に、BGO のインスタンスを作成し、基本 Rogue Wave Views グラフィック・オブジェクトで行う場合と同様、それらのインスタンスをマネージャーやコンテナー内で使用します。アプリケーション・オブジェクトは対応する BGO にリンクできます。表示、同期化、およびユーザー・インタラクションは、Prototypes パッケージによって処理されます。BGO はいつでも編集・変更できます。プロトタイプのインスタンスは自動的に更新されます。
ドメイン固有オブジェクト用にパワフルで直接操作できるインターフェースを作成するのは、フォーム・ベースのインターフェースを作成するのと同じ位簡単ですが、直接操作のインターフェースの方がユーザーにとってより魅力的でわかりやすいものとなります。
Figure 1.1は、プロトタイプで構築したアプリケーション・パネルの例を表しています。
図 1.1 プロトタイプ・アプリケーションの例
Rogue Wave Views Studio の Prototypes 拡張機能を使用して BGO を作成する
Rogue Wave Views Studio を使用して BGO を作成すると、以下の処理が行えます。
基本的なグラフィック・オブジェクトを組み合わせて、独自の BGO 外観を設計する。
定義済み振る舞いを付加する、あるいはスクリプトを記述することで、グラフィックの振る舞いおよび BGO の対話的な側面を定義する。
パネルで再利用したり、変更、インスタンス化できる
プロトタイプ・オブジェクトとして BGO をライブラリーに保存する。BGO はたいていの場合プロトタイプとして使用されるため、用語「プロトタイプ」と「BGO」は相互交換的に用いられます。
独自のプロトタイプのインスタンスをマネージャー、またはコンテナーに追加する。
プロトタイプおよびプロトタイプを保持するパネルの振る舞いをテストする。
これらの操作はすべて、WYSIWYG (what you see is what you get) モードで、C++ コーディングなしに行われます。
アプリケーションでプロトタイプを使用する
基本的 Rogue Wave Viewsグラフィック・オブジェクトを含むファイルのロードと同じ方法で、プロトタイプのインスタンスを含む Rogue Wave® Views ファイルを、マネージャーあるいはコンテナーにロードすることができます。また、プロトタイプのインスタンスを作成し、それらをアプリケーション・オブジェクトに付加して、マネージャーあるいはコンテナーに配置することもできます。
プロトタイプは、
IlvGraphic のサブクラスではありません。プロトタイプは、
IlvGroup クラスのオブジェクトに含まれるグラフィック・オブジェクトのグループです。プロトタイプの定義はファイルに保存されているので、プロトタイプを変更する場合にアプリケーションを再コンパイルする必要がありません。
プロトタイプ・インスタンスを
IlvManager あるいは
IlvContainer に配置するには、これらを
IlvProtoGraphic と呼ばれる
IlvGraphic の特殊サブクラスに埋め込まなくてはなりません。Rogue Wave Views Studio を使用してプロトタイプをマネージャーあるいはコンテナーに配置する場合、Rogue Wave Views Studio はカプセル化する
IlvProtoGraphic を作成します。
IlvGraphic と同じ方法で
IlvProtoGraphic を操作することができます。
IlvGroupHolder クラスを使用して、任意のビュー (コンテナーあるいはマネージャー) のプロトタイプ・インスタンスを取得し、表示させたいアプリケーション値に応じてプロトタイプ・インスタンスのプロパティーを変更することができます。
プロトタイプを使用する理由
BGO を定義するには、プロトタイプを使用するか、Rogue Wave Views メソッドの直接呼出しを使用して、
IlvGraphic のサブクラス用に C++ コードを記述してオブジェクトを描画します。プロトタイプは直接コーディングの代替として使用します。
プロトタイプを使ったアプローチには、次の利点があります。
短期間の開発で対話的な GUI デザイン・プロセスが可能。
アプリケーションの実装とユーザー・インターフェースの実装が明らかに分離されているので、メンテナンスとデバッグが容易に行える。
Views Studio への完全統合。ユーザー・インターフェース・デザイナはプログラムするのではなく描画します。
C++ プログラミングのスキルをほとんど必要としない。
その結果、オブジェクトのグラフィカルな外観をデザインする作業は、プログラマー以外に割り当てることができます。このような作業には、たとえば、グラフィック・デザイナの方がより適していることもあります。Rogue Wave Views Studio には、グラフィック・デザイナが使い慣れているツールに相当するような描画プログラムもあります。
プロトタイプはその効率性を強く強調してデザインされ、実装されています。プロトタイプは、常に直接 C++ コーディングを行うのと同じくらい効率的ではありませんが (派生ではなく複合に基づいているため)、アプリケーションは性能上の問題を引き起こすことなく、何千ものプロトタイプ・インスタンスを作成できます。
プロトタイプ・デザイン・パターン
BGO 作成のプロセスは、プロトタイプ・デザイン・パターンに基づいています。ユーザーは基本オブジェクトをグループ化し、グループをそこから複製 (またはインスタンス) を作成できるモデル (またはプロトタイプ) として使用できます。プロトタイプを変更すると、そのインスタンスもすべて自動的に更新されます。
プロトタイプ・デザイン・パターンを使用すると、WYSIWYG エディターで複雑なグラフィック・オブジェクトを作成し、そのオブジェクトをアプリケーション・パネルの構築に直ちに使用できます。
アクセサーを使用してグラフィックおよび対話的な振る舞いを指定する
BGO はパブリック・アトリビュートのセットを定義します。これらのアトリビュートは、BGO のインターフェースをプログラムするアプリケーションに対応します。アトリビュートを任意の値に設定して、BGO の外観を変更することができます。いつでもこれらのアトリビュートを問い合わせることができます。
これらアトリビュートのそれぞれにいくつかの振る舞いを付加できます。振る舞いは、アトリビュートが変更された、あるいは問い合わされたときに実行される二次作用を定義します。たとえば、Condition 振る舞いを Temperature アトリビュートに付加できます。温度が変更すると条件が評価され、オブジェクトのグラフィック外観が変化します。Condition の振る舞いは、温度が定義済みの閾値を超えたときにオブジェクトの色を赤に設定することができます。また対話的な振る舞いを BGO に付加することもできます。たとえば、ユーザーが温度をクリックしたときに温度が調整されるように指定できます。
アトリビュートおよび振る舞いは、アクセサー (クラス
IlvAccessor のオブジェクト) で実装されます。アクセサーはグラフィック・オブジェクトに付加し、次の処理が行えます。
アトリビュート値を保存
二次作用の実行
ユーザー・イベントの追跡
アクセサー機構により、複雑な振る舞いを定義できます。アプリケーション全体のロジックを再作成するためにアクセサーを組み合わせることができます。しかしアクセサー機構は、オブジェクトおよびオブジェクトの対話的な振る舞いの定義にのみ使用することをお勧めします。アクセサー機構をアプリケーション・ドメインの機能の実装に使用しないでください。これにより、プログラムの健全なモジュラーの側面を維持します。
全体としてみると、BGO のアクセサーは、データ・フロー・グラフィック・プログラムを定義します。データ・フロー・プログラミングは、C++ や Java などのプログラミング言語で使用される古典的なコントロール・フロー・モデル同様にパワフルです。ただし、データ・フロー・プログラミングは、小さなグラフィック志向のプログラムの定義により適しています。
複雑なグラフィックの振る舞いの定義を簡単にするために、スクリプト・アクセサーでグラフィックおよ対話的な振る舞いを Rogue Wave Script プログラムとして定義することができます。これにより、より複雑な計算を実行し、Rogue Wave Script 機能全体へアクセスできます。
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.