Analise as informações que se seguem, relacionadas aos conce...

Próximas questões
Com base no mesmo assunto
Q47422 Engenharia de Software
Analise as informações que se seguem, relacionadas aos conceitos de Orientação a Objetos (OO).

I - O conceito de herança possibilita a especialização de comportamentos pré-existentes em classes ancestrais.
II - Para que um método seja ativado num objeto, uma mensagem não precisa necessariamente ter uma referência explícita a ele, se o objeto default da classe correspondente estiver adequadamente configurado.
III - Uma das desvantagens da herança é a criação de dependência entre as classes envolvidas.
IV - De acordo com a ideia do encapsulamento, é desejável, do ponto de vista de um objeto, que seus atributos internos estejam protegidos contra modificações diretas e que o acesso seja realizado por meio de métodos específicos (setters e getters).
V - Polimorfismo está relacionado à vinculação dinâmica de mensagens e sobrescrita de métodos, sendo que o método correto a ser chamado só será definido em tempo de execução e dependerá do tipo da instância do objeto referenciado pela mensagem.

São corretas APENAS as afirmações
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - I, III, IV e V.

Para resolver esta questão, é necessário compreender os pilares da Orientação a Objetos: herança, encapsulamento e polimorfismo, além de conhecer os mecanismos de ativação de métodos em objetos. Vamos então analisar as afirmações corretas do enunciado:

  • I - Herança: Facilita a especialização de comportamentos já existentes, permitindo a reutilização de código e a criação de relações "é um" entre classes, característica essencial da herança.
  • III - Dependência entre classes: A herança cria uma dependência entre a superclasse (ancestral) e as subclasses (descendentes), o que pode ser uma desvantagem em alguns cenários, pois alterações na superclasse podem impactar todas as subclasses.
  • IV - Encapsulamento: É um princípio que sugere que os atributos internos de um objeto devem ser protegidos de acesso externo direto, promovendo a segurança e a ocultação da complexidade interna. O acesso a esses atributos deve ocorrer através de métodos específicos, frequentemente chamados de setters (para definir valores) e getters (para obter valores).
  • V - Polimorfismo: Está associado à capacidade de um objeto ser referenciado de várias formas, principalmente através de referências de tipo de suas superclasses. O polimorfismo permite que o método concreto a ser executado seja determinado em tempo de execução, com base no tipo real do objeto, um conceito fundamental para a programação orientada a objetos.

A afirmação II é incorreta porque, para que um método seja invocado em um objeto, é necessário especificar o objeto que receberá a mensagem, a não ser que estejamos nos referindo ao contexto de métodos estáticos (mas isso não se encaixa no contexto de orientação a objetos clássico e não é mencionado na afirmação).

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Alguém poderia explicar porque só a II tá errada? Eu achava que a I e a V tb estavam. =/

A I eu achei que estava errada por causa desse pré existente. Pra mim quando se adiciona métodos e atributos exclusivos das subclasses, eles aind anão existiam na superclasse.

E a V eu achei que os métodos não eram escolhidos em tempo de execução, pelo menos no caso da sobrecarga não por causa das assinaturas diferentes, já na sobreposição pode até ser.



????????

O item I está certo, pois pode-se:
  a) Sobreescrever o método especializando a classe; ou
  b) Na superclasse pode está apenas definido a assinatura do método (método abstrato), necessitando que a subclasse defina o comportamento interno do método.

O item V está certo, pois no exemplo de polimorfismo abaixo:
  a) void construir(Casa a);
  b) void construir(Predio a);
A decisão de qual método chamar depende do TIPO da classe utilizada como parâmetro, sendo decido apenas em tempo de execução. No caso de sobrecarga, em que os métodos têm a mesma assinatura na subclasse e superclasse, mas são instanciados conforme exemplo abaixo:

class Moradia{           class Casa {            class Predio{
  void construir();          void construir();        void construir();
}                                     }                                  }

public static void main(){
  Moradia c = new Moradia();
  c.construir();
}

Nesse caso, construir modela o comportamento do objeto, sendo necessário descobrir sua tipagem (Moradia ou Casa) para executar o método.
Alguém sabe me dizer onde está o erro do item II? Não ficou claro para mim esta sentença.

I - Esta é a ideia da herança: estender uma superclasse adicionando comportamento específico. A herança expressa um relacionamento do tipo "é um". Por exemplo, Quadrado "é uma" FormaGeometrica.

 

II - Em Java, não existe a configuração de um objeto "default". O que existe é a possibilidade de chamar um método sem especificar um objeto específico se já estivermos no contexto de um objeto (o que equivale a fazer this.umMetodoQualquer() ).

 

III - Corretíssimo. Uma grande desvantagem da herança é a geração de um acoplamento elevado entre as classes

 

IV) Encapsulamento é uma característica essencial em sistemas orientados a objetos.

 

V) Polimorfismo é uma característica básica da orientação a objetos, possibilitando a criação de designs flexíveis por meio da substituição de objetos em tempo e execução.

e-

Com o Polimorfismo, os mesmos atributos e objetos podem ser utilizados em objetos distintos, porém, com implementações lógicas diferentes.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo