A principle used in OOPL which states
that a class must be open and closed where open means it has
the ability to be extended and closed means it cannot be
modified other than by extension.
The idea is that once a class has been approved for use having
gone through code reviews, unit tests, and other qualifying
procedures, you don't want to change the class very much, just
extend it. In practice the open/closed principle simply means
making good use of abstraction and polymorphism.