目次 | |

3. シナリオ

ビーンズの機能を説明するため,3.では二つのビーン使用例(参考)を示す。

3.は,規定ではなく,参考であることに注意。

ビーンズの使用法は,3.で示すものがすべてではない。 アプリケーションビルダは,それぞれ異なるアプリケーション構成シナリオを提供する。

次の二つのシナリオは,アプレット作成についてだが,javaアプリケーション作成でも, 同じ段階を踏む。

3.1 アプレット作成のためのアプリケーションビルダの使用

このシナリオでは,ユーザがアプリケーションビルダを使って,アプレットを作成する。 アプリケーションビルダは,ソースコードの一部分を生成し,ユーザがソースコードを付加できる テンプレートを提供する。

a) ツールの購入
1) ユーザは,Javaアプリケーションビルダである WombatBuilder を購入し, インストールする。
2) ユーザは,アルの部品安売り屋から,Java Beans部品を購入する。JARファイルで, ビーンズが収められたWin32ディスケットを手に入れる。この中には,“ボタン”部品及び “データベースビューア”部品が入っている。
3) ユーザは,計算機にディスケットを挿入し,WombatBuilderの“ビーン追加...” という対話を使って,WombatBuilderに,ビーンズについての情報を送り込む。 WombatBuilderは,ビーンズをビーンコレクションにコピーする。 (WombatBuilderは,ビーンズの属性を知るために,この時点でそれを検査してもよいし, ビーンズが実際に使用されるまで待機してもよい。)
b) アプレットの配置
1) ユーザは,WombatBuilder内の,“Foobaz”と呼ぶ, 新しいカスタムアプレットの生成にとりかかる。まず,何もないアプレットテンプレートから開始する。 WombatBuilderは,Foobaz.javaファイルを生成して,このアプレットの状態を示す。
2) ユーザは,WombatBuilder ビーンズメニューから“button”を選択し, それをテンプレートにドロップする。 WombatBuilderは,"newButton()"を使って新しいボタンのインスタンスを割り付ける。 WombatBuilderは,この新しいボタンを,クラスFoobazのメンバーに追加する。
3) ユーザは,WombatBuilderビーンズメニューから“database viewer”を選択し, それをアプレットのテンプレートにドロップする。データベースビューアは, かなり複雑なビーンなので,初期化前の直列化された状態になっている。 そのため,WombatBuilderツールは,再度,メソッド“Beans.instantiate”を使って, 直列化されたオブジェクトインスタンスを読み取る。WombatBuilderは, この新しいデータベースビューアオブジェクトを,クラスFoobazのメンバとして追加する。
c) ビーンズのカスタム化
1) ユーザは,ボタンを選択して,WombatBuilderに編集を依頼する。 WombatBuilderは,Introspector.getBeanInfoを使って,ビーンを記述した BeanInfoオブジェクトを獲得し,このビーンには,カスタマイザが定義されていないこと を確認する。そこで,BeanInfo情報を使って,ビーンの読書き特性の名前を調べ, その特性の名前及びその現在値を含む単純特性シートを生成する。ユーザは, 特性シートと相互作用して,ボタンの見かけをカスタム化する。更新は,ビーンに適用される。
2) ユーザは,データベースビューアを選択し,WombatBuilderに編集を依頼する。 Introspector.getBeanInfoを使って,WombatBuilderは,データベースビューアがクラス Customizerをもっていることを知る。Wombatbuilderは,そのカスタマイザクラスの インスタンスを生成し,部品のカスタム化をそのカスタマイザに依頼する。 データベースビューアのカスタマイザは,一連の対話を表示し, ユーザに対象データベースの選択,表示するテーブル及びレコードを識別させる。 データベースビューアのカスタマイザは,パッケージの私的メソッドを使って, データベースビューアビーンの状態を設定する。
d) ビーンズの接続
1) ユーザは,ボタンにデータベースビューア起動機能をもたせることを決定する。 ユーザは,スクリーン上のボタンを選択して,WombatBuilderの“events”メニューから イベント類を見つけ出し,“action”イベントを選択する。 WombatBuilderは,テンプレートメソッド“Foobaz.button1Action”を生成し, テキストエディタを起動して,ユーザがメソッドのテキストを書けるようにする。
2) ユーザは,メソッドのプログラムをする。この場合には, 単にデータベースビューア部品のメソッド“update”を呼び出す。自動的に生成されたFoobazは, 次のとおりとなる。
	class Foobaz extends WombatBuilderApplet{
		public Button button1;
		public DatabaseViewer databaseViewer1;
		void button1Action(java.awt.event.ActionEvent evt) {
			databaseViewer1.update( );
		}
	}
