Princípios SOLID: O Princípio da Substituição de Liskov
O princípio da Substituição de Liskov leva o nome da sua criadora Barbara Liskov, que introduziu o conceito deste princípio em uma conferência em 1987 e posteriormente, em 1994 no artigo Family Values: A Behavioral Notion of Subtyping com a parceria de Jeannette Wing. Podemos dizer que sua definição original de forma resumida é a seguinte:
Seja q(x) uma propriedade que se pode provar do objeto x do tipo T. Então, q(y) também é possível provar para o objeto y do tipo S, sendo S um subtipo de T.
Sumário
O que isso quer dizer afinal?
Significa dizer que classes derivadas devem poder substituídas por suas classes base e que classes base podem ser substituídas por qualquer uma das suas subclasses. Uma subclasse deve sobrescrever os métodos da superclasse de forma que a funcionalidade do ponto de vista do cliente continue a mesma.
Imaginemos o seguinte exemplo:
Dada a classe abstrata Veiculo:
E suas subclasses Carro e Metro:
Uma classe cliente deve ser capaz de usar qualquer uma das duas implementações, desde que a classe cliente seja capaz de usar a classe Veiculo.
Violando o LSP – Quadrado é um retângulo
Imaginemos as formas geométricas Quadrado e Retângulo, conceitualmente falando um quadrado é um retângulo com lados do mesmo tamanho. Portanto é lógico e intuitivo modelar uma classe Quadrado como sendo derivada da classe Retângulo.
Dessa forma temos Retangulo como a classe base,
e Quadrado como a classe derivada.
A classe cliente entende que r é um retângulo e assume que ele pode definir largura e altura como na classe base Retangulo. Ao executarmos o código o resultado será 100 e não 50 como esperado, isso porque ao sobrescrever os métodos setLargura e setAltura alteramos a funcionalidade para adequarmos à um quadrado.
Conclusão
O princípio da substituição de Liskov nos mostra que devemos tomar cuidado ao fazer uso da herança, devemos verificar se o polimorfismo faz mesmo sentindo, ou seja, se qualquer subclasse pode ser utilizada no lugar da superclasse. Caso não, significa dizer que a herança está sendo utilizada de forma inadequada.
Quer saber mais sobre os princípios SOLID? Clique aqui para saber mais sobre os princípios da responsabilidade única e o princípio aberto/fechado.
Por: Marcos Felipe
Produtos Digitais
Confira outros artigos
Produtos digitais: entregas contínuas com IA
Nas últimas semanas, lançamos uma série de artigos sobre o uso de inteligência artificial no processo de construção de produtos digitais. Neles, apresentamos alguns aceleradores que a dti tem utilizado para potencializar a eficiência dos times. Abordamos a fase de concepção do produto, as atividades de gestão e design, o desenvolvimento do software e a […]
Produtos Digitais
Inteligência Artificial: acelerando o design e gestão de produtos digitais
Como aproveitar o melhor da Inteligência Artificial Generativa para gerar mais valor? Essa tem sido uma pergunta recorrente no mercado conforme as empresas buscam entender e adotar a tecnologia. Embora existam muitas dúvidas e hipóteses não comprovadas, parece ser consenso que os avanços na Inteligência Artificial impactarão significativamente muitas profissões. No relatório The economic potencial […]
Produtos Digitais
IA Generativa: acelerando a concepção de produtos digitais
Como as empresas podem responder às crescentes demandas por produtividade e eficiência em um mundo digital em constante mudança? O período pandêmico acelerou a digitalização de várias empresas e agora o desafio é outro. Entramos em uma era de incertezas, na qual não há mais espaço para desperdícios ou prolongados ciclos de entrega de software. […]
Produtos Digitais