OOP の基礎

OOPの3大要素

  • 継承
  • カプセル化
  • ポリモーフィズム(多態性)

下記サイトがとてもわかりやすい。

ポリモーフィズムはTemplate MethodパターンStrategyパターンで実現できる。

ポリモーフィズムの考え方

手続き型のアプローチだと共通部分をメソッドに切り出していましたが、ポリモーフィズムを使う場合は固有部分を抽象メソッドに切り出します。

これらは補完関係にあるのでどちらが偉いというわけではありません。処理の流れは似ているんだけど一部分だけ違うっていう場合はポリモーフィズムを使って処理の流れを共通化するアプローチが有効です。

オブジェクト指向の悟りを開く!初心者でも分かるOOPの最重要技術ポリモーフィズムの使い方!


OOPの重要概念

  • オブジェクトコンポジション
  • 委譲(オブジェクトコンポジションの応用)

委譲の実現方法としてStrategyパターンがよく使われる。

参考:
Tricorn Labs » StateパターンとStrategyパターンは何が違うのか考える


使用する代表的パターン例

  • Strategyパターンで機能を委譲
  • 委譲先のクラスはTemplate Methodパターンでポリモーフィズムを実現
    (異なる処理を抽象化し、抽象クラス/インターフェース=テンプレートへ抽出)
  • 上記により実装に依存しない型によるプログラミングを実現
  • 処理のUIはCommandパターンで統一

「アジャイルソフトウェア開発の奥義」(ロバート・C・マーチン p164)