シリーズ「開発の初めから順番に書いていってみる」の続きです。
設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
現在プログラミングです。
(プログラミング以前は、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm)
プログラミングでは決定表と自動生成のお話をします。
今、画面の自動生成で、特にBREWの自動生成版とJavaの画面自動生成を共存させる形でのアプローチをしています。そのうち、今はイベントリスナーについて扱い、前回、その問題と解決の方向性を示しました。
今回は、そのイベントリスナー部分のソースを示します。
■画面イベントクラスソース
いま、サンプルにしているソースはここのgamen1.javaで、イベントは、gamen1クラスのインナークラス、
gamen1_HandleEventクラスです。
これを以下のように、単体のクラスにします。
import org.eclipse.swt.*; import org.eclipse.swt.widgets.*; import org.eclipse.swt.events.*; public class gamen1_HandleEvent extends SelectionAdapter { gamen1 g = null; /* * 画面つきコンストラクタ */ public gamen1_HandleEvent(gamen1 g) { this.g = g; } /* * セッター(画面) */ public void setGamen(gamen1 g) { this.g = g; } /* * ボタンが押されたときの処理 */ public void widgetSelected(SelectionEvent e) { Object o = e.getSource(); shoriPro("widgetSelected",e.getSource()); } /* * すべての処理 */ public void shoriPro(String eventCode,Object o) { // まだ、画面がセットされていなかったら、抜ける if ( g == null ) { return; } // 仕様書に書いた条件分、ならぶ if ((eventCode.equals("widgetSelected") == true) && ( o.equals(g.b1)== true) ) { // ここで処理呼び出し // g.shori.shori1(g); return; } // 仕様書に書いた条件分、ならぶ if ((eventCode.equals("widgetSelected") == true) && ( o.equals(g.b2)== true) ) { // ここで処理呼び出し // g.shori.shori2(g); return; } } } |
■つまり
つまり手順としては、
1.クラスを(内部クラスではなく)外部におき
2.生成するとき、画面をもらってしまい
3.イベントがおきると、全部shoriProに流れるようにして、
4.そこで振り分ける。
なお、振り分け後の動きですが、
・あらかじめ、画面クラスに、処理を書いた処理クラス部分を生成しておいて
→属性名が、shori
・そのイベントごとに、呼び出します
・なお、書き出し内容は、仕様書に書くようにします。
ってなかんじです。次は仕様書についてです。