5.9 抽象クラスの役割と「単一責任の原則」

クラス図

C5_9

プログラムの説明

抽象クラスの役割と「単一責任の原則」

抽象クラスであるAbstractEmployeeとTeacherクラス、Staffクラスの関係は左のクラス図のようになります。

例えば、Teacherクラスの役職名が一つ増えたとしても、この修正による影響はStaffクラスにもAbstractEmployeeにもおよびません。

抽象クラスの設計は以下の点を気をつけます

何を抽象メソッドにするかにより、

「不必要な繰り返し」

は減りますが、設計によっては

「単一責任の原則」

が満たされない場合があります。

「単一責任の原則」を満たすには、インタフェース(メソッドの同一性)とクラスの実装との違いを明確にし、実装の同一部分を抽象クラスに抽出する必要があります。

インタフェース、抽象クラスと具象クラスの役割は

インタフェース:メソッドの集合の宣言であり、具象クラス(抽象クラスを含む)に依存しないコーディングが可能になります。

抽象クラス:具象クラス間のソースコードの重複を取り除くことができます。また、具象クラスに強制したいルールを抽象メソッドを使うことによりカプセル化できます。

具象クラス:インタフェースや抽象クラスに対する相対的な呼び方で、クラス(クラス名)に対する役割を全て満たす実装が必要になります。

依存

依存とは、何らかの関連があると考えてください。簡単に説明すると依存があるクラス(インタフェースを含む)がないとコンパイルができなくなります。