SóProvas


ID
2505565
Banca
CESPE / CEBRASPE
Órgão
TRE-BA
Ano
2017
Provas
Disciplina
Engenharia de Software
Assuntos

Na orientação a objetos, o conceito de polimorfismo é implementado, em algumas linguagens, por meio da técnica de sobrecarga de métodos.


Sobre a aplicação desse conceito, é possível afirmar que

Alternativas
Comentários
  • Gabarito A, mas não concordo:

    até onde eu sei sobrecarga necessita de assinaturas diferentes.

  • Concordo com o Souza Silva. Como o método está distribuído pelas diversas classes não houve sobrecarga (overload), apenas houve uma forma de polimorfismo, mas "descentralizada", ou eu diria: reúso. 

  • Há uma pegadinha no enunciado. o comando final do enunciado diz "Sobre a aplicação desse CONCEITO, é possível afirmar que"

    O CONCEITO que ele se refere anteriormente é o POLIMORFISMO (e SÓ! genérico mesmo, sem dizer se é de sobreposição ou sobrecarga). Ele NÃO tá se referindo a TÉCNICA de polimorfismo de sobrecarga de métodos. 

    Pegadinha de enunciado. 

  • realmente a questão se refere ao conceito de polimorfismo e exemplificou no enunciado um tipo deles, mas não necessariamente se referindo a esse tipo, neste caso a letra A fica correta mesmo.

  • Pessoal, o que identificaram como erro da D?

    Sobre a A, marquei-a como errada, pois no polimorismo dinâmico (sobrescrita) o método que será executado é identificado em tempo de execução, e não pelo compilador, como afirma o item A.

  • Yuri, acredito que não tenha um erro na afirmação, apenas não teria relação com o conceito de polimorfismo. Também fiquei em dúvida em relação ao compilador, já que em tempo de compilação é sobrecarga.

    Obs: Marquei a D tbm pq li rápido e achei que a questão perguntava sobre a sobrecarga, logo a letra A estaria incorreta.

  • Pra mim a letra "A" está incorreta.

    Comento a Letra A:

    Um mesmo método pode estar em classes diferentes, com a mesma assinatura(característica da sobrescrita), sem que isso prejudique a sua identificação pelo compilador(Na sobrescrita o compilador não consegue identificá-la, por isso esse tipo de polimorfismo é chamado de late binding, pois é identificado em tempo de execução). Não consegui entender o porquê a questão foi considerada correta.

     

  • Gente, sinceramente... esse questão deveria ter sido anulada!
  • Pegadinha ridícula. A questão quer saber sobre polimorfismo mas cita sobrecarga apenas pra confundir o candidato.

     

    @Yuri Carmo

    O erro da D é que ela define herança e não polimorfismo.

  • Questão mto estranha, eu tbm havia marcado a letra "D", mas depois fui ler os comentários e realmente esta alternativa trata de herança. Alguém sabe se ela foi anulada ?

  • ⦁ um mesmo método pode estar em classes diferentes, com a mesma assinatura, sem que isso prejudique a sua identificação pelo compilador.

    Correto. Se 2 classes diferentes tiverem métodos com a mesma assinatura não há problema nenhum. O escopo dos métodos é a classe e o compilador consegue diferenciar.

    ⦁ a identificação da assinatura do método corresponde ao seu nome.

    Errado. A assinatura de um método é identificada por 3 componentes: retorno + nome + lista de parâmetros e não só pelo nome.

    ⦁ uma classe derivada da classe-mãe tem vários métodos com a mesma assinatura, e o compilador realiza o primeiro deles.

    Errado. Neste de a classe derivada ter vários métodos com a mesma assinatura ocorre erro de compilação.

    ⦁ a classe derivada da classe-mãe herda os métodos da sua classe-mãe na forma como são implementados.

    Errado. Existe a possibilidade de a classe derivada sobrescrever os métodos da classe-mãe. Neste caso, muda a implementação dos métodos herdados.

    ⦁ cada método tem um nome único na classe derivada da classe-mãe a ser identificado pelo compilador.

    Errado. Pode ocorrer sobrecarga de métodos. Neste caso, haverá mais de um método com o mesmo nome e o que os diferenciará será a lista de parâmetros diferente.

    Resposta: A

  • em nenhum momento a alternativa A diz respeito a classes que estão na mesma cadeia de herança. Diz que classes diferentes podem possuir métodos com a mesma assinatura. Eu entendo que isso está de acordo com o conceito de polimorfismo, uma vez que classes diferentes podem implementar uma mesma interface (contrato), com implementações diversas e não serem classes que estendem uma da outra.

  • a) Correto. Um método de uma classe não tem nada a ver com o método de uma outra, o compilador vai conseguir identificar sem problemas. Caso possua uma relação de pai-filha, será feita uma ligação dinâmica em tempo de execução que encontrará o método correto mesmo se tiverem a mesma assinatura

    b) Identificação do método é sua assinatura (nome + lista de parâmetros)

    c) Em regra, uma classe não pode ter vários métodos com a mesma assinatura. Se tentar escrever um método com a mesma assinatura da classe mãe, ele sobrescreverá o método da classe mãe que ficará inacessível. Além disso, nesse caso, a escolha do método é feito pela JVM em tempo de execução, não pelo compilador

    d) Em regra sim, mas posso sobrescrever para que a classe derivada tenha uma implementação diferente da classe mãe

    e) Uma classe pode ter métodos com o mesmo nome, desde que as assinaturas sejam diferentes