INGENIERA EN SISTEMAS INFORMTICOS Y DE COMPUTACIN6
PERODO ACADMICO: 2016_B
ASIGNATURA: APLICACIONES EN AMBEINTES PROPIETARIOS GR2 PROFESOR: ING. PAMELA FLORES TIPO DE INSTRUMENTO: RESUMEN TTULO: PRINCIPIO DE SUSTITUCIO DE LISKOV FECHA DE ENTREGA: 12/12/2016 NOMBRE: OSCAR SAMBACHE
Enunciado del principio de sustitucin de Liskov
Barbara Liskov Establece un principio en el que define una relacin tipo/subtipo basada en el comportamiento, de forma que un tipo se considera subtipo de otro cuando cualquier instancia del primer tipo puede aparecer en cualquier lugar donde se espera una instancia del segundo. El enunciado de este principio es el siguiente: Si para cada objeto o1 de tipo S hay un objeto o2 de tipo T tal que para todos los programas P definidos en trminos de T, el comportamiento de P no cambia cuando o1 es sustituido por o2, entonces S es un subtipo de T [2]. El enunciado de este principio puede parecer un tanto abstracto, por lo que vamos a plantearlo desde un punto de vista ms cercano a la programacin orientada a objeto1 , con el fin de aclarar su significado. As, este principio puede enunciarse como Las funciones que usan punteros o referencias a clases base deben ser capaces de utilizar objetos de las clases derivadas sin tener conocimiento de ello, o lo que es lo mismo Las clases derivadas deben ser utilizables a travs de la interfaz de la clase base, sin necesidad de que el usuario conozca la diferencia. La violacin de este principio pone de manifiesto la importancia del mismo. Supngase una funcin que utiliza un puntero a una clase base, pero que no cumple el principio de Liskov, entonces esta funcin debe conocer de forma explcita todas las clases derivadas de dicha clase base. Por tanto, esta funcin violara el principio abierto/cerrado porque tendra que ser modificada cada vez que se tenga que crear una nueva clase derivada de la clase base.
Ejemplo que NO cumple con el principio
Bsicamente, LSP afirma que si tenemos dos objetos de tipos diferentes
Coche y Ciclomotor que derivan de una misma clase base Vehculo, deberamos poder reemplazar cada uno de los tipos Coche/Ciclomotor y viceversa all dnde el tipo base Vehculo est implementado. En el ejemplo anterior tenemos un claro caso de violacin del LSP, ya que la ejecucin del mtodo CalcularImpuesto generar una excepcin de conversin de tipo si el objeto pasado por parmetro es de tipo Ciclomotor en lugar de Coche, pese a que ambas clases derivan de la misma clase base Vehculo.
Ejemplo que SI cumple el principio
Vamos a ver en este ejemplo el diseo de una calculadora siguiendo el principio LSP: LSP es bsicamente una extensin del principio abierto-cerrado. Lo que nos dice es que si tenemos una clase y varias subclases de esta al usar una referencia a la clase principal esta debe ser capaz de aceptar cualquier objeto de sus clases hijas.
CAPTUAS DE PANTALLA Men para ejecutar cualquier opcin para la gestin de estudiantes.