stringtranslate.com

Principio abierto-cerrado

Retrato de Bertrand Meyer
El principio de 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 de principio abierto-cerrado se ha utilizado de dos maneras. En ambas se utilizan generalizaciones (por ejemplo, herencia o funciones delegadas) para resolver el aparente dilema, pero los objetivos, las técnicas y los resultados son diferentes.

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

Principio de apertura y cierre de Meyer

A Bertrand Meyer se le atribuye generalmente la creación del término principio abierto-cerrado , [2] que apareció en su libro de 1988 Object-Oriented Software Construction . [1] : 23 

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

Una clase es cerrada, ya que puede ser compilada, almacenada en una biblioteca, basada en una línea base y utilizada por clases cliente. Pero también es abierta, ya que cualquier clase nueva puede utilizarla como clase padre, agregando nuevas características. Cuando se define una clase descendiente, no hay necesidad de cambiar la original ni de 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í.

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

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

Véase también

Referencias

  1. ^ abc Meyer, Bertrand (1988). Construcción de software orientado a objetos . Prentice Hall. ISBN 0-13-629049-3.
  2. ^ de Robert C. Martin "El principio abierto-cerrado", C++ Report, 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) . IEEE Software . 18 (2). IEEE: 89–91. doi :10.1109/52.922731.

Enlaces externos