Principi de substitució de Liskov
Principi de substitució de Liskov o LSP (Liskov Substitution Principle) és un principi de la programació orientada a objectes. i pot definir-se com: Cada classe que hereta d'una atra pot usar-se com el seu pare sense necessitat de conéixer les diferències entre elles.
Definició
[editar | editar còdic]En llenguage més formal: si S és un subtipo de T, llavors els objectes de tipo T en un programa de computadora poden ser substituïts per objectes de tipo S (és dir, els objectes de tipo S poden substituir objectes de tipo T), sense alterar cap de les propietats desijables d'eixe programa (la correcció, la tasca que realisa, etc.). Més formalment, el LSP (Liskov Substitution Principle) és una definició particular d'una relació de subtipificación, cridada tipificación (forta) del comportament, que va ser introduït inicialment per Barbara Liskov en una conferència magistral en 1987 titulada L'Abstracció de Senyes i Jerarquia.[1] Es referix més a una relació semàntica que a una relació sintàctica, ya que només té l'intenció de garantisar la interoperabilidad semàntica de tipos en una jerarquia, els tipos d'objecte en particular. Liskov i Jeannette Wing varen formular el principi de manera conjunta en un artícul en l'any 1994 de la següent manera:
Siga ϕ(x) una propietat comprobable sobre els objectes x de tipo T. Llavors ϕ(i) deu ser veritat per als objectes i del tipo S, a on S és un subtipo de T.
Precondiciones, postcondiciones i invariantes
[editar | editar còdic]En el mateix artícul, Liskov i Wing detallen que el seu concepte de comportament de subtipos és una extensió de la llògica de Hoare, que té una certa semblança en el disseny per contracte de Bertrand Meyer, ya que considera l'interacció de subtipos en precondiciones, postcondiciones i invariantes:
- Les precondiciones no poden ser reforçades per un subtipo.
- Les postcondiciones no poden ser debilitades per un subtipo.
- Les invariantes establides pel supertipo deuen ser mantingudes pels subtipos.
- La Restricció històrica (O Regla històrica). S'accepta normalment que els objectes deuen ser modificats únicament a través dels seus métodos (Encapsulamiento). Com els subtipos poden introduir nous métodos, absents en el supertipo, estos podrien canviar l'estat intern de l'objecte en formes que serien impossibles o inadmissibles en el supertipo. La restricció històrica impedix este tipo de modificacions. Est va ser l'element nou introduït per Liskov i Wing. Es pot ejemplificar una violació d'este principi definint un subtipo PuntoMutable com a descendent d'un supertipo PuntoInmutable. Açò resulta en una violació del principi històric, perque en l'història d'un objecte de tipo PuntoInmutable, l'estat és sempre el mateix des de la seua creació, per lo que no pot incloure l'història d'un PuntoMutable. No obstant, camps extra afegitons en un subtipo podrien ser modificables sense problema, perque estos camps no són observables des dels métodos del supertipo. Aixina que es podria, per eixemple, derivar un tipo Círcul en un centre fix pero un radi variable a partir d'un tipo PuntoInmutable sense violar LSP.
Referències
[editar | editar còdic]- ↑ 'A behavioral notion of subtyping, ACM Transactions on Programming Languages and Systems (TOPLAS), Volume 16, Issue 6 (November 1994), pp. 1811 - 1841. An updated version appeared as CMU technical report: «Behavioral Subtyping Using Invariants and Constraints» (PS). Consultat el 5 d'octubre de 2006. The formalization of the principle by its authors.
Bibliografia
[editar | editar còdic]- Gary T. Leavens and Krishna K. Dhara, Concepts of Behavioral Subtyping and a Sketch of Their Extension to Component-Bases Systems in Gary T. Leavens, Murali Sitaraman, (ed.) Foundations of component-based systems, Cambridge University Press, 2000 ISBN 0-521-77164-1. This paper surveys various notions of behavioral subtyping, including Liskov and Wing's.
- Barbara Liskov, Jeannette Wing, A behavioral notion of subtyping, ACM Transactions on Programming Languages and Systems (TOPLAS), Volume 16, Issue 6 (November 1994), pp. 1811 – 1841. An updated version appeared as CMU technical report: «Behavioral Subtyping Using Invariants and Constraints» (PS). Consultat el 5 d'octubre de 2006. The formalization of the principle by its authors.
- Reinhold Plösch, Contracts, scenarios and prototypes: an integrated approach to high quality software, Springer, 2004, ISBN 3-540-43486-0. Contains a gentler introduction to behavioral subtyping in its various forms in chapter 2.
- Robert C. Martin, The Liskov Substitution Principle, C++ Report, March 1996. An article popular in the object-oriented programming community that gives several examples of LSP violations.
- Kazimir Majorinc, Ellipse-Circle Dilemma and Inverse Inheritance, ITI 98, Proceedings of the 20th International Conference of Information Technology Interfaços, Polixca, 1998, ISSN 1330-1012. This paper discusses LSP in the mentioned context.
- Ashley McNeile, A framework for the semantics of behavioral contracts. Proceedings of the Second International Workshop on Behaviour Modelling: Foundation and Applications (BM-FA '10). ACM, New York, NY, USA, 2010. This paper discusses generalized notions of Contract and Substitutability.
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Principio de sustitución de Liskov» 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.