抽象クラスの導入 |
クラス図を見てください。Dice、EvenDiceとOddDiceには同じ振る舞いがあることが分かります。 クラス名とコンストラクタ名はそれぞれ違いますが、castメソッドgetValueメソッドが同じことが分かります。 この同じ振る舞いだけを抽出したものがインタフェースです。インタフェース名をCastableとします。 インタフェースと具象クラスの間に抽象クラスのAbstractDiceを導入します。具象クラスのソースコードの重複を防ぐためです。 では、演習としてCastable、Dice、EvenDiceとOddDiceのソースコードを参考に抽象クラスであるAbstractDiceを完成させてください。ただし、具象クラスであるDice、EvenDiceとOddDiceも修正してください。 |
---|