

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Na programação orientada a objetos, qual mecanismo permite que uma subclasse forneça uma implementação específica para um método que já é definido em sua superclasse?
Sobrescrita.
Abstração.
Encapsulamento.
Sobrecarga.
Considere os conceitos fundamentais da Programação Orientada a Objetos (POO) e analise as afirmações a seguir, relacionadas a herança, polimorfismo, sobrescrita de métodos, encapsulamento e ligação dinâmica:
I. Em um sistema orientado a objetos, quando um método é sobrescrito em uma subclasse, a versão do método executada é determinada em tempo de execução, de acordo com o tipo real do objeto referenciado.
II. O encapsulamento garante que os atributos de uma classe sejam sempre inacessíveis fora dela, independentemente da existência de métodos públicos de acesso.
III. Uma referência do tipo de uma superclasse pode apontar para um objeto de uma subclasse, possibilitando o uso do polimorfismo.
IV. Métodos declarados como privados (private) em uma superclasse podem ser sobrescritos por subclasses, desde que mantenham a mesma assinatura.
V. O uso de classes abstratas permite a definição de métodos sem implementação, os quais devem ser obrigatoriamente implementados pelas subclasses concretas.
Assinale a alternativa que apresenta a sequência CORRETA, de cima para baixo:
V – F – V – F – V
V – V – V – F – V
F – F – V – F – V
V – F – F – F – V
F – V – V – V – F
O conceito de abstração de processo está entre os mais antigos nos projetos de linguagens de programação. Como evolução das abstrações de processos, surgiu a abstração de dados. A programação orientada a objetos é, portanto, uma aplicação do princípio de abstração para tipos de dados, com a peculiaridade de ser capaz ainda de fornecer suporte à herança e vinculação dinâmica de chamadas aos subprogramas do tipo criado, os métodos. Um propósito para essa vinculação dinâmica é permitir que os sistemas de software sejam mais bem estendidos durante o desenvolvimento e a manutenção. Essa característica é conhecida como:
herança
polimorfismo
encapsulamento
ponteiro dinâmico
Em programação orientada a objetos, o princípio que restringe o acesso direto ao estado interno de um objeto e disponibiliza operações controladas para interação com seus dados corresponde ao:
encapsulamento.
polimorfismo.
acoplamento.
paralelismo.
Na programação orientada a objetos, os pilares fundamentais definem como estruturar sistemas de forma modular, segura e de fácil manutenção. Assinale a alternativa que identifica corretamente o princípio responsável por ocultar os detalhes internos de implementação de uma classe e expor apenas uma interface controlada para uso externo:
Polimorfismo, que permite que diferentes objetos respondam de formas distintas ao mesmo método.
Instanciação, que consiste na criação de objetos a partir de uma classe.
Encapsulamento, que restringe o acesso direto aos atributos e dados internos de uma classe, controlando a interação com o objeto exclusivamente por meio de métodos públicos (getters, setters e outros métodos de interface).
Abstração, que consiste em permitir que subclasses acessem diretamente os atributos privados da classe base para facilitar a reutilização de código.
Herança, que permite que uma classe derive atributos e comportamentos de outra classe.
Durante o desenvolvimento de um sistema orientado a objetos, um programador utilizou mecanismos para proteger os atributos, reutilizar código e permitir comportamentos diferentes em subclasses.
Nesse contexto, analise as afirmativas a seguir:
I. Encapsulamento restringe o acesso direto aos atributos da classe.
II. Herança permite reutilizar o código.
III. Polimorfismo permite diferentes implementações para um mesmo método.
IV. Classes abstratas não podem ser instanciadas diretamente.
Assinale a alternativa CORRETA.
Apenas as afirmativas I, II e III estão corretas.
Apenas as afirmativas I e III estão corretas.
Apenas as afirmativas II, III e IV estão corretas.
Todas as afirmativas estão incorretas.
Todas as afirmativas estão corretas.
Abstração em Programação Orientada a Objetos – POO (ou ObjectOriented Programming, OOP) corresponde a uma visão ou representação de uma entidade que inclui apenas os atributos mais significativos.
Com relação à JAVA e a OOP, assinale (V) para a afirmativa verdadeira e (F) para a falsa.
( ) O Java emprega uma adesão consistente aos princípios orientados a objetos, tendo a abstração como supressão intencional, ou ocultação, de alguns detalhes de um processo ou artefato, focando nas características e comportamentos essenciais de um objeto do mundo real.
( ) Java não permite classes sem pais, pois a herança é mandatória e centralizada, e usa dynamic binding (Ligação Dinâmica ou Tardia) como comportamento padrão para métodos de instância em Java para vincular chamadas de método às definições de métodos, que corresponde ao Polimorfismo (de inclusão ou sobreposição).
( ) Java usa interfaces para fornecer uma forma de suporte à herança múltipla, que não possui todas as desvantagens da herança múltipla real.
As afirmativas são, respectivamente,
F – F – F.
V – V – V.
V – F – F.
V – F – V.
F – F – V.
Na arquitetura orientada a objetos, o encapsulamento é o princípio que visa ocultar os detalhes de implementação interna e proteger o estado de um objeto, restringindo o acesso direto aos seus atributos e mediando a interação do meio externo por meio de métodos públicos definidos.
Certo
Errado
Em um sistema desenvolvido de acordo com os princípios da Programação Orientada a Objetos, um desenvolvedor declarou os atributos de uma classe como private e disponibilizou métodos públicos para serem acessados e modificados de maneira controlada, quando necessário. O objetivo principal dessa prática é
permitir que qualquer classe possa alterar de modo direto os atributos do objeto, tornando o sistema mais flexível.
garantir que os atributos da classe possam ser acessados e modificados de forma controlada, preservando a integridade dos dados.
permitir que o desenvolvedor possa acessar e modificar, de modo direto, os atributos da classe, sem a necessidade de métodos de controle.
fazer com que todos os atributos possam ser visíveis somente para classes localizadas no mesmo pacote.
eliminar a necessidade de utilizar modificadores de acesso na definição da classe.
A programação orientada a objetos utiliza abstrações para organizar sistemas complexos, protegendo dados e facilitando a reutilização de código. Acerca do assunto, registre V, para as afirmativas verdadeiras, e F, para as falsas:
(__)O encapsulamento visa proteger o estado interno de um objeto, restringindo o acesso direto aos seus atributos por meio da exposição de interfaces públicas controladas.
(__)Polimorfismo é a capacidade de um objeto ser tratado como um tipo de sua superclasse, permitindo que métodos homônimos tenham comportamentos distintos nas subclasses.
(__)Herança múltipla de classes é um recurso disponível em todas as linguagens de programação orientadas a objetos, permitindo herdar estados de múltiplas classes base.
(__)O relacionamento do tipo composição define uma dependência forte entre objetos, na qual o ciclo de vida da parte está intrinsecamente ligado ao ciclo de vida do todo.
Assinale a alternativa que apresenta a sequência correta, de cima para baixo.
V, V, F, V.
V, V, V, V.
F, V, V, F.
V, F, F, V.
A Programação Orientada a Objetos (POO) utiliza conceitos de classes e objetos para organizar o software em unidades reutilizáveis. Acerca de herança e polimorfismo em sistemas orientados a objetos, marque V para as afirmativas verdadeiras e F para as falsas.
( ) O polimorfismo de inclusão permite que objetos de subclasses sejam tratados como objetos de suas superclasses, possibilitando a invocação de métodos sobrescritos conforme o tipo real do objeto.
( ) A herança múltipla de classes é um recurso obrigatório e presente de forma nativa em todas as linguagens modernas, como Java e C#, para garantir a máxima flexibilidade de design.
( ) Classes abstratas são componentes de design que não permitem a criação direta de instâncias, servindo como modelos para outras classes que devem implementar seus métodos obrigatórios.
( ) O princípio do encapsulamento determina que todos os atributos de uma classe devem ser obrigatoriamente públicos para facilitar o acesso de outras classes e reduzir o acoplamento.
Após análise, assinale a alternativa que apresenta a sequência CORRETA dos itens acima, de cima para baixo:
V, V, F, V.
V, F, V, F.
V, F, F, F.
F, V, F, V.
F, F, V, V.
Um programador de sistemas está aprendendo a usar uma linguagem de programação orientada a objetos (OO). Dentre as características dessa linguagem, há a implementação do paradigma OO, que trata de permitir que objetos de diferentes classes trabalhem, com um mesmo método, de maneiras diferentes. Esse paradigma é o(a):
herança
abstração
polimorfismo
conceituação
encapsulamento
Um usuário de uma linguagem de programação orientada a objeto (OO) precisa definir um componente que representa a instância de uma classe, com suas propriedades e comportamento. Esse componente é o:
objeto
código
padrão
atributo
método
Analise as seguintes afirmativas, em relação aos conceitos de Programação Orientada a Objetos.
I. O encapsulamento permite alterar a implementação interna de uma classe, sem exigir mudanças no código cliente, desde que a interface pública permaneça compatível.
II. Polimorfismo implica que a seleção do método a ser executado ocorre em tempo de compilação, pois o tipo da referência determina de forma definitiva qual implementação será chamada.
III. Em herança, um acoplamento entre superclasse e subclasse pode aumentar, pois alterações na superclasse podem afetar o comportamento da subclasse.
É verdadeiro o que é afirmado em
I e III, apenas.
II e III, apenas.
I, apenas.
II, apenas.
I, II e III.
Considere o código Java a seguir:
abstract class Documento {
public abstract String getTipo();
public String descricao() {
return "Documento do tipo: " + getTipo();
}
}
class Relatorio extends Documento {
@Override
public String getTipo() {
return "Relatório";
}
}
public class Sistema {
public static void main(String[] args) {
Documento doc = new Relatorio();
System.out.println(doc.descricao());
}
}
Sob a ótica de orientação a objetos em Java, assinale a alternativa correta a respeito do código apresentado.
A chamada a getTipo() em descricao() utiliza sempre a versão definida em Documento, pois doc é do tipo Documento.
O método descricao() não pode ser herdado pela classe Relatorio, pois classes abstratas impedem reutilização de métodos concretos.
O método getTipo() da classe Relatorio representa uma sobrecarga, pois redefine o comportamento declarado na classe abstrata Documento.
O código demonstra polimorfismo, no qual a implementação do método getTipo() da classe Relatorio é utilizada em tempo de execução, apesar da referência ser do tipo Documento.
Em um sistema orientado a objetos, um método é chamado por meio de uma referência do tipo da superclasse, mas o objeto referenciado pertence a uma subclasse que redefine esse método.
Nesse cenário, a escolha da implementação do método ocorre:
Em tempo de compilação, com base no tipo da referência.
Em tempo de compilação, com base no tipo do objeto.
Em tempo de execução, com base no tipo do objeto.
Em tempo de execução, com base no tipo da superclasse.
Apenas se o método for declarado como estático.
O polimorfismo é um dos pilares da Programação Orientada a Objetos (POO) e está diretamente relacionado aos conceitos de herança e sobrescrita de métodos.
Analise as afirmativas a seguir:
I. O polimorfismo permite que referências do tipo da superclasse apontem para objetos de suas subclasses.
II. O polimorfismo elimina a necessidade de herança em um sistema orientado a objetos.
III. Métodos sobrescritos em subclasses podem ser executados mesmo quando a referência do objeto é do tipo da superclasse.
Está CORRETO o que se afirma em:
Apenas I.
Apenas II.
Apenas I e III.
Apenas II e III.
I, II e III.
De acordo com um dos princípios da arquitetura orientada a objetos, a programação volta à interface, e não à implementação dos próprios objetos.
Certo
Errado
Em linguagens orientadas a objetos com suporte a despacho dinâmico, o polimorfismo pode se manifestar como sobrecarga (overloading) ou sobrescrita (overriding), mecanismos com semânticas e momentos de resolução distintos. Nesse sentido, assinale a alternativa correta.
A sobrescrita (overriding) é resolvida em tempo de compilação: o compilador determina qual implementação invocar com base no tipo estático (declarado) da variável, não no tipo real do objeto em tempo de execução.
A sobrescrita (overriding) exige que a subclasse forneça nova implementação para um método da superclasse com a mesma assinatura; quando o método participa de despacho dinâmico — como métodos virtuais em C++ ou métodos de instância sobrescrevíveis em Java —, a chamada via referência para a classe base é resolvida em tempo de execução com base no tipo real do objeto.
A sobrecarga (overloading) permite que uma subclasse redefina um método herdado da superclasse; a versão a ser invocada é determinada dinamicamente pelo tipo real do objeto receptor em tempo de execução.
A ligação dinâmica (dynamic binding) é o mecanismo de resolução da sobrecarga de métodos, pois o compilador não consegue determinar, em tempo de compilação, qual versão sobrecarregada deve ser chamada.
Em C++, a simples redefinição de um método da classe base em uma classe derivada produz polimorfismo dinâmico, independentemente de o método da classe base ser declarado como virtual.
Em Programação Orientada a Objetos (POO), a sobrecarga de métodos ocorre quando um mesmo identificador representa várias implementações distintas (Deitel; Deitel, 2016). Embora os identificadores dos métodos sobrecarregados sejam os mesmos, suas assinaturas devem ser diferentes.
Considere o código Java a seguir:

Fonte: dados do elaborador
Todas as alternativas representam uma sobrecarga válida do método somar da classe Calculadora, EXCETO:
public double somar(int a, int b)
public float somar(float a, float b)
public int somar(int a, int b, int c)
public int somar()