5.1 演習4-2 の解答

プログラム

C5_1

プログラムの説明

演習4-2の解答

演習4-1を解くときの問題はEmployeeインタフェースに役職を文字列で返却するメソッドが無いことです。

解答案として

  1. printメソッドでの条件分岐による方法
  2. Employeeインタフェースへのメソッドの追加

が考えられます。

ここでオブジェクト指向設計の原則の単一責任の原則(SRP)について簡単に説明します。

単一責任の原則:クラスを変更する理由は一つ以上存在してはいけない

逆に考えるとクラスには役割(責任)があるということになります。ここでは役職番号から文字列へのマッピングが何処にあるべきなのかと考えましょう。

もし、役職番号から文字列へのマッピングがprintメソッドにあった場合には、役職の文字列が必要とされる場所全てにそのソースコードが散在することが分かります。これは「不必要な繰り返し」に相当します。

つまり、役職番号から文字列へのマッピングの定義を知っているのクラスの役割になることがわかります。

これらのことから、解答は解決案UのEmployeeインタフェースへのメソッドの追加であることが分かります。