software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification
This implies that such entities – classes, functions, and so on – should be created in a way that their core functionalities can be extended to other entities without altering the initial entity’s source code.