オブジェクト指向とは、操作手順より操作対象 (オブジェクト) に重点を置き、システムを設計する手法です。ここでは、その考え方について解説します。
単一責任の原則 (Single Responsibility Principle : SRP)
クラスを変更する理由は、1つ以上存在してはならない。
オープン・クローズドの原則 (OCP : Open-Closed Principle)
ソフトウェアの構成要素 (クラス、モジュール、関数など) は、拡張に対して開いて (オープン) いて、修正に対して閉じて (クローズド) いなければならない。
リスコフの置換原則 (Liskov Substitution Principle : LSP)
派生型はその基本型と置換可能でなければならない。
依存関係逆転の原則 (Dependency Inversion Principle : DIP)
抽象化した部分が、実装の詳細に依存してはならない。実装の詳細が、抽象化した部分に依存するべきである。
インターフェイス分離の原則 (Interface Segregation Principle : ISP)
クライアントに、利用しないメソッドへの依存を強制してはならない。
インターフェイスはクライアント側に属するものであり、階層構造側に属するものではない。
再利用・リリース等価の原則 (REP : Release-Reuse Equivalency Principle)
再利用の単位とリリースの単位は等価になる。
閉鎖性共通の原則 (CCP : Common Closure Principle)
パッケージに含まれるクラスは、みな同じ種類の変更に対して閉じているべきである。
パッケージに影響する変更はパッケージ内のすべてのクラスに影響を及ぼすが、他のパッケージには影響しない。
全再利用の原則 (CRP : Common Reuse Principle)
パッケージに含まれるクラスは、すべて一緒に再利用される。つまり、パッケージに含まれるいずれかのクラスを再利用するということは、その他のクラスもすべて再利用することを意味する。
非循環依存関係の原則 (ADP : Acyclic Dependencies Principle)
パッケージ依存グラフに循環を持ち込んではならない。
安定依存の原則 (SDP : Stable Dependencies Principle)
安定する方向に依存せよ。
安定度・抽象度等価の原則 (SAP : Stable Abstractions Principle)
パッケージの抽象度と安定度は、同程度でなければならない。
アジャイルソフトウェア開発の奥義 付録E「オブジェクト指向設計の原則」
契約による設計とは、信頼性の高いソフトウェアを構築するための技法です。