0

Os Princípios SOLID: L(Liskov Substitution Principle) Princípio da substituição de Liskov (Parte 4)

Ricardo Wobeto
Ricardo Wobeto

Olá, tudo bem? Hoje vamos falar sobre o "L" do acrônimo do SOLID.


O princípio da substituição de Liskov(Liskov Substitution Principle) foi introduzido por Barbara Liskov em sua conferência “Data Abstraction” em 1987. A definição formal de Liskov diz que:

Se para cada objeto o1 do tipo S há um objeto o2 do tipo T de forma que, para todos os programas P definidos em termos de T, o comportamento de P é inalterado quando o1 é substituído por o2 então S é um subtipo de T.


😨Complexo néh? Vamos tentar novamente: Um exemplo mais simples e de fácil compreensão dessa definição. Seria:

se S é um subtipo de T, então os objetos do tipo T, em um programa, podem ser substituídos pelos objetos de tipo S sem que seja necessário alterar as propriedades deste programa. — Wikipedia.


Quando uma classe filha não pode executar as mesmas ações que sua classe pai, isso pode causar bugs.

Se você tiver uma classe e criar outra classe a partir dela, ela se tornará um pai e a nova classe se tornará um filho. A classe filha deve ser capaz de fazer tudo que a classe pai pode fizer. Este processo é denominado Herança.

A classe filha deve ser capaz de processar as mesmas solicitações e entregar o mesmo resultado que a classe pai ou pode entregar um resultado do mesmo tipo.

A imagem mostra que a classe pai entrega café (pode ser qualquer tipo de café). É aceitável que a classe filha entregue Cappucino porque é um tipo específico de Café, mas NÃO é aceitável entregar Água.

Se a classe filha não atender a esses requisitos, significa que a classe filha foi completamente alterada e viola este princípio.

Meta

Este princípio visa reforçar a consistência para que a classe pai ou sua classe filha possam ser usadas da mesma maneira sem erros.

Exemplos de violação do LSP:

  • Sobrescrever/implementar um método que não faz nada;
  • Lançar uma exceção inesperada;
  • Retornar valores de tipos diferentes da classe base;

O desafio aqui é não violar o Liskov Substitution Principle, para isso, além de estruturar muito bem as suas abstrações, em alguns casos, você precisara usar a injeção de dependência e também usar outros princípios do SOLID, como por exemplo, o Open-Closed Principle e o Interface Segregation Principle (abordaremos este princípio no próximo tópico)

Seguir o LSP nos permite usar o polimorfismo com mais confiança. Podemos chamar nossas classes derivadas referindo-se à sua classe base sem preocupações com resultados inesperados.

Se você tem interesse nesse assunto, recomendo a leitura do livro: Código Limpo de Robert C. Martin, ele irá te ajudar bastante nesta compreensão.


Um abraço e até a parte 5 do nosso estudo SOLID!

Ricardo Wobeto


* Todas as ilustrações neste artigo são de Ugonna Thelma


0
0

Comentários (1)

1
Gabriel Ferreira

Gabriel Ferreira

06/09/2021 19:47

Muito massa, Ricardo! Uma série de artigos que, ao mesmo tempo em que é direto ao ponto, é bem detalhado, já que você separa cada sigla dos princípios por artigo (Até nisso está usando o princípio de Abstração da POO kkkk).


Esse princípio SOLID foi mostrado na mentoria da Carla Frascareli, com o exemplo prático de uma Conta Bancária, que é a classe pai de outras duas classes, Conta Corrente e Conta Poupança, que utilizam do Polimorfismo para modificar e sobrescrever o comportamento do construtor e dos métodos, respectivamente, sendo que uma cobra pelo uso da conta, e a outra rende.


Muito bom para reforçar o conhecimento. Obrigado por dedicar do seu tempo para nos agregar conhecimento!

Em processo de aprendizagem... (em transição de carreira)

Brasil