A analista Ana está implementando um sistema seguindo os princípios SOLID. No módulo A do sistema, Ana aplicou o princípio SOLID que estabelece o seguinte: se uma propriedade q(x) for demonstrável para todos os objetos x do tipo T, então ela também deve ser demonstrável para todos os objetos y do tipo S, onde S é um subtipo de T. O princípio aplicado por Ana no módulo A está diretamente relacionado à seguinte letra do acrônimo SOLID:
- A)S;
Errada, porque S representa Single Responsibility Principle, ligado a uma única responsabilidade por classe.
- B)O;
Errada, porque O representa Open/Closed Principle, que fala em abrir para extensão e fechar para modificação.
- C)L;
Certa, porque a descrição corresponde ao Princípio da Substituição de Liskov.
- D)I;
Errada, porque I representa Interface Segregation Principle, que evita interfaces gordas e obriga dependências menores.
- E)D.
Errada, porque D representa Dependency Inversion Principle, sobre depender de abstrações e não de concreções.
Gabarito: C
A frase do enunciado descreve a ideia clássica do Princípio da Substituição de Liskov. Em português de gente, é assim: se um objeto do tipo mais geral T tem uma propriedade ou comportamento esperado, qualquer objeto de um subtipo S precisa poder entrar no lugar dele sem estragar nada. Ou seja, o subtipo deve respeitar o contrato do tipo base. Isso evita surpresas desagradáveis no sistema. Se você troca um objeto por outro mais específico e o programa quebra, dá erro ou passa a se comportar de forma inesperada, então a herança foi usada de maneira ruim. Em orientação a objetos, herdar não é só "parecer parecido", é realmente poder substituir. A banca descreveu exatamente essa lógica ao dizer que, se uma propriedade vale para todos os objetos de T, ela também deve valer para todos os objetos de S, sendo S subtipo de T. Essa é a definição doutrinária do Princípio de Liskov, um dos pilares do SOLID, associado à letra L. Então o gabarito C está correto porque a letra L representa Liskov Substitution Principle. É a famosa regra do "subtipo precisa se comportar como o tipo base", sem quebrar as expectativas de quem usa a classe pai.