計算式関連のクラスは、概念クラス図では、「式クラス」、「÷クラス」、「×クラス」の3つで構成されており、 「式クラス」と「÷クラス」、「×クラス」は汎化の関係にありました。汎化について整理してみましょう。
「÷クラス」、「×クラス」とも、以下の共通的な振舞を実装することになります。
1. 2つの数値を受けとる
2. 計算を行い答を返す
3. 計算に使用した2つの値を返す
一方、実際に計算するロジックは双方で別に実装します。
このように、クラスを使う側から見た場合に、異なるオブジェクトに対して共通的なメッソッドを呼び出すことで、それぞれに応じた結果が得られることをポリモルフィズムと呼びます。
ここでは、インタフェースにより、実装させるべきメソッドをサブクラスに強要する方法を取ります。
(1) 式クラス(インタフェース)
責務 | 計算に関連するメソッドの実装を強要するインタフェース。 |
属性 | |
振舞 | 1. 計算に使用するxを受け取る。 2. 計算に使用するyを受け取る。 3. xとyを元に計算する。 4. 計算した答を返す。 5. 計算に使用したxを返す。 6. 計算に使用したyを返す。 7. 計算に使用した演算子を返す。 |
(2) ÷クラス(×クラスも同様)
責務 | 演算を行う。 計算に必要な数値と、答を保持し取り出すことが可能である。 |
属性 | 1. x 2. y 3. 答 |
振舞 | 1. 計算に使用するxを受け取る。 2. 計算に使用するyを受け取る。 3. xとyを元に計算する。 4. 計算した答を返す。 5. 計算に使用したxを返す。 6. 計算に使用したyを返す。 7. 計算に使用した演算子を返す。 |