Из книги «Agile Prniciples, Patterns and Practices», OCP постулируется как:
Модули, соответствующие OCP, имеют два основных атрибута.
Они открыты для расширения. Это означает, что поведение модуля может быть расширено. Как
требования приложения меняются, мы можем расширить модуль с новыми поведениями, которые
удовлетворить эти изменения. Другими словами, мы можем изменить то, что делает модуль.
Они закрыты для модификации. Расширение поведения модуля не приводит к изменению исходного или двоичного кода модуля. Двоичная исполняемая версия
Модуль в связываемой библиотеке, DLL или .EXE-файле остается нетронутым.
Если мы расширим модуль, нам не нужно будет добавлять в него новый класс, и, следовательно, его двоичный файл также изменится при перестройке модуля.