|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ 開放 : [かいほう] 1. (n,vs) open 2. throw open 3. liberalization 4. liberalisation ・ 閉鎖 : [へいさ] 1. (n,vs) closing 2. closure 3. shutdown 4. lockout 5. unsociable ・ 鎖 : [くさり] 【名詞】 1. chain ・ 原 : [はら, もと] 1. (n,n-suf,n-t) (1) origin 2. basis 3. foundation ・ 原則 : [げんそく] 【名詞】 1. principle 2. general rule
開放/閉鎖原則(かいほうへいさげんそく。、OCP)とは、オブジェクト指向プログラミングにおいて、クラス(およびその他のプログラム単位)は * 拡張に対して開いて (open) いなければならず、 * 修正に対して閉じて (closed) いなければならない という設計上の原則である。 開放/閉鎖原則に従ったソフトウェアは、既存のソースコードを変更することなく、振る舞いを変更することができる。 この原則は、本番環境で稼働中のソフトウェアにとって特に重要である。稼働中のソフトウェアでは、ソースコードを変更した場合、コードレビューやユニットテストなどの品質検査が必要となる。しかし、開放/閉鎖原則に沿ったソフトウェアは、既存のソースコードを変更せずに機能修正や機能追加を行うことができる。そのため、品質検査を再実行する必要がない。 オブジェクト指向プログラミングには、「グローバル変数を使ってはならない」「インスタンス変数はすべて private にする」などのさまざまなノウハウや豊富なデザインパターンがあり、開放/閉鎖原則はそれらの根底にあるといわれる〔Martin 1996〕。開放/閉鎖原則という名前で呼ばれるものは2つある。どちらも問題の解決に継承を用いているが、その目的・テクニック・結果は異なっている。''、OCP)とは、オブジェクト指向プログラミングにおいて、クラス(およびその他のプログラム単位)は * 拡張に対して開いて (open) いなければならず、 * 修正に対して閉じて (closed) いなければならない という設計上の原則である。 開放/閉鎖原則に従ったソフトウェアは、既存のソースコードを変更することなく、振る舞いを変更することができる。 この原則は、本番環境で稼働中のソフトウェアにとって特に重要である。稼働中のソフトウェアでは、ソースコードを変更した場合、コードレビューやユニットテストなどの品質検査が必要となる。しかし、開放/閉鎖原則に沿ったソフトウェアは、既存のソースコードを変更せずに機能修正や機能追加を行うことができる。そのため、品質検査を再実行する必要がない。 オブジェクト指向プログラミングには、「グローバル変数を使ってはならない」「インスタンス変数はすべて private にする」などのさまざまなノウハウや豊富なデザインパターンがあり、開放/閉鎖原則はそれらの根底にあるといわれる〔Martin 1996〕。開放/閉鎖原則という名前で呼ばれるものは2つある。どちらも問題の解決に継承を用いているが、その目的・テクニック・結果は異なっている。 == メイヤーの開放/閉鎖原則 == 1988年に、バートランド・メイヤーが『オブジェクト指向ソフトウェアの構築(Object Oriented Software Construction)』の中で「開放/閉鎖原則」という語を生み出したと一般に称される。それは、一度完成したら、クラスの実装はエラーの修正のためだけに変更され、新機能や機能変更には別のクラスを作る必要があるというものだった。そのようなクラスは、オリジナルのクラスから継承によってコードの再利用が可能となる。派生したサブクラスは、オリジナルのクラスと同じインタフェースを持っていても持っていなくともよい。 メイヤーの定義では、実装の継承が擁護されている。実装は継承によって再利用可能であるが、インタフェース仕様は必ずしもそうではない。既存の実装は修正に対して閉じており、また新しいクラスは既存のインタフェースを引き継ぐ必要はない。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「開放/閉鎖原則」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Open/closed principle 」があります。 スポンサード リンク
|