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
FinOps: a ponte entre inovação tecnológica e sustentabilidade financeira nas organizações
Nos últimos anos, o FinOps tem se destacado como uma força vital na interseção entre o departamento financeiro e a TI, principalmente no que diz respeito à gestão de recursos em ambientes de nuvem. Essa solução nasceu da necessidade de alinhar os objetivos financeiros e operacionais das empresas, a fim de criar uma ponte sólida […]
Produtos Digitais
Desenvolvimento Android x iOS: 10 recomendações para o desenvolvimento produtivo
Entre agosto de 2022 e junho de 2023, o mercado de aplicativos móveis experimentou um crescimento notável, projetando um aumento anual de 13,4% até 2030, alcançando um mercado estimado em US$ 187,58 bilhões. E, certamente, a tendência é que essa expansão continue exponencialmente nos próximos anos. Portanto, agora é a hora de explorar as oportunidades […]
Produtos Digitais
Desenvolvimento Mobile ou Web: a integração de dispositivos para uma experiência omnichannel
Em 1977, Ken Olsen, fundador da DEC – Digital Equipment Corporation –, proferiu a frase “There is no reason anyone would want a computer in their home” (em tradução livre: “Não há motivo para alguém querer um computador em sua casa”). Já em 2007, a Apple confirmou que Olsen estava equivocado ao apresentar o primeiro […]
Produtos Digitais