複数のクラスからなるアプレット
アプレットがある程度複雑になってくると、
ソース・プログラム自身も長くなり、全体が見えにくくなります。
1つの解決方法は前に述べたようにクラスの継承を利用して、
少しずつ機能を追加するやり方です。
たとえば、表計算を行うアプレットとか、
ボード・ゲームのようなアプレットを思い浮かべてください。
そうしたアプレットは、もっと小さな「升目」を単位として構成されているでしょう。
そして、それらの「升目」は特定の処理(計算とかゲームのキャラクターの表示)
を機能として持つようにすれば、プログラムを設計するのが楽になるでしょう。
このようなアプレットでは、部品にあたるデータも新しいクラスとして
定義することが可能です。
部品となるクラスは、Applet クラスの拡張ではありません。
全く新しくデータの集まりとして定義されます。
また、それらの内部データを初期化するために、「コンストラクタ」と
呼ばれる特殊な関数が用意されるのが普通です。
/**
塗りつぶす領域を表す BoardCell クラス
*/
class BoardCell {
public SimpleBoard parent; // 親のオブジェクト
public int i,j; // セルのインデックス
public int width, height; // セルのサイズ
public Color color; // セルの色
public boolean isPainted; // 塗りつぶされているか
public boolean toBePainted; // 塗り直すべきか
/**
コンストラクタ(クラスの新しいデータの生成を行う)
*/
BoardCell( SimpleBoard parent, int i, int j,
int width, int height ) {
this.parent=parent;
this.i=i; this.j=j;
this.width=width; this.height=height;
this.color=parent.bgColor;
this.isPainted=false;
this.toBePainted=false;
}
:
:
複数のクラスを用いる場合、それらを1つのソースファイルにまとめても、
別々のファイルに分けて保存してもどちらでもかまいません。