fbpx
Wikipedia

Principio de sustitución de Liskov

Principio de sustitución de Liskov o LSP (Liskov Substitution Principle) es un principio de la programación orientada a objetos. y puede definirse como: Cada clase que hereda de otra puede usarse como su padre sin necesidad de conocer las diferencias entre ellas.

En lenguaje más formal: si S es un subtipo de T, entonces los objetos de tipo T en un programa de computadora pueden ser sustituidos por objetos de tipo S (es decir, los objetos de tipo S pueden sustituir objetos de tipo T), sin alterar ninguna de las propiedades deseables de ese programa (la corrección, la tarea que realiza, etc.). Más formalmente, el LSP es una definición particular de una relación de subtipificación, llamada tipificación (fuerte) del comportamiento, que fue introducido inicialmente por Barbara Liskov en una conferencia magistral en 1987 titulada La Abstracción de Datos y Jerarquía.[1]​ Se refiere más a una relación semántica que a una relación sintáctica, ya que sólo tiene la intención de garantizar la interoperabilidad semántica de tipos en una jerarquía, los tipos de objeto en particular. Liskov y Jeannette Wing formularon el principio de manera conjunta en un artículo en el año 1994 de la siguiente manera:

Sea ϕ(x) una propiedad comprobable acerca de los objetos x de tipo T. Entonces ϕ(y) debe ser verdad para los objetos y del tipo S, donde S es un subtipo de T.

En el mismo artículo, Liskov y Wing detallan que su concepto de comportamiento de subtipos es una extensión de la lógica de Hoare, que tiene una cierta semejanza con el diseño por contrato de Bertrand Meyer, ya que considera la interacción de subtipos con precondiciones, postcondiciones e invariantes:

  • Las precondiciones no pueden ser reforzadas por un subtipo.
  • Las postcondiciones no pueden ser debilitadas por un subtipo.
  • Las invariantes establecidas por el supertipo deben ser mantenidas por los subtipos.
  • La Restricción histórica (O Regla histórica). Se acepta normalmente que los objetos deben ser modificados únicamente a través de sus métodos (Encapsulamiento). Como los subtipos pueden introducir nuevos métodos, ausentes en el supertipo, estos podrían cambiar el estado interno del objeto en formas que serían imposibles o inadmisibles en el supertipo. La restricción histórica impide este tipo de modificaciones. Este fue el elemento novedoso introducido por Liskov y Wing. Se puede ejemplificar una violación de este principio definiendo un subtipo PuntoMutable como descendiente de un supertipo PuntoInmutable. Esto resulta en una violación del principio histórico, porque en la historia de un objeto de tipo PuntoInmutable, el estado es siempre el mismo desde su creación, por lo que no puede incluir la historia de un PuntoMutable. Sin embargo, campos extra añadidos en un subtipo podrían ser modificables sin problema, porque estos campos no son observables desde los métodos del supertipo. Así que se podría, por ejemplo, derivar un tipo Círculo con un centro fijo pero un radio variable a partir de un tipo PuntoInmutable sin violar LSP.

Referencias

  1. '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: Liskov, Barbara; Wing, Jeannette (July 1999). «Behavioral Subtyping Using Invariants and Constraints» (PS). Consultado el 5 de octubre de 2006.  The formalization of the principle by its authors.

Bibliografía

  • 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: Liskov, Barbara; Wing, Jeannette (July 1999). «Behavioral Subtyping Using Invariants and Constraints» (PS). Consultado el 5 de 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 Interfaces, Pula, 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.

Enlaces externos

  • Liskov Substitution Principle (Design by Contract) in OO Primer, Arnon Rotem-Gal-Oz, August 24, 2006
  • , T. S. Norvell, 2003
  • El principio de substitución de Liskov en C#, A. Jesus Flores, 2016
  •   Datos: Q957386

