Haciendo del Desarrollo y la Arquitectura Web, ciencia y pasión.

Liskov Substitution Principle, LSP

El tercero de los puntos de SOLID es el principio de sustitucion de Liskov. Fue desarrollado por Barvara Liskov y Jeannette Marie Wing en la decada de los noventa. En su definición más formal tenemos que: 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.).

Esto traducido al ámbito de la orientación a objetos, nos dice que si a un método M le podemos pasar objetos t1 de la clase T, el método hace correctamente su función. Entonces si tenemos que La clase S hereda de T e instanciamos un objeto s1 de la clase S, entonces podríamos pasarle este objeto s1 al metodo M y todo funcionará sin ningun problema.

En el mundo de la orientacion a objetos el concepto de herencia o extension se puede traducir al lenguaje hablado como: "ES UN". Cuando decimos X es un Y, entonces podemos aplicar herencia entre nuestras dos entidades:


    class Felino
    {
        public function comer()
        {
            echo "soy un depredador";
        }
     
    }
     
    class Gato extends Felino
    {
     
    }
     
    class Leon extends Felino
    {
     
    }
     
    $f1 = new Leon();
    $f1->comer();

    class Mamifero{
	function __construct (Felino $felino){
	}
    }
 
    $l1 = new Leon();
    $m1 = new Mamifero ($l1);  // podemos pasar a la clase mamifero un objeto de tipo Leon