3) さらに,WombatBuilderは,裏でアダプタクラスを生成し, ボタンをFoobazに接続する。これは次のとおりになる。
	class Hookup1234 implements java.awt.event.ActionListner {
		public Foobaz target;
		public void actionPerformed(java.awt.event.ActionEvent evt){
			target.button1Action(evt);
		}
	}
4) WombatBuilderは,クラスHookup1234の新しいインスタンスを生成し, その“target”フィールドにアプレットを割り当てる。それから, このHookup1234のインスタンスを,button1の“addActionListner”メソッドで登録する。 これで接続は完了した。
e) アプレットのパッケージ化
1) 作業が完了したら,ユーザは“make it so”を押す。WombatBuilderは, Java直列化を使って,Foobaz.serという備蓄ファイルに, Foobazオブジェクトを保存する。その保存処理の一部として, 二つのビーンズインスタンス(button1及びdatabaseViewer1メンバ)も保存する。 WombatBuilderは,イベント接続を再構成する初期化コードも生成する。
2) WombatBuilderは,備蓄ファイル,hookup1234.classを含むアプレットで必要な .class ファイル及びビーンズそれ自体のための .class ファイルを保持する Foobaz.jarファイルを生成する。
3) WombatBuilderは,アプレットタグを使って,Foobaz.jarファイルから備蓄した Foobaz.serをロードする例示HTMLページも生成する。
f) 試行
1) ユーザは,Space Warsウェブブラウザでアプレットをテストする。 htmlページを開くと,アプレットは,Foobaz.jarファイルの内部の Foobaz.serから直列化された状態で読み取ることで,初期化される。 この動作の一部として,様々なクラスも,Foobaz.jarファイルの内部の .classファイルからロードされる。
2) その結果,アプレットが実行され, ボタンにデータベースビューアがイベント接続され,ユーザが, WombatBuilderツールでカスタム化した状態になる。
3) Joy,Happiness 及び Banana Mochas一巡する(注1)。
注1 Printers Inc. Cafe, California Avenue, Palo Alto, CA の参照実装を,確認すること。

3.2 手書きアプレット作成でのビーンズ使用

このシナリオでは,手書きのアプレット形式のJava Beans部品をいくつか使用する。 このシナリオは,既存の簡単なAWT部品を使ってアプレットを作成するのと, かなり類似しており,特別なツールを用いずに,どのようにビーンズを使用するかを示す。
a) ツールのロード
1) ユーザは,JDKをダウンロードし,インストールする。JDKは,javacコンパイラを含む。
2) ユーザは,Dave's Freeware Component ページのJava Bean部品のいくつか有効なものに着目し, ビーンズのjarファイルをftpを使って取得する。
3) ユーザは,“jar”コマンドを使って,jarファイルの内容を抽出し, それを,ユーザの“class”ディレクトリに入れる。これには“Button”部品及び “DatabaseViewer”部品が含まれる。
b) アプレットの配置
1) ユーザは,新しいアプレットに対応するコード入力する。 アプレットの“init”メソッド内で,標準メソッド Beans.instantiate を呼び出すことによって,ユーザは,dave.Button及びdave.DatabaseViewerを生成する。 シーンの背後で,Beans.instantiateは,これら二つのビーンズのどちらかに対して, 直列化オブジェクト状態での読込み処理を行う。
	class MyApplet extends java.awt.Applet  {
		public void init( )  {
			try {
				ClassLoader cl = this.getClass().getClassLoder( );
				btn = (Button)Beans.instantiate(cl, "dave.Button");
				add(btn);
				dbViewer = (DatabaseViewer)Beans.instantiate(cl,
							"dave.DatabaseViewer");
				add(dbViewer);
			} catch (Exception ex)  {
				throw new Error("Could'nt create bean " + ex);
			}
		}
		private DatabaseViewer dbViewer;
		private Button btn;
	}
