開放/閉鎖原則(かいほうへいさげんそく。、OCP)とは、オブジェクト指向プログラミングにおいて、クラス(およびその他のプログラム単位)はという設計上の原則である。開放/閉鎖原則に従ったソフトウェアは、既存のソースコードを変更することなく、振る舞いを変更することができる。この原則は、本番環境で稼働中のソフトウェアにとって特に重要である。稼働中のソフトウェアでは、ソースコードを変更した場合、コードレビューやユニットテストなどの品質検査が必要となる。しかし、開放/閉鎖原則に沿ったソフトウェアは、既存のソースコードを変更せずに機能修正や機能追加を行うことができる。そのため、品質検査を再実行する必要がない。オブジェクト指向プログラミングには、「グローバル変数を使ってはならない」「インスタンス変数はすべてcodice_1にする」などのさまざまなノウハウや豊富なデザインパターンがあり、開放/閉鎖原則はそれらの根底にあるといわれる。開放/閉鎖原則という名前で呼ばれるものは2つある。どちらも問題の解決に継承を用いているが、その目的・テクニック・結果は異なっている。1988年に、バートランド・メイヤーが『オブジェクト指向ソフトウェアの構築(Object Oriented Software Construction)』の中で「開放/閉鎖原則」という語を生み出したと一般に称される。それは、一度完成したら、クラスの実装はエラーの修正のためだけに変更され、新機能や機能変更には別のクラスを作る必要があるというものだった。そのようなクラスは、オリジナルのクラスから継承によってコードの再利用が可能となる。派生したサブクラスは、オリジナルのクラスと同じインタフェースを持っていても持っていなくともよい。メイヤーの定義では、実装の継承が擁護されている。実装は継承によって再利用可能であるが、インタフェース仕様は必ずしもそうではない。既存の実装は修正に対して閉じており、また新しいクラスは既存のインタフェースを引き継ぐ必要はない。1990年代、開放/閉鎖原則とは、一般的に抽象インタフェースの利用を指すように意味が変わっていった。その定義では、実装はもはや固定ではなく、複数の実装が存在可能となり、互いにポリモーフィックに入れ替えることができる。メイヤーのものと対照的に、この定義ではインタフェースの継承(または仮想継承)が擁護されている。インタフェース仕様は継承によって再利用可能だが、実装は必ずしもそうではない。既存のインタフェースは修正に対して閉じており、また新しいクラスは(少なくとも)そのインタフェースを実装しなければならない。ロバート・C・マーチンの"The Open-Closed Principle" (1996) はこの立場をとる影響力の大きな論文のひとつである。2001年にはクレーグ・ラーマンが、"OCP is what David Parnas really meant by information hiding"と述べている。
出典:wikipedia
LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。