SóProvas


ID
784675
Banca
ESAF
Órgão
CGU
Ano
2012
Provas
Disciplina
Engenharia de Software
Assuntos

Polimorfismo é

Alternativas
Comentários

  • "O polimorfismo é caracterizado quando duas ou mais classes distintas tem métodos de mesmo nome, de forma que uma função possa utilizar um objetode qualquer uma das classes polimórficas, sem necessidade de tratar de forma diferenciada conforme a classe do objeto."  Steven F. Lott

    (Traduzido de: A Programmer's Introduction to Python, Building Skills in Python, Part III. Data + Processing = Objects, Chapter 22. Advanced Class Definition, Polymorphism)
  • Polimorfismo é a habilidade pela qual uma única operação ou nome de atributo pode ser definido em mais de uma classe e assumir implementações diferentes em cada uma dessas;
     
    Tipos:

    1)Estático: sobrecarregados(overloading)
    -- nome igual / argumentos diferentes;
    --a decisão do método a ser chamado é tomada em tempo de compilação de acordo com os argumentos passados;
     
    2)Dinâmico: sobrescritos(overriding)
    -- associado ao conceito de herança;
    --nome e argumentos iguais;
    -- subclasse redefine método da superclasse;
    -- a decisão do método a ser chamado é tomada em tempo de execução.

    obs: na sobrecarga o nome do método é igual, mas há alguma diferença no tipo ou quantidade de atributos entre os métodos. Isso  vai definir qual método será chamado.
  • Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse. A decisão sobre qual o método que deve ser selecionado, de acordo com o tipo da classe derivada, é tomada em tempo de execução, através do mecanismo de ligação tardia.

    No caso de polimorfismo, é necessário que os métodos tenham exatamente a mesma identificação, sendo utilizado o mecanismo de redefinição de métodos. Esse mecanismo de redefinição não deve ser confundido com o mecanismo de sobrecarga de métodos.

    O uso de polimorfismo em Java é ilustrado através de um exemplo. Através desse exemplo introduzem-se os conceitos relacionados de upcasting e a motivação para a definição de métodos abstratos.

    É importante observar que, quando polimorfismo está sendo utilizado, o comportamento que será adotado por um método só será definido durante a execução. Embora em geral esse seja um mecanismo que facilite o desenvolvimento e a compreensão do código orientado a objetos, há algumas situações onde o resultado da execução pode ser não-intuitivo, como ilustra esse exemplo que usa polimorfismo em construtores.

    Fonte: http://www.dca.fee.unicamp.br/cursos/PooJava/polimorf/index.html

  • Acho que a letra E está errada... Se eu tenho uma classe cachorro e uma gato e todas as duas com um método chamado emitirSom, logo emitirSom não vai ser caso de polimorfismo pois cachorro e gato são classes totalmente diferentes sem nenhum tipo de relação de herança nem nada, pois na letra E) não diz nada sobre que essas duas ou mais classes pertençam a uma superclasse por meio de herança. Me corrijam se eu estiver errado.