Principio de abierto/cerrado

From Wikipedia, the free encyclopedia

Dentro de la programación orientada a objetos, el principio de abierto/cerrado u OCP (siglas del inglés Open/Closed Principle) establece que «una entidad de software (clase, módulo, función, etc.) debe quedarse abierta para su extensión, pero cerrada para su modificación». Es decir, se debe poder extender el comportamiento de tal entidad pero sin modificar su código fuente.[1]

La denominación abierto/cerrado ha sido utilizada de dos maneras: ambas se basan en la herencia para resolver el aparente dilema, pero sus objetivos, técnicas y resultados son diferentes.

Bertrand Meyer

Se considera que Bertrand Meyer fue quien utilizó por primera vez la expresión principio de abierto/cerrado en su obra Object-Oriented Software Construction, de 1988.[2]

  • Se dice que un módulo está abierto si se puede extender. Por ejemplo, se deberían poder añadir campos a la estructura de datos que contiene dicho módulo o nuevas funcionalidades a su comportamiento.
  • Se dice que un módulo queda cerrado si queda utilizable para otros módulos. Esto implica que dicho módulo goza de una descripción estable y bien definida (implicando a su interfaz pública, en el sentido de protección de la información).[3]

En la época en que Meyer escribió esto, añadir campos o funciones a una librería implicaba, inevitablemente, tener que modificar todos los programas clientes de esa librería. La solución propuesta por Meyer descansaba en el concepto de herencia de la orientación a objetos (específicamente herencia de implementación):

Una clase está cerrada, dado que puede ser compilada, almacenada en una librería y usada por otras clases de cliente. Pero también está abierta, dado que a partir de ella podríamos crear nuevas subclases que incorporaran características nuevas. Y al crear una subclase, no hay ninguna necesidad de modificar las clases cliente de la superclase.[4]

Principio de abierto/cerrado polimórfico

Véase también

Referencias

Related Articles

Wikiwand AI