ゴミ捨て場

命を大事にしな

デザインパターンとともに学ぶ オブジェクト指向のこころ 2

抽象クラス

  • 具象クラスを汎化させたもの。青二声優クラスを汎化させると声優クラスになる。
  • 青二声優クラスとアイム声優クラスをそれぞれ記述すると声優共通の機能に変更が入った時両方に手を入れないといけなくてめんどくさいけどそういうのを声優クラスに書いてやることで楽になる。
  • 青二声優クラスもアイム声優クラスも同じ声優という概念として扱うことが出来て何かと便利。
  • 抽象クラスというのは「概念レベル」から見た時、そのオブジェクトが表現する概念を具体化したクラスの実装を格納する場所を提供するものとなる。つまり声優という概念を表現するためになければならないデータやメソッドが定義してある、声優の概念を記述したものとなるので、単に共通の要素を書いてあるだけの、実体化に使わないクラスというだけのものではない。

カプセル化

  • カプセル化は単に他のオブジェクトからデータやメソッドを隠蔽するということではない。
  • カプセル化はあらゆる隠蔽を含む。つまり、オブジェクトの具象クラスが何であるかを他のオブジェクトに意識させないことこそがカプセル化の真の利点である。青二声優だろうとアイム声優だろうと、事務所を意識せずに制御プログラムを書くことが出来る。
  • オブジェクトを使用する側は、実装についてあれこれと悩まなくてよくなり、物事が簡単になる。依頼する声優が誰であれ、使用する側はただ台詞の読み上げを依頼するということだけをすればよい。
  • クラスを実装する側は、呼び出し側のことを気にせずに変更を行うことが出来る。
  • カプセル化を行い、オブジェクト自体の振る舞いに対する責任を大きくしていくと、制御側の責任はどんどん低下し、オブジェクトと外界との間の結合度が必然的に低くなる。

ポリモーフィズム

  • 関連する具象クラス群に対し、クラスごとに特化したメソッドを実装することが出来る。
  • この能力によって、同じ台本を読むというメソッドでも青二声優とアイム声優でそれぞれ別のことをさせることが出来る。(制御する側はカプセル化によってこれらの違いを意識することなく、「台本を読む」を命じるだけでよい。)