stringtranslate.com

Principio abierto-cerrado

Retrato de Bertrand Meyer
El principio abierto-cerrado fue introducido por Bertrand Meyer .

En la programación orientada a objetos , el principio abierto-cerrado (OCP) establece que " las entidades de software (clases, módulos, funciones, etc.) deben estar abiertas a la extensión, pero cerradas a la modificación "; [1] es decir, dicha entidad puede permitir que su comportamiento se extienda sin modificar su código fuente .

El nombre principio abierto-cerrado se ha utilizado de dos maneras. Ambas formas utilizan generalizaciones (por ejemplo, herencia o funciones delegadas) para resolver el aparente dilema, pero los objetivos, técnicas y resultados son diferentes.

El principio abierto-cerrado es uno de los cinco principios SÓLIDOS del diseño orientado a objetos.

Principio abierto-cerrado de Meyer

A Bertrand Meyer se le atribuye generalmente el mérito de haber originado el término principio abierto-cerrado , [2] que apareció en su libro de 1988 Construcción de software orientada a objetos . [1] : 23 

En el momento en que Meyer estaba escribiendo, agregar campos o funciones a una biblioteca inevitablemente requería cambios en cualquier programa que dependiera de esa biblioteca. [ cita necesaria ] La solución propuesta por Meyer a este problema se basó en la noción de herencia orientada a objetos (específicamente herencia de implementación ): [1] : 229 

Una clase está cerrada, ya que puede ser compilada, almacenada en una biblioteca, baselineada y utilizada por clases cliente. Pero también es abierto, ya que cualquier clase nueva puede usarlo como padre, agregando nuevas características. Cuando se define una clase descendiente, no es necesario cambiar la original ni molestar a sus clientes.

Principio polimórfico abierto-cerrado

Durante la década de 1990, el principio abierto-cerrado se redefinió popularmente para referirse al uso de interfaces abstractas , donde las implementaciones se pueden cambiar y se pueden crear múltiples implementaciones y sustituirlas polimórficamente entre sí.

En contraste con el uso de Meyer, esta definición aboga por la herencia de clases base abstractas . Las especificaciones de interfaz se pueden reutilizar mediante herencia, pero no es necesario que la implementación lo sea. La interfaz existente está cerrada a modificaciones y las nuevas implementaciones deben, como mínimo, implementar esa interfaz.

El artículo de Robert C. Martin de 1996 "El principio abierto-cerrado" [2] fue uno de los escritos fundamentales en adoptar este enfoque. En 2001, Craig Larman relacionó el principio abierto-cerrado con el patrón de Alistair Cockburn llamado Variaciones protegidas , y con la discusión de David Parnas sobre el ocultamiento de información . [3]

Ver también

Referencias

  1. ^ abc Meyer, Bertrand (1988). Construcción de software orientado a objetos . Prentice Hall. ISBN 0-13-629049-3.
  2. ^ ab Robert C. Martin "El principio abierto-cerrado", Informe C++, enero de 1996 Archivado el 22 de agosto de 2006 en Wayback Machine .
  3. ^ Larman, Craig (mayo-junio de 2001). "Variación protegida: la importancia de estar cerrado" (PDF) . Software IEEE . 18 (2). IEEE: 89–91. doi : 10.1109/52.922731.

enlaces externos