作って遊ぼうJava(3) Graphicsの拡張、クラスの一般化

JavaのGraphicsクラスでは太い線が描けないので、Small Basicと同様の絵を描けるようにGraphicsクラスを拡張して、AltGraphicsクラスを作成しました。このクラスを利用して前回のTestBoard01を書き直しました。TestBoard02として公開します。
Testboard02
【図3 太い線が描けるようになったBoard】
線と矩形と楕円が太線で描けるようになりました。楕円は60角形で近似してあります。GraphicクラスのオブジェクトはAppletのpaintメソッドの引数として渡されるため、新しいAltGraphicsクラスのオブジェクトに覚えさせる必要がありました。そのためにpaintメソッドの先頭で、AltGraphicsクラスのassociateメソッドを呼ぶ、という仕様にしました。
それから、今回はクラス Board が単に三目並べの盤だけでなく、広くボードゲームの盤のクラスとして使えるように、手を入れました。例えば、以下のような変更をしています。
(1) 一部の private 変数を protected 変数に変更しました。こうすることで、Boardクラスを継承するサブクラスの中からその、protected変数を参照または変更できるよになります。
(2) paintメソッドの中の処理の一部を別のpublicメソッドを呼び出すように変更しました。例えば盤の枠線を描く部分を drawGrid メソッドを呼び出すようにしました。升目の中に駒を置くゲームでは Boardクラスの処理をそのまま使えますが、たとえば囲碁のように線の交点に石を置くような枠線は、このdrawGridメソッドをオーバーライド(上書きあるいは置き換え)して使うことができます。
オブジェクト指向プログラミング(OOP)では、作ったプログラムを再利用できるところがメリットだと述べましたが、今回作っていてい気になったのは、共通部品の品質です。クラス Board をいろいろなボードゲームの共通部品にしようと考えているのですが、Board を変更するたびに、それを使うアプレット(さまざまなボードゲーム)に影響が出てしまいます。
共通部品が十分な品質に至っている、俗に「枯れている」という表現をしますが、共通部品が枯れてから、本格的な再利用が開始できるんだなと、感じました。
(つづく)

カテゴリーJava

コメントを残す