今まで紹介してきたアプレットは、比較的単純な機能を持つものばかりでした。
そのためソース・ファイルに含まれるクラスの定義は、
アプレット自身の1つしか存在しません。
しかしアプレットが複雑になってくると、
ソース・プログラム自身も長くなり全体が見えにくくなります。
そのような場合は、
複雑になったアプレットの機能をいくつかの部品に分けて考えると便利です。
そうした部品自体を独立したクラスとして用意しておき、
それらの部品を「組み立てる」ことでより複雑な構造を持つクラスを
実現していきます。
複雑な機能を持つアプレットでも、必ずいくつかの単純な機能の要素に分解できます。
また、うまく機能を分離して設計ができれば、そうしたクラスは
別のアプレットでも再利用できるようになります。
これが「部品」の概念です。
部品になるクラスもクラス定義の記述の形式は同じです。
たとえば、上で述べた「升目」の役割をするクラス Cell を設計してみましょう。
このクラスのオブジェクトが持つ性質として必要と考えられるのは、
サイズ、色などの情報でしょう。また、それらの情報を取り出したり設定したり、
セルの表示を行うためのメソッドも必要になるでしょう。
さらに、コンストラクタも定義しておく必要があります。
import java.awt.Graphics;
import java.awt.Color;
/** 色付きの升目の領域 Cell クラス */
public class Cell {
/** セルの色 */
protected Color color;
/** セルのサイズ */
protected int width, height;
/** コンストラクタ(クラスの新しいデータの生成を行う)*/
Cell( int width, int height ) {
this.width = width;
this.height = height;
this.color = Color.black;
}
Cell( int width, int height, Color color ) {
this.width = width;
this.height = height;
this.color = color;
}
/** セル内部に描画を行うメソッド */
public void paint( Graphics g ){
g.setColor( color );
g.fill3DRect( 1, 1, width-2, height-2, true );
}
/** セルに色を再設定するメソッド */
public void setColor( Color color ){
this.color = color;
}
:
:
:
}