c) ビーンズのカスタム化
1) ユーザは,部品の見かけ及び振舞いを微調整したいので, メソッドMyApplet.initに,ビーンズの特性アクセサメソッド呼出しを追加する。
	btn.setBackground(java.awt.Color.red);
	dbViewer.setURL("jdbc:msql://aardvark.eng/stuff");
d) ビーンズの接続
1) ユーザは,データベースビューア起動をボタンにつなぐことを決定する。 ボタンは,java.awt.event.ActionListnerインタフェースでイベントを起動する。 ボタンが一つしかない単純アプレットしかないので,ユーザは,ActionListner を直接に実装するクラスMyAppletを作成し,インタフェースActionListner が要求するメソッド“actionPerformed”を追加する。
	void actionPerformed(java.awt.event.ActionEvent) {
		dbViewer.update( );    //prod the DB viewer.
	}
2) 実行時にイベントを接続するために,ユーザはメソッド MyApplet.initに次の行を追加する。
	btn.addActionListner(this);
e) アプレットのパッケージ化
1) 作業が完了したら,ユーザは,MyApplet.javaファイルをコンパイルし, MyApplet.classファイルがクラスディレクトリに追加されていることを確認する。
2) ユーザは,アプレットタグを使い,適当なコードベースで, MyAppletを参照するテスト用のHTMLページを作成する。
f) 試行
1) ユーザは,Space Warsウェブブラウザで,アプレットを試行する。 htmlページを開くと,アプレットは,メソッドMyApplet.initを実行し,初期化される。
2) メソッドMyApplet.initは,ボタン及びデータベースビューアのために Beans.instantiate を呼び出す。シーンの背後で,Beans.instantiate は, Button ビーンの"new"を実行し,Java直列化を使用して,初期化された DatabaseViewer ビーンを読み取る。
3) メソッドinitは,様々なメソッド setXXX を呼び出してビーンズをカスタム化し, ボタン addActionListnerを呼び出して,ボタンイベントに接続する。
4) その結果,アプレットが実行され, ボタンからデータベースビューアへのイベント接続が可能となる。
5) Restrained Joy,Limited Happiness 及び decaffe coffeeを一巡する。
手書きのアプレットに対するサンプルコードは,次のとおり。
	class MyApplet extends java.awt.Applet implements
					java.awt.event.ActionListner {

		// Applet initialization.
		public void init( )  {
			try {
				ClassLoader cl = this.getClass().getClassLoader();
				btn = (Button)Beans.instantiate(cl, "dave.Button");
				add(btn);
				dbViewer = (DatabaseViewer)Beans.instantiate(cl,
								"dave.DatabaseViewer");
				add(dbViewer);
			} catch (Exception ex) {
				throw new Error("Couldn't make bean " + ex);
			}

			btn.setBackground(java.awt.Color.Red);
			dbViewer.setURL("jdbc:msql://aardvark.eng/stuff");

			// Hookup the button to fire action events at us.
			btn.addActionListner(this);
		}

		// Method that catches action events from the button.
		void actionPerformed(java.awt.event.ActionEvent evt) {
			dbViewer.update( );   //prod the DB viewer.
		}

		private DatabaseViewer dbViewer;
		private Button btn;
	}

目次 | |