fbpx
Wikipedia

Principio de abierto/cerrado

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.

El principio de abierto/cerrado de Meyer editar

 
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 editar

Durante 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 editar

  • SOLID Principios SOLID de orientación a objetos.

Referencias editar

  1. Meyer, Bertrand (1988). Object-Oriented Software Construction. Prentice Hall. ISBN 0-13-629049-3. 
  2. Robert C. Martin "The Open-Closed Principle", C++ Report, January 1996, pp. 1 el 22 de agosto de 2006 en Wayback Machine.
  3. Meyer, Bertrand (1988). Object-oriented software construction. New York: Prentice Hall. p. 23. ISBN 0136290493. 
  4. Meyer, Bertrand (1988). Object-oriented software construction. New York: Prentice Hall. p. 229. ISBN 0136290493. 
  5. Robert C. Martin "The Open-Closed Principle", C++ Report, January 1996 el 22 de agosto de 2006 en Wayback Machine.
  6. Craig Larman, "Protected Variation: The Importance of Being Closed", IEEE Software May/June 2001, pp. 89-91 [1]
  •   Datos: Q210251

principio, abierto, cerrado, dentro, programación, orientada, objetos, principio, abierto, cerrado, siglas, inglés, open, closed, principle, establece, entidad, software, clase, módulo, función, debe, quedarse, abierta, para, extensión, pero, cerrada, para, mo. Dentro de la programacion orientada a objetos el principio de abierto cerrado u OCP siglas del ingles Open Closed Principle establece que una entidad de software clase modulo funcion etc debe quedarse abierta para su extension pero cerrada para su modificacion Es decir se debe poder extender el comportamiento de tal entidad pero sin modificar su codigo fuente 1 La denominacion abierto cerrado ha sido utilizada de dos maneras ambas se basan en la herencia para resolver el aparente dilema pero sus objetivos tecnicas y resultados son diferentes Indice 1 El principio de abierto cerrado de Meyer 2 Principio de abierto cerrado polimorfico 3 Vease tambien 4 ReferenciasEl principio de abierto cerrado de Meyer editar nbsp Bertrand MeyerSe considera que Bertrand Meyer fue quien utilizo por primera vez la expresion principio de abierto cerrado en su obra Object Oriented Software Construction de 1988 2 Se dice que un modulo esta abierto si se puede extender Por ejemplo se deberian poder anadir campos a la estructura de datos que contiene dicho modulo o nuevas funcionalidades a su comportamiento Se dice que un modulo queda cerrado si queda utilizable para otros modulos Esto implica que dicho modulo goza de una descripcion estable y bien definida implicando a su interfaz publica en el sentido de proteccion de la informacion 3 En la epoca en que Meyer escribio esto anadir campos o funciones a una libreria implicaba inevitablemente tener que modificar todos los programas clientes de esa libreria La solucion propuesta por Meyer descansaba en el concepto de herencia de la orientacion a objetos especificamente herencia de implementacion Una clase esta cerrada dado que puede ser compilada almacenada en una libreria y usada por otras clases de cliente Pero tambien esta abierta dado que a partir de ella podriamos crear nuevas subclases que incorporaran caracteristicas nuevas Y al crear una subclase no hay ninguna necesidad de modificar las clases cliente de la superclase 4 Principio de abierto cerrado polimorfico editarDurante los anos noventa el principio de abierto cerrado se redefinio popularmente para referirse al uso de interfaces abstractas en las que las implementaciones podian cambiar incluso podria haber multiples implementaciones y ser polimorficamente sustituidas unas por otras A diferencia de la acepcion de Meyer esta nueva definicion defiende la herencia a partir de clases abstractas Se pueden reutilizar especificaciones de interfaz mediante herencia pero no es necesario que exista una implementacion La interfaz existente queda cerrada a posibles modificaciones y las nuevas implementaciones deben implementar como minimo esta interfaz El articulo de Robert C Martin de 1996 El principio de abierto cerrado 5 fue uno de los textos primordiales que seguian este enfoque En 2001 Craig Larman relaciono el principio de abierto cerrado con el patron de Alistair Cockburn denominado Variaciones Protegidas y con la discusion de David Parnas sobre ocultacion de la informacion 6 Vease tambien editarSOLID Principios SOLID de orientacion a objetos Referencias editar Meyer Bertrand 1988 Object Oriented Software Construction Prentice Hall ISBN 0 13 629049 3 Robert C Martin The Open Closed Principle C Report January 1996 pp 1 Archivado el 22 de agosto de 2006 en Wayback Machine Meyer Bertrand 1988 Object oriented software construction New York Prentice Hall p 23 ISBN 0136290493 Meyer Bertrand 1988 Object oriented software construction New York Prentice Hall p 229 ISBN 0136290493 Robert C Martin The Open Closed Principle C Report January 1996 Archivado el 22 de agosto de 2006 en Wayback Machine Craig Larman Protected Variation The Importance of Being Closed IEEE Software May June 2001 pp 89 91 1 nbsp Datos Q210251 Obtenido de https es wikipedia org w index php title Principio de abierto cerrado amp oldid 154049132, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos