SóProvas


ID
51262
Banca
CESGRANRIO
Órgão
TJ-RO
Ano
2008
Provas
Disciplina
Engenharia de Software
Assuntos

Uma classe ClasseA de determinada aplicação possuía um método calculeAlgo() em que testes (instruções de desvio condicional) eram utilizados para se determinar que algoritmo deveria ser adotado para efetuar o cálculo. Foi criada uma nova hierarquia de classes, iniciando na classe abstrata ClasseB, que declara o método abstrato calcule(). Este método é implementado por cada classe concreta da hierarquia, sendo cada uma delas correspondente a um dos algoritmos previstos no método calculeAlgo() original. ClasseA passou a ter um atributo do tipo ClasseB e métodos de acesso ao mesmo, e calculeAlgo() teve seu código substituído por uma simples chamada ao método calcule() do objeto armazenado no novo atributo. O conceito OO (Orientação a Objetos) predominante na descrição acima é a(o)

Alternativas
Comentários
  • Até agora não entendi o porque de polimorfismo!Qual o método utilizado para definir a predominância? Identifiquei Herança Múltipla, Polimorfismo e Sobrecarga de Método.
  • Não existe sobrecarga de atributo.Não houve sobrecarga (overload) e sim sobrescrita (override). Não houve herança multipla, a questão não falou.Sim, sobreescrita é polimorfismo.Não houve acesso direto ao atributo, todos foram acessados por meio de métodos específicos.
  • Só complementando @J-Christ

    O caso citado (sobrescrita) é polimorfismo dinâmico - só em tempo de execução você sabe qual Classe terá o método chamada

    Também existe a sobrecarga (que não aconteceu no caso) mas também é um caso de polimorfismo estático. Uma classe pode ter dois métodos com mesmo nome, mas assinaturas diferentes (lista de parâmetros diferentes), o que caracteriza sobrecarga.

    Se o caso citado fosse de sobrecarga, a questão teria duas respostas: polimorfismo e sobrecarga de método. Lembrando disso ajudaria na eliminação também.