前回の Board をスーパークラスとする IgoBoard クラスを作成し、そのクラスをテストするアプレット TestIgoBoard02 を作成しました。
【図4 クラスIgoBoardのテスト用アプレット】
今回作成したIgoBoardというクラスは、次のような形になっています。
【リスト1 クラス IgoBoard の流れ】
public class IgoBoard extends Board
{
/* 囲碁に固有の定数の定義 /
public IgoBoard(int iRo)
{
/
* このクラスのコンストラクタ
* スーパークラスの一部のprotected変数を変更し、
* 碁盤の属性にする。
/
}
public drawGrid()
{
/
* スーパークラスの drawGrid メソッドを
* オーバーライドし、囲碁特有の枠線を
* 描画する。
*/
}
}
これ以外の処理はスーパークラス Board の処理が継承されます。つまり、再利用できたわけです。
うまく再利用できるためにはスーパークラスの作りがよく設計されていることが大切ですが、さまざまなケースも含んだ抽象化・一般化は、そう簡単ではありません。いくつものサブクラスを作るうちにスーパークラスのほうも枯れて行くのだと思います。
(つづく)