Principio de abierto/cerradoDentro 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. El principio de abierto/cerrado de MeyerSe 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]
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):
Principio de abierto/cerrado polimórficoDurante los años noventa, el principio de abierto/cerrado se redefinió popularmente para referirse al uso de interfaces abstractas, en las que las implementaciones podían cambiar, incluso podría haber múltiples implementaciones y ser polimórficamente sustituidas unas por otras. A diferencia de la acepción de Meyer, esta nueva definición defiende la herencia a partir de clases abstractas. Se pueden reutilizar especificaciones de interfaz mediante herencia pero no es necesario que exista una implementación. La interfaz existente queda cerrada a posibles modificaciones y las nuevas implementaciones deben implementar, como mínimo, esta interfaz. El artículo de Robert C. Martin de 1996 «El principio de abierto/cerrado»[5] fue uno de los textos primordiales que seguían este enfoque. En 2001, Craig Larman relacionó el principio de abierto/cerrado con el patrón de Alistair Cockburn, denominado Variaciones Protegidas, y con la discusión de David Parnas sobre ocultación de la información.[6] Véase también
Referencias
|
Portal di Ensiklopedia Dunia