Analise as informações que se seguem, relacionadas aos conce...
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
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
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.
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