Liskov Substitution Principle
Princípio de Substituíção de Liskov, em pt-BR.
Este princípio define que:
Funções que usam ponteiros ou referências para a classe base devem ser capazes de usar objetos de classes derivadas sem conhecê-las.
Em outras palavras, se S é um subtipo de T, então os objetos do tipo T podem ser substituídos pelos objetos do tipo S sem a necessidade de qualquer alteração no código da aplicação.
Como exemplo, podemos considerar a classe Shape, que representa uma figura geométrica.
Toda classe que herdar a classe Shape, deve também implementar o método area. Caso uma subclasse não o implemente, o método da classe Shape será chamado e teremos a exceção NotImplementedError.
Seguindo com exemplo, vamos supor que tenhamos a seguinte classe, que recebe a classe Shape e suas subclasses e invoca o método area.
Podemos substituir o parâmetro shape, por qualquer objetos das subclasses de Shape, que o método calc_area irá funcionar, desde que a subclasse ao qual esse objeto pertence tenha implementado o método area.
Fontes:
https://web.archive.org/web/20150905081111/http://www.objectmentor.com/resources/articles/lsp.pdf
Last updated