principio, sustitución, liskov, liskov, substitution, principle, principio, programación, orientada, objetos, puede, definirse, como, cada, clase, hereda, otra, puede, usarse, como, padre, necesidad, conocer, diferencias, entre, ellas, lenguaje, más, formal, s. Principio de sustitucion de Liskov o LSP Liskov Substitution Principle es un principio de la programacion orientada a objetos y puede definirse como Cada clase que hereda de otra puede usarse como su padre sin necesidad de conocer las diferencias entre ellas En lenguaje mas formal si S es un subtipo de T entonces los objetos de tipo T en un programa de computadora pueden ser sustituidos por objetos de tipo S es decir los objetos de tipo S pueden sustituir objetos de tipo T sin alterar ninguna de las propiedades deseables de ese programa la correccion la tarea que realiza etc Mas formalmente el LSP es una definicion particular de una relacion de subtipificacion llamada tipificacion fuerte del comportamiento que fue introducido inicialmente por Barbara Liskov en una conferencia magistral en 1987 titulada La Abstraccion de Datos y Jerarquia 1 Se refiere mas a una relacion semantica que a una relacion sintactica ya que solo tiene la intencion de garantizar la interoperabilidad semantica de tipos en una jerarquia los tipos de objeto en particular Liskov y Jeannette Wing formularon el principio de manera conjunta en un articulo en el ano 1994 de la siguiente manera Sea ϕ x una propiedad comprobable acerca de los objetos x de tipo T Entonces ϕ y debe ser verdad para los objetos y del tipo S donde S es un subtipo de T En el mismo articulo Liskov y Wing detallan que su concepto de comportamiento de subtipos es una extension de la logica de Hoare que tiene una cierta semejanza con el diseno por contrato de Bertrand Meyer ya que considera la interaccion de subtipos con precondiciones postcondiciones e invariantes Las precondiciones no pueden ser reforzadas por un subtipo Las postcondiciones no pueden ser debilitadas por un subtipo Las invariantes establecidas por el supertipo deben ser mantenidas por los subtipos La Restriccion historica O Regla historica Se acepta normalmente que los objetos deben ser modificados unicamente a traves de sus metodos Encapsulamiento Como los subtipos pueden introducir nuevos metodos ausentes en el supertipo estos podrian cambiar el estado interno del objeto en formas que serian imposibles o inadmisibles en el supertipo La restriccion historica impide este tipo de modificaciones Este fue el elemento novedoso introducido por Liskov y Wing Se puede ejemplificar una violacion de este principio definiendo un subtipo PuntoMutable como descendiente de un supertipo PuntoInmutable Esto resulta en una violacion del principio historico porque en la historia de un objeto de tipo PuntoInmutable el estado es siempre el mismo desde su creacion por lo que no puede incluir la historia de un PuntoMutable Sin embargo campos extra anadidos en un subtipo podrian ser modificables sin problema porque estos campos no son observables desde los metodos del supertipo Asi que se podria por ejemplo derivar un tipo Circulo con un centro fijo pero un radio variable a partir de un tipo PuntoInmutable sin violar LSP Referencias Editar 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 Liskov Barbara Wing Jeannette July 1999 Behavioral Subtyping Using Invariants and Constraints PS Consultado el 5 de octubre de 2006 La referencia utiliza el parametro obsoleto coautores ayuda The formalization of the principle by its authors Bibliografia EditarGary 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 Liskov Barbara Wing Jeannette July 1999 Behavioral Subtyping Using Invariants and Constraints PS Consultado el 5 de octubre de 2006 La referencia utiliza el parametro obsoleto coautores ayuda The formalization of the principle by its authors Reinhold Plosch 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 Interfaces Pula 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 Enlaces externos EditarLiskov Substitution Principle Design by Contract in OO Primer Arnon Rotem Gal Oz August 24 2006 The Liskov Substitution Principle T S Norvell 2003 El principio de substitucion de Liskov en C A Jesus Flores 2016 Datos Q957386Obtenido de https es wikipedia org w index php title Principio de sustitucion de Liskov amp oldid 134122800, 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