Clean Architecture: Chapter 5. Object-Oriented Programming
オブジェクト指向の利点は、ポリモーフィズムのサポートによって、サブモジュールの詳細と独立して上位のモジュールを開発できるプラグインアーキテクチャを可能にしてくれる所にある。
オブジェクト指向設計とは何だろうか?
逆説的な語り口。いくつかの説明がある。
- 「データと関数の組み合わせ」
f(o)
の代わりにo.f()
と書こう、と言っているに過ぎない
- 「現実世界をモデリングする方法」
- 「現実世界をモデリングする」とは何なのかを説明していない
- カプセル化・継承・ポリモーフィズムという3つのキーワードで語られることがある
オブジェクト指向言語はカプセル化・継承・ポリモーフィズムをサポートしているのか
- カプセル化:0点
- 継承:50点
- オブジェクト指向以前の言語でも継承(多重継承は除く)は実現できてはいたが、より透過的・安全に実現できるようになった
- 多態性:100点?
- オブジェクト指向言語以前から多態性はあった
open()
,read()
などの決まった関数が実装されているものはFILE
とみなせる(つまりFILE
というインタフェース)FILE
はそれらの関数の実体を指すポインタの集まり
- 関数ポインタをプログラマが手動で管理するのは、デバッグ困難でかなり危うい
- オブジェクト指向言語は、ポリモーフィズムを管理してくれる点でメリットが大きい
- 例:C++では
vtable
というテーブルで仮想関数の実体を管理している
- 例:C++では
- オブジェクト指向言語以前から多態性はあった
ポリモーフィズムの利点
- サブシステムの実装に依存せずにプログラムが書ける
- UIやデータベースをインタフェースを介して抽象化することで、ビジネスロジックがUIやデータベースの実装に依存しない(インタフェースのみに依存する)ようにできる!
Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
- 作者: Robert C. Martin
- 出版社/メーカー: Prentice Hall
- 発売日: 2017/09/20
- メディア: ペーパーバック
- この商品を含むブログを見る