抽象クラスの役割と「単一責任の原則」 |
抽象クラスであるAbstractEmployeeとTeacherクラス、Staffクラスの関係は左のクラス図のようになります。 例えば、Teacherクラスの役職名が一つ増えたとしても、この修正による影響はStaffクラスにもAbstractEmployeeにもおよびません。 抽象クラスの設計は以下の点を気をつけます 何を抽象メソッドにするかにより、 「不必要な繰り返し」 は減りますが、設計によっては 「単一責任の原則」 が満たされない場合があります。 「単一責任の原則」を満たすには、インタフェース(メソッドの同一性)とクラスの実装との違いを明確にし、実装の同一部分を抽象クラスに抽出する必要があります。 インタフェース、抽象クラスと具象クラスの役割は インタフェース:メソッドの集合の宣言であり、具象クラス(抽象クラスを含む)に依存しないコーディングが可能になります。 抽象クラス:具象クラス間のソースコードの重複を取り除くことができます。また、具象クラスに強制したいルールを抽象メソッドを使うことによりカプセル化できます。 具象クラス:インタフェースや抽象クラスに対する相対的な呼び方で、クラス(クラス名)に対する役割を全て満たす実装が必要になります。 |
---|---|
依存 |
依存とは、何らかの関連があると考えてください。簡単に説明すると依存があるクラス(インタフェースを含む)がないとコンパイルができなくなります。 |