§5 オブジェクト指向プログラミング
- オブジェクト指向設計とは何でないか
- 関数とデータの組み合わせ
o.f()
vsf(o)
- オブジェクト指向が生まれる前からやってる
- 現実の世界をモデル化 - 何を言っているんだお前は
- 関数とデータの組み合わせ
- カプセル化
- 境界線の外からはデータが見えないアレ
- C 言語でもうまくやれる
- 継承
Animal
クラスに派生したCat
クラスがAnimal
クラスになりすますアレ- OO 登場以前からやってる普通のプラクティス(ただし強引なキャスティングが必要な点に置いては、 OO の方がうまく扱えるようになった)
- ポリモーフィズム
- 依存関係逆転
- 上位モジュールは下位のモジュールを呼び出すため、上位のモジュールは下位のモジュールに依存している (図1)
- インターフェースを経由すると、依存関係の向きが逆向きになる = 依存関係逆転 (図2)
- OO が安全なポリモーフィズムを提供する仕組み
- UI/Model/Database はそれぞれ依存関係が逆転している -> 独立デプロイ可能性 (図3)
- 独立デプロイ可能だと、別のチームが開発できる -> 独立開発可能性
- まとめ
- OO とはポリモーフィズムを利用してシステム内のすべての依存関係を制御すること