📝オブジェクト指向設計
Open-Closed Principle | 開放/閉鎖原則 #
ref. 開放/閉鎖原則 - Wikipedia
ソフトウェア要素(クラス、モジュール、関数など)は、拡張に対しては開いており、修正に対しては閉じているべきである。 software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.[1]
📚オブジェクト指向のこころ読書メモ #
OOP の 2 大原則 #
オブジェクト指向のこころとは, ズバリ以下だ.
- 流動的要素を探し出してカプセル化する
- クラス継承よりもオブジェクトの集約を多用する
名詞/ 動詞 抽出法 #
- 問題領域に存在する名詞を洗い出しそれらを表現するオブジェクトを生成する.
- 名詞に関連した動詞を洗い出し,それらを表現するメソッドを追加する
共通性/ 可変性 分析法 #
- 共通性分析:
- 時間が経っても変化しにくい構造を見つけるもの
- 共通性分析によってまとめられた概念を抽象クラスによって表現
- 可変性分析:
- 変化しやすい構造を洗い出すもの
- 可変性分析で得た流動的要素は抽象クラスの派生クラスによって実装される
設計手順:
- (抽象クラス) このクラスが持つ責務をすべて全うするにはどうようなインターフェイスが必要か?
- (派生クラス) この特定実装の中でどうのようにして与えられた仕様を実装できるのか?
Jim Coplien が提唱. p235 第 15 章から抜粋.
References #
- オブジェクト指向の本懐 (7) ・オブジェクト指向分析 - Strategic Choice
- 共通性・可変性分析 (commonality/variavility analysis) - Debuginfo