Os Princípios do SOLID — LSP -Princípio da substituição de Liskov
Links dos artigos detalhados:
- [S] Single-responsiblity principle — Princípio da responsabilidade única
- [O] Open-closed principle — Princípio aberto-fechado
- [L ] Liskov substitution principle — Princípio da substituição de Liskov
- [I] Interface segregation principle — Princípio da Segregação de interface
- [D ] Dependency Inversion Principle — Princípio da inversão de dependência
Sem duvida esse é o mais difícil de entender quando é apresentado pela primeira vez.
Simplificando, se a classe A for um subtipo da classe B , poderemos substituir B por A sem interromper o comportamento do nosso programa.Isso pode ser formulado matematicamente como
Se F(x) é uma propriedade demonstrável sobre objetos x de tipo B .
Então F(y) deve ser verdadeiro para objetos y de tipo A , em que A é um subtipo de B .
De maneira mais geral, afirma que os objetos em um programa devem ser substituíveis por instâncias de seus subtipos sem alterar a correção desse programa.
Vamos dar uma olhada em um exemplo de como violar esse princípio
Uma classe pessoaJuridica herdando de PessoaFisica violaria o LSP, pois uma pessoa jurídica não pode executar o Metodo Andar().
Porém se adicionarmos no conceito a classe Pessoa.cs
Pessoa — classe Pai, classe Base ou SuperClasse
- PessoaFisica — classe Filha ou sub-classe
- PessoaJuridica — classe Filha ou sub-classe
- A classe Pessoa é a classe genérica;
- As classes PessoaJuridica e PessoaFisica são especializações;
- PessoaFisica É uma pessoa;
- PessoaJuridica É uma pessoa;
Vamos lembrar os conceitos de herança: Quando uma classe herda de outra classe dissemos que temos a relação “É Um”.
Quando a classe PessoaJuridica ou PessoaFisica herda da classe Pessoa, ela passa a ser uma classe Pessoa estendida, pois contém todos os métodos e propriedades de Pessoa (nome e endereço) e mais as suas próprias funcionalidades (CPF ou CNPJ).
O método Andar() passou a ser uma especialização da classe PessoaFisica.
Tentei ser o mais simples possível para explicar, porém esse principio é um pouco mais complicado que os outros.
Mais artigos SOLID
Parte 4 — LSP — em breve
Parte 5 — ISP — em breve
Parte 6 — DIP — em breve