- システムの管理
- 自分の作成したiαppliを1つのアプリケーションとする為には、そのシステム面でしっかりとした基盤が構築されている必要があります。
- この講義ではシステムの管理法を学んで行く事にしましょう。
- そもそもここで言う"システム"とは実際にユーザへ見せる画面を管理する部分の事を指しています。
- 例えばタイトル画面だったり、そこから新規作成画面へと飛んだり、また既存のデータをロードしたり‥
- この様な選択肢をユーザ側に与え、それを逐次画面に反映させるものがシステムです。
- 我々がこれ迄扱って来たiαppliは起動した途端に本体部分が1つ、画面上で動き出すだけのものでした。しかしこのシステム管理法を知ればインターフェイスを持ったアプリケーションを提供する事が出来るのです。
- システムの構築
- では具体的な管理法について見て行きましょう。
- まず、systemというフィールドを設けます。勿論設ける場所はメインクラス内です。
/**システム管理フィールド*/
private int = system;
private int = system;
- 次にこのsystemに役割を決めましょう。例えばsystemが0の値を持つ時はタイトル画面、1ならば新規作成画面といった具合です。
- そして、paint()メソッド内で表示させる画面を、このsystemの値によって変動出来る様にするのです。
public void paint(Graphics g) {
g.lock();
if (system == 0) {
//タイトル画面の描画
} else if (system == 1) {
//新規作成画面の描画
} else if (system == 2) {
//データロード画面の描画
}
g.unlock(true);
}
g.lock();
if (system == 0) {
//タイトル画面の描画
} else if (system == 1) {
//新規作成画面の描画
} else if (system == 2) {
//データロード画面の描画
}
g.unlock(true);
}
- run()メソッドも同じ様に分岐処理させましょう。これで、systemと画面の処理を連動させる事が出来ました。
- 最後に、systemの切り替えをユーザに行わせる様なメニュー画面を構築しましょう。
- 今回は解り易い様にタイトル画面にこのメニューを持って来ます。
- ユーザはこの画面を通して画面を切り替えます。そこで、キー入力でこのメニューを操作出来る様にしましょう。
/**キー入力を扱うメソッド*/
public void keyMovement() {
/**10キーでの操作用変数*/
final int nKS = getKeypadState();
if ((nKS & 1 << Display.KEY_1) != 0) {
system = 0;
} else if ((nKS & 1 << Display.KEY_2) != 0) {
system = 1;
} else if ((nKS & 1 << Display.KEY_3) != 0) {
system = 2;
} else if ((nKS & 1 << Display.KEY_4) != 0) {
system = 3;
}
}
public void keyMovement() {
/**10キーでの操作用変数*/
final int nKS = getKeypadState();
if ((nKS & 1 << Display.KEY_1) != 0) {
system = 0;
} else if ((nKS & 1 << Display.KEY_2) != 0) {
system = 1;
} else if ((nKS & 1 << Display.KEY_3) != 0) {
system = 2;
} else if ((nKS & 1 << Display.KEY_4) != 0) {
system = 3;
}
}
- オブジェクト指向の利用
- この様に、システムはフィールドを用いれば簡単に管理する事が出来ます。
- また、これ以外にも、各画面毎に固有のオブジェクトを作成し、それらを何らかの手段で切り替えるという方法もあります。
- こちらの方法は処理をオブジェクトに委託する為コードが全体的に見易くなるというメリットがありますが、しっかりオブジェクト指向を理解していないと余計なメモリを食う原因となります。
- 一般に、流用性を持たせたいのであればオブジェクト指向で書くべきだと言われていますが、このiαppliに限ってはどちらが有効だとは一概には言い難いです。
- その辺りは臨機応変に、各アプリケーションの特性を活かせる様なコード記述をその都度して行けば良いと思われます。