SóProvas


ID
1168357
Banca
CESGRANRIO
Órgão
EPE
Ano
2014
Provas
Disciplina
Engenharia de Software
Assuntos

Considere que um programa orientado a objeto possui 5 classes: Máquina, Motor, MotorExplosão, MotorVapor e Gerador. MotorExplosão e MotorVapor são especializações de Motor. Motor e Gerador são especializações de Máquina. Todas as classes respondem a uma mensagem chamada “calcularPotencia”, sem argumentos, que calcula e retorna um número real que indica potência do objeto, em watts, de acordo com os valores de alguns atributos, com um algoritmo diferente em cada classe. O exemplo acima caracteriza a capacidade de enviar a mesma mensagem para vários objetos e que cada objeto responda a essa mensagem de acordo com sua classe.

Tal característica é conhecida como:

Alternativas
Comentários
  • Questão clássica sobre polimorfismo

    Todas as bancas! adoram cobrar isso em suas provas e eu adoro resolvê-las, pois, é sempre a mesma definição! e geralmente eu acerto elas.

  • Definimos Polimorfismo como um princípio a partir do qual as classes derivadas de uma única classe base são capazes de invocar os métodos que, embora apresentem a mesma assinatura, comportam-se de maneira diferente para cada uma das classes derivadas.

     

    Fonte: http://www.devmedia.com.br/conceitos-e-exemplos-polimorfismo-programacao-orientada-a-objetos/18701

  • Polimorfismo é o que permite um mesmo metodo fazer operações diferentes consoante tipos e numeros de parametros passados. 

  • Fizemos o diagrama de classes abaixo para facilitar a visualização da situação descrita no enunciado desta questão.

    Temos uma superclasse Máquina com 2 subclasses: Motor e Gerador. Além disso, Motor também tem 2 subclasses: MotorExplosão e MotorVapor.

    O método “calcularPotencia” está presente em todas as classes da hierarquia com a mesma assinatura, porém com algoritmos (comportamentos) diferentes. Isso é o que chamados de polimorfismo de sobrescrita.

    Resposta: A

  • <<Introdução - Polimorfismo>>

    • Como aplicar o polimorfismo: dentre as existentes. uma das formas é através de uma classe abstrata, cujos métodos são declarados mas não são definidos, e através de classes que herdam os métodos desta classe abstrata

    <<Questão>>

    • A - gabarito. Veja que as classes filhas (especializadas) herdam o método "calcularPotencia". Contudo, se todas receberem ao mesmo tempo, elas irão retornar número diferentes. E essa é a ideia do polimorfismo, herda, mas com múltiplos resultados.
    • Erro da letra B (3º lugar nas estatísticas): A refatoração é uma manutenção feita para melhorar o código sem alterar como o usuário usa o sistema (comportamento externo) isso tem como objetivo prolongar o ciclo de vida do programa. Em momento algum, o comando da questão deu a entender que há uma manutenção no software. Logo, assertiva incorreta.
    • Erro da letra C (2º lugar nas estatísticas): todas as classes respondem ao mesmo método. Para ser herança múltipla, é preciso que responda, no mínimo, dois métodos diferentes.

    Em frente e enfrente