Questão comentada: [Programação Orientada a Objetos] FCC 2012 TRE/CE – Analista Judiciário – Especialidade Análise de Sistemas – Questão 41
[FCC 2012 TRE/CE – Analista Judiciário – Especialidade Análise de Sistemas – Questão 41] Sobre orientação a objetos, é INCORRETO afirmar:
[A] os conceitos de generalização e especialização da orientação a objetos estão diretamente associados ao conceito de herança.
[B] um objeto pode existir mesmo que não exista nenhum evento a ele associado.
[C] um construtor visa inicializar os atributos e pode ser executado automaticamente sempre que um novo objeto é criado.
[D] polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma assinatura e mesmo comportamento.
[E] uma classe define o comportamento dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos.
Comentários
Pessoal, essa questão é excelente para revisarmos alguns pontos da POO.
Letra A: “os conceitos de generalização e especialização da orientação a objetos estão diretamente associados ao conceito de herança”.
Exatamente. Como vimos no exemplo da superclasse Mamífero (generalização) e das suas subclasses Homem e Baleia (especialização).
Letra B: “um objeto pode existir mesmo que não exista nenhum evento a ele associado”.
Sim. Sem problemas. Podemos instanciar uma classe e nunca utilizar essa instância (objeto criado).
Letra C: “um construtor visa inicializar os atributos e pode ser executado automaticamente sempre que um novo objeto é criado”.
Essa é a função do construtor.
Letra D: “polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma assinatura e mesmo comportamento”.
Opa, epa, opa! Comportamentos diferentes! Por isso o nome polimorfismo! Essa técnica é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma assinatura, porém, comportamentos diferentes.
Um exemplo seria um Locomover das classes como a superclasse Mamífero e suas subclasses Homem e Baleia. Tanto Homem quanto Baleia herdam o método da superclasse, porém, cada uma dessas classes por dar uma implementação mais específica para o método Locomover: o Homem, pela terra, e a Baleia, pela água.
Vamos ver isso em termos de códigos da linguagem Java? Vejam o exemplo:
// Instanciando a classe Mamífero e utilizando a variável-objeto mamífero para receber a instância.
Mamífero mamífero = new Mamífero();
mamífero.locomover();
// Instanciando a classe Homem e utilizando a variável-objeto mamífero para receber a instância.
mamífero = new Homem();
mamífero.locomover();
// Instanciando a classe Baleia e utilizando a variável-objeto mamífero para receber a instância.
mamífero = new Baleia();
mamífero.locomover();
Vejam que no exemplo, chamamos o método Locomover três vezes. Porém, em cada momento, a variável-objeto mamífero do tipo Mamífero estava apontando para um objeto diferente. Em tempo de execução, a Máquina Virtual Java irá tentar saber que implementação do Locomover ela irá chamar, de acordo para que objeto a variável-objeto está apontando.
Vejam que a mesma assinatura, porém, os comportamentos serão diferentes.
Letra E: “uma classe define o comportamento dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos”.
Exatamente. O estado de um objeto é representado por seus atributos e o comportamento dele, pelos seus métodos.
Gabarito: letra D.
Curso(s) relacionado(s)
Dobrando uma camisa
[]s e até a próxima!
_________________________
Rogério Araújo
Blog: https://rogerioaraujo.wordpress.com/
Gmail: rgildoaraujo@gmail.com
Twitter: http://twitter.com/rgildoaraujo
LinkedIn: http://br.linkedin.com/in/rgildoaraujo
Grupo de estudo no TIMasters 2.0: http://timasters.ning.com/group/dev