Diferencia entre revisiones de «Principio de sustitución de Liskov»
Contenido eliminado Contenido añadido
m Añadido bloque de cita en la descripcion formal de LSP |
m correcciones menores (ortografía, formato, ...) |
||
Línea 2:
y puede definirse como: Cada [[Clase (informática)|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 Principio de Sustitución de Liskov (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''.<ref>'[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.1223 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: {{cita web|url=http://reports-archive.adm.cs.cmu.edu/anon/1999/CMU-CS-99-156.ps|título=Behavioral Subtyping Using Invariants and Constraints|apellido=Liskov|nombre=Barbara|enlaceautor=Barbara Liskov|coautores=[[Jeannette Wing|Wing, Jeannette]]|fecha=July 1999|formato=[[PostScript|PS]]|fechaacceso=5 de octubre de 2006}} The formalization of the principle by its authors.</ref> 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:<blockquote>''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'''.''</blockquote>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.
Línea 7 ⟶ 8:
* Las invariantes establecidas por el supertipo deben ser mantenidas por los subtipos.
* La '''Restricción
== Referencias ==
|