Principi d'obert/tancat
Dins de la programació orientada a objectes, el principi d'obert/tancat o OCP (sigles de l'anglés Open/Closed Principle) establix que «una entitat de software (classe, mòdul, funció, etc.) deu quedar-se oberta per a la seua extensió, pero tancada per a la seua modificació». És dir, es deu poder estendre el comportament de tal entitat pero sense modificar la seua còdic font.[1]
La denominació obert/tancat ha segut utilisada de dos maneres: abdós es basen en la herència per a resoldre l'aparent dilema, pero els seus objectius, tècniques i resultats són diferents.
El principi d'obert/tancat de Meyer
[editar | editar còdic]
Es considera que Bertrand Meyer va ser qui va utilisar per primera volta l'expressió principi d'obert/tancat en la seua obra Object-Oriented Software Construction, de 1988.[2]
- Es diu que un mòdul està obert si es pot estendre. Per eixemple, es deurien poder afegir camps a l'estructura de senyes que conté dit mòdul o noves funcionalitats al seu comportament.
- Es diu que un mòdul queda tancat si queda utilisable per a atres mòduls. Açò implica que dit mòdul goja d'una descripció estable i ben definida (implicant al seu interfaç públic, en el sentit de protecció de l'informació).[3]
En l'época en que Meyer va escriure açò, afegir camps o funcions a una llibreria implicava, inevitablement, tindre que modificar tots els programes clients d'eixa llibreria. La solució proposta per Meyer descansava en el concepte d'herència de l'orientació a objectes (específicament herència d'implementació):
Una classe està tancada, ya que pot ser compilada, almagasenada en una llibreria i usada per atres classes de client. Pero també està oberta, ya que a partir d'ella podríem crear noves subclasses que incorporaren característiques noves. I en crear una subclasse, no hi ha cap necessitat de modificar les classes client de la superclase.[4]
Principi d'obert/tancat polimòrfic
[editar | editar còdic]Durant els anys noranta, el principi d'obert/tancat es va redefinir popularment per a referir-se a l'us d'interfaços abstractes, en les que les implementacions podien canviar, inclús podria haver múltiples implementacions i ser polimórficamente substituïdes unes per unes atres.
A diferència de l'accepció de Meyer, esta nova definició defén l'herència a partir de classes abstractes. Es poden reutilisar especificacions d'interfaç per mig d'herència pero no és necessari que existixca una implementació. L'interfaç existent queda tancada a possibles modificacions i les noves implementacions deuen implementar, com a mínim, este interfaç.
L'artícul de Robert C. Martin de 1996 «El principi d'obert/tancat»[5] va ser un dels texts primordials que seguien este enfocament. En 2001, Craig Larman va relacionar el principi d'obert/tancat en el patró de Alistair Cockburn, denominat Variacions Protegides, i en la discussió de David Parnas sobre ocultació de l'informació.[6]
Vore també
[editar | editar còdic]- SOLID Principis SOLID d'orientació a objectes.
Referències
[editar | editar còdic]- ↑ 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 [1] archivat en Wayback Machine.
- ↑ (1988) Object-oriented software construction, New York: Prentice Hall, p. 23. ISBN 0136290493.
- ↑ (1988) Object-oriented software construction, New York: Prentice Hall, p. 229. ISBN 0136290493.
- ↑ Robert C. Martin "The Open-Closed Principle", C++ Report, January 1996 [2] archivat en Wayback Machine.
- ↑ Craig Larman, "Protected Variation: The Importance of Being Closed", IEEE Software May/June 2001, pp. 89-91 [3]
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Principio de abierto/cerrado» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.