CAから学んだOO
最近、読んだ本で、私の中でもやもやとしていた「オブジェクト指向とは」を明文化してくれた。
みんなにも紹介したい。
■1.オブジェクト指向の性質
よく、OOの性質として以下の3点があげられる。
・カプセル化(データと関数のカプセル化)
Cでも、ヘッダーファイルを適切に定義すれば、実現できる
・継承(変数と関数の再宣言)
・ポリモーフィズム
Cでも、関数ポインタで実現できる
いずれも、それっぽいことは構造化言語でも実現できた。
関数ポインタを駆使するなど、面倒で危険だが。
オブジェクト指向言語でこれらを利用できるようになったのではなく、これらを言語仕様に取り込み、簡単・安全に利用できるようにしてくれた。
■2.依存関係逆転
ソースコードの依存関係は、制御の流れで決まっていた。
ビジネスルールは変更頻度が低く、DB(DBMSの変更・接続モジュールの変更/バージョンアップなど)に依存させたくない。
<図1 凡例>
┌────
|モジュール境界
└────
↓依存関係の方向
<図2 依存関係と制御の流れ>
┌────
|UI
└────
↓
┌────
|Business Rule
└────
↓
┌────
|DB
└────
インタフェースを介し、より下位のモジュールにインタフェースを継承させることにより、依存関係を逆転できる。
(技術要素:継承・ポリモーフィズム)
<図3 依存関係の逆転>
┌────
|UI
└────
↓
┌────
|Business Rule
| ↓
|Storage Interface
└────
↑
┌────
|DB(Storage Interfaceを実装)
└────
■3.まとめ
安全に使えるようになった継承・ポリモーフィズムを使用することで、ソースコードの依存関係を絶対的に制御できるようになった。
(プラグインアーキテクチャ)
これで、上位レベルの方針(業務より)を含んだモジュールを、下位レベルの詳細(実装より)を含んだモジュールから独立させられる。
yahoo!
■4.出典、用語
CA:Clean Architecture 達人に学ぶソフトウェアの構造と設計
最近読んだ本である。
OO:Object Organized
オブジェクト指向
お問い合わせ
株式会社タダノシステムズ
電話 087-839-5545
受付時間 8:30-17:00 [ 土・日・祝日除く ]