3.12 メソッド追加の方法のクラス図

プログラム

C3_12

プログラムの説明

メソッド追加の方法のクラス図

このクラス図より、UserLocatorクラスはUserインタフェースのみに関連関係があり、具象クラス(Student、Teacher、Staffクラス)には依存(関連)していないことが分かります。

このことから、条件分岐による方法は以下の問題があることが分かります。

「移植性のなさ」:設計の再利用が困難
Userインタフェースを実装したクラスを追加するたびにUserLocatorを修正する必要がありUserLocatorの再利用が困難になります。

「硬さ」:設計変更が困難
拡張によりクラスが増加した場合、関係(依存、関連)があるクラスへ影響を与えてしまう。

この解答はUserインタフェースを実装したクラスの追加には、オープン・クローズド原則(Open-Closed Principle)を満たしていると言います。

良い設計か悪い設計かを理解するためにはクラス図等により設計(クラスの構造)がどの様になっているかを理解する必要があります。

オープン・クローズド原則(Open-ClosedPrinciple)

ソフトウェアの構成要素(クラス、メソッド等)は拡張に関しては開いて(オープン)、修正に対して閉じて(クローズド)いなければなりません。

補足

printUsersメソッドはインタフェースによるポリモフィズムをうまく利用しています。

ポリモフィズム

インタフェースが同じでもオブジェクトにより振る舞いが異なることをポリモフィズムと言います。