Em uma aplicação corporativa desenvolvida em Java e
C#, a equipe de arquitetura revisou um módulo
responsável por calcular diferentes políticas de
cobrança. A versão inicial concentrava regras
condicionais em uma única classe, com testes
frequentes sobre o tipo concreto de cliente, produto e
contrato. A proposta de refatoração envolveu uso de
interfaces, classes especializadas, injeção de
dependências e substituição de estruturas condicionais
extensas por chamadas polimórficas. Acerca do tema,
analise as sentenças a seguir:
IO polimorfismo permite que objetos de classes
diferentes sejam tratados por uma mesma
abstração, de modo que a seleção do
comportamento concreto possa ocorrer em tempo
de execução, desde que os tipos envolvidos
respeitem o contrato definido por uma interface,
classe abstrata ou hierarquia compatível.
IIA herança deve ser utilizada sempre que duas
classes compartilham atributos com nomes
semelhantes, pois a reutilização estrutural é critério
suficiente para estabelecer relação “é-um”, mesmo
que os comportamentos esperados das subclasses
violem substitutibilidade em relação à superclasse.
IIIA redução de condicionais baseadas em tipo
concreto pode aumentar a extensibilidade do
módulo quando novas políticas de cobrança são
adicionadas por meio de novas implementações de
uma abstração, sem exigir alteração direta da lógica
cliente que consome o contrato comum.
IVO encapsulamento consiste em tornar todos os
atributos privados e todos os métodos públicos,
garantindo baixo acoplamento automaticamente,
independentemente da exposição de detalhes
internos por métodos de acesso e da estabilidade da
interface pública da classe.
Analisadas as sentenças, estão CORRETAS apenas: