Questão nº 49
Questão de Tecnologia da Informação · FGV DATAPREV 2024 (nº 49)
Em um projeto de software utilizando orientação a objetos, foi implementado o seguinte código em Java:

Com base no princípio de Substituição de Liskov (L), que faz parte dos princípios SOLID, em relação à implementação do método emitirSom, assinale a opção correta.
- AA classe Cachorro não pode sobrescrever o método emitirSom, pois isso viola o princípio da Substituição de Liskov.
- BO princípio da Substituição de Liskov é violado porque a classe Cachorro altera o comportamento do método emitirSom herdado de Animal.
- CO código está de acordo com o princípio da Substituição de Liskov, já que a classe Cachorro pode ser usada no lugar da classe Animal sem comprometer a corretude do programa. (alternativa correta)
- DO princípio da Substituição de Liskov exige que o método emitirSom de Cachorro seja exatamente igual ao de Animal.
- EA implementação fere o princípio da Substituição de Liskov porque o método sobrescrito deve lançar uma exceção quando chamado.
Resposta comentada
Gabarito Alternativa C
O Princípio da Substituição de Liskov (LSP) afirma que objetos de uma superclasse devem poder ser substituídos por objetos de suas subclasses sem quebrar o funcionamento correto do programa. Em outras palavras, um tipo derivado deve ser substituível por seu tipo base.
- (A) Incorreta: O LSP não proíbe a sobrescrita de métodos; pelo contrário, a sobrescrita é fundamental para o polimorfismo e pode estar em conformidade com o LSP, desde que o contrato do método seja mantido.
- (B) Incorreta: Esta é a armadilha. Embora o comportamento seja alterado de "som genérico" para "latido", essa alteração é uma especialização que ainda cumpre o contrato de "emitir um som". A violação ocorreria se o
Cachorrofizesse algo completamente diferente ou inesperado, como não emitir som algum ou lançar uma exceção não prevista peloAnimal. - (C) Correta: O código está de acordo com o LSP. Um
Cachorroé umAnimal, e seu métodoemitirSom(latido) é uma forma válida de um animal emitir som. Se um programa espera umAnimale recebe umCachorro, chamaremitirSomainda resultará em um som, sem causar erros ou comportamentos inesperados em relação ao contrato da classe base. - (D) Incorreta: O LSP não exige que o método sobrescrito seja exatamente igual; ele permite a especialização do comportamento, desde que o novo comportamento seja compatível com o contrato do método da superclasse.
- (E) Incorreta: Lançar uma exceção inesperada em um método sobrescrito, quando o método da superclasse não o faz, seria uma violação do LSP, pois quebraria o contrato e a expectativa do cliente.
Fonte: FGV DATAPREV 2024 Analista de Tecnologia da Informação - Desenvolvimento de Software (Caderno Tipo 1). Reproduzida para fins de estudo.