[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

Com técnica de dobragem!

Com técnica de dobragem!

Do meu jeito!

Do meu jeito!

[]s e até a próxima!

_________________________

Sou eu!!!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