Buscar

POO - PROVA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Orientada a Objetos 
 
 
Questão 1 - (Enade, 2008) Com relação a conceitos de orientação a objetos, julgue os seguintes itens. 
I As variáveis ou métodos declarados com modificador de acesso private só são acessíveis a métodos 
da classe em que são declarados. 
II Uma classe deve possuir uma única declaração de método construtor. 
III Uma instância de uma classe abstrata herda atributos e métodos de sua superclasse direta. 
IV O polimorfismo permite substituir a lógica condicional múltipla (lógica switch ou faça caso). 
 
Estão certos apenas os itens 
A) II e III. 
B) I e IV. 
C) I e III. 
D) II e IV. 
E) I e II. 
 
Questão 2 - (Enade, 2017) Um dos conceitos básicos de orientação a objetos é o conceito de herança. 
Durante a implementação de um sistema, o mecanismo de herança suporta a definição de uma nova classe A 
a partir de outra B, preexistente (por exemplo, em Java, pode-se definir a classe A herdeira da classe B 
como "class A extends B"). Além disso, tal mecanismo pode implementar polimorfismo de tipos de objetos. 
DEITEL, P.; DEITEL, H. Java - como programar. 8. ed. 
São Paulo: Prentice Hall, 2010 (adaptado). 
 
A respeito de herança e sua relação com orientação a objetos, avalie as afirmações a seguir. 
I. Herança é um mecanismo que pode ser usado para implementar polimorfismo. 
II. Herança permite o reaproveitamento de código comum entre algumas classes. 
III. Métodos herdados equivalem a métodos polimórficos. 
 
É correto o que se afirma em 
A) I, apenas. 
B) I e II, apenas. 
C) I, II e III. 
D) III, apenas. 
E) II e III, apenas. 
 
Questão 3) A Programação Orientada a Objetos (POO) é considerada um paradigma de programação que tem 
como missão determinar a estrutura de aplicativos de computadores, usando, para isso, simulação de 
conceitos ou coisas do mundo real (reais ou abstratas) no mundo virtual. Entre os principais conceitos de POO, 
é importante mencionar a Classe e o Objeto. A classe é a definição de um determinado grupo de entidades, 
sejam elas reais ou abstratas. As entidades são do mesmo tipo e com os mesmos comportamentos e 
características, ou seja, em resumo, as classes são modelos de objetos do mesmo tipo. Já o objeto é uma 
instância particular de um determinado tipo de dados (classe). Um objeto é uma entidade, que pertence ao 
mundo da programação, com a função de representar uma entidade do mundo real. 
ANDRADE, Thiago Faria de; MOREIRA JUNIOR, Normandes José. 
Java e Orientação a Objetos. Uberlândia: Algaworks, 2014. 
 
Considere que Agnaldo esteja desenvolvendo um software, utilizando para tal a Programação Orientada a 
Objetos (POO). Sobre o uso dos modificadores de acesso (ou modificadores de visibilidade) durante o 
desenvolvimento do software, julgue as afirmações a seguir. 
I. Durante a programação do software, Agnaldo poderá utilizar o modificador de acesso 
denominado public, porque ele deixa a classe visível e acessível para todas as classes. 
II. No decorrer da programação do software, Agnaldo tem a possibilidade de utilizar o modificador de 
acesso chamado protected, porque ele deixa o conteúdo protegido, com isso, ele só poderá ser 
acessado por classes do próprio pacote e por subclasses. 
III. Ao implementar o software, Agnaldo tem a opção de utilizar o modificador de acesso 
denominado private, pois ele deixa o conteúdo privado, impossibilitando que o conteúdo seja acessado 
por outras classes, permitindo o acesso apenas pela própria classe à qual o conteúdo pertence. 
 
 
 
É correto o que se afirma em 
A) III, apenas. 
B) II e III, apenas. 
C) I e II, apenas. 
D) I, apenas. 
E) I, II e III. 
 
Questão 4 - (Enade, 2008) Uma pizzaria fez uma ampliação de suas instalações e o gerente aproveitou para 
melhorar o sistema informatizado, que era limitado e não atendia a todas as funções necessárias. O gerente, 
então, contratou uma empresa para ampliar o software. No desenvolvimento do novo sistema, a empresa 
aproveitou partes do sistema antigo e estendeu os componentes de maneira a usar código validado, 
acrescentando as novas funções solicitadas. 
 
Que conceito de orientação a objetos está descrito na situação hipotética acima? 
A) herança 
B) abstração 
C) sobrecarga 
D) sobreposição 
E) mensagem 
 
Questão 5) Marque a alternativa correta. 
A) Se vários objetos precisam acessar uma determinada variável em comum, a medida que transformamos 
esta variável em estática, estamos desperdiçando espaço na memória. 
B) Uma variável estática não muda seu valor. 
C) Uma variável estática representa informações em nível de classe. 
D) Usamos variáveis de classe quando apenas um objeto da classe precisa utilizar uma cópia desta variável. 
E) Todo objeto tem sua própria cópia de todas as variáveis estáticas da classe. 
 
Questão 6) Classes abstratas podem conter métodos abstratos. Um método abstrato é declarado na classe, 
mas não tem seu código implementado, ele será implementado em alguma classe descendente. Uma classe 
abstrata pode ou não ter métodos abstratos, mas se uma classe contém métodos abstratos, então 
obrigatoriamente a classe deve ser declarada abstrata. Uma classe descendente de uma classe abstrata 
precisa implementar o código de todos os métodos abstratos para se tornar concreta e poder ser instanciada. 
Caso contrário, a classe descendente continua sendo abstrata e precisa ser declarada como tal. Em java, usa-
se o modificador abstract para indicar que uma classe ou um método é abstrato. 
Disponível em: https://pooperrotti.fandom.com/pt-br/wiki/Classes_e_métodos_abstratos. Acesso em: 31 dez. 2019. 
 
Sobre os métodos abstratos, sabe-se que eles são criados juntamente com classes abstratas e, por padrão, 
não têm uma estrutura implementada. Esta implementação 
A) deve ser feita pela primeira classe concreta (extensão da classe abstrata) que contenha o método abstrato. 
B) deve ser feita por um método também abstrato pertencente a uma classe concreta que seja do tipo “classe-
pai”. 
C) pode ser feita por qualquer classe abstrata, ainda que ela não seja herdeira da classe que contém o método 
em questão. 
D) deve ser feita por outra classe abstrata que seja herdeira de alguma outra classe concreta e totalmente 
desvinculada. 
E) pode ser feita por outro método não-abstrato, desde que este segundo pertença a uma classe abstrata. 
 
Questão 7) (resposta está errada) Atualmente, existem dois paradigmas principais de desenvolvimento de 
software na mente dos desenvolvedores e no mercado. Temos o paradigma estruturado, que antes dominava o 
mercado, e o paradigma da orientação a objetos (O.O), que cada vez mais vai tomando conta do mercado. O 
fato é que a orientação a objetos vem tendo sua adoção numa crescente no mercado, mas é fato também, que 
na maioria das vezes, ela é subutilizada. É muito comum equipes de desenvolvimento que desconhecem 
alguns fundamentos básicos da orientação a objetos, que são seus pilares. A orientação a objetos surgiu com o 
objetivo de tornar o desenvolvimento de software menos complexo e mais produtivo. A ideia era se ter 
estruturas de dados, que possuem estado e comportamento e colaboram entre si. Mesmo com a sobreposição 
de métodos e a herança sendo tão poderosas e úteis, pode surgir a necessidade de evitar que ocorram. A 
exemplo, pode-se ter uma classe que encapsule o controle de algum dispositivo de hardware. Além disso, essa 
classe pode dar ao usuário a oportunidade de inicializar o dispositivo, fazendo uso de informações privadas. 
Nesse caso, pode não se querer que os usuários da classe sobreponham o método de inicialização. Qualquer 
que seja a razão, em Java, com o uso da palavra-chave final, é fácil impedir que um método seja sobreposto 
ou uma classe, herdada. 
SCHILDT, Herbert. Java para iniciantes. 6 Ed., Bookman, 2015 (adaptado). 
 
Sobre a palavra-chave final, avalie as afirmações a seguir. 
I. Impede que uma classe seja herdada. 
II. Pode ser utilizada em qualquer campo da declaração. 
III. Deve ser especificada como modificador no início da declaração. 
IV.É inválida quando declarada juntamente ao abstract em uma classe. 
 
É CORRETO o que se afirma em 
A) I e III, apenas. 
B) II, apenas. 
C) III e IV, apenas. 
D) I, II, III e IV. 
E) I, II e IV, apenas. 
 
Questão 8) Marque a alternativa que define métodos abstratos. 
A) Métodos abstratos são aqueles escritos com a palavra private. 
B) São métodos sem implementação. 
C) São métodos que não podem receber valores por parâmetros. 
D) São métodos que não podem ser usados em outras classes. 
E) São métodos que não podem ser implementados por outras classes. 
 
Questão 9) Qual a relação do polimorfismo com interfaces e superclasses? 
A) Há polimorfismo quando uma subclasse herda membros de uma superclasse. 
B) Quando um método existente em uma interface é usado por uma classe que não altera a implementação do 
método, temos um comportamento de polimorfismo. 
C) Quando uma classe herda membros de uma interface, ativa um comportamento polimórfico. 
D) Quando uma classe implementa uma interface, ela se obriga a utilizar e implementar todos os métodos da 
interface, com isso, temos um comportamento polimórfico. 
E) Quando uma classe implementa uma interface, não há necessidade de utilizar todos os seus métodos. 
Entretanto, para que haja um comportamento polimórfico, é necessário implementar os métodos utilizados de 
acordo com sua necessidade. 
 
Questão 10) A linguagem Java é, nativamente, orientada a objetos e isso faz com que ela seja uma linguagem 
com estrutura robusta e consideravelmente segura quanto à proteção de acesso aos seus recursos internos 
como métodos e atributos. Por padrão, assim como em outras linguagens, métodos e atributos declarados já 
surgem com o modo de visibilidade e manipulação do tipo default, ou seja, mesmo que o programador não 
especifique uma restrição modificadora específica, um apontamento padrão já é realizado. É possível, todavia, 
realizar a alteração desses modificadores de acesso de acordo com os tipos de métodos ou atributos que 
estejam em manipulação pelo programador. É uma recomendação da própria linguagem que mesmo aqueles 
métodos ou atributos que não precisem de um modificador, recebam-no de forma explícita, tanto para atender 
aos padrões de desenvolvimento, quanto para garantir que a intenção deliberada do programador quanto às 
propriedades de acesso e modificação de recursos seja, de fato, aquela apontada no código. 
 
Nesse ínterim, considere que você está participando de um processo seletivo promovido por uma empresa de 
desenvolvimento de software. Outros colegas, também programadores Java, estão participando desse mesmo 
processo seletivo e, ao final das etapas de teste e verificação de conhecimentos, apenas um programador será 
efetivado pela empresa. Na etapa atual, o desafio proposto pela empresa é criar algumas classes que devem, 
entre si, compartilhar determinadas informações, trafegando dados por meio de seus métodos. Para 
demonstrar sua capacidade plena de lidar com modificadores de acesso, em todos os membros de uma classe 
específica, você utilizou 
A) o modificador private, de forma que apenas as classes filhas (herdeiras) possam ter acesso ao conteúdo 
declarado dentro da classe principal. 
B) o modificador protected, que garante acesso aos métodos e atributos apenas a classes que estejam em 
pacotes externos ao pacote da classe trabalhada. 
C) o modificador public ou default, garantindo que seus membros sejam acessíveis apenas a classes presentes 
no mesmo pacote que a classe-pai. 
D) o modificador public, de forma que apenas as classes herdeiras tenham total acesso aos recursos dispostos 
no escopo da classe em questão. 
E) o modificador private para garantir que nenhuma outra classe, nem mesmo as herdeiras, tenham acesso 
aos métodos e atributos da classe em questão. 
 
 
 
Questão 11) Analise o código abaixo: 
 
/* 
package media; 
public class calcularMedia { 
 
private double nota1; 
private double nota2; 
private double media; 
private int matricula; 
private String nome; 
 
 
public void calcularMedia(double nota1, double nota{ 
this.nota1 = nota1; 
this.nota2 = nota2; 
media = (nota1 + nota2)/2; 
 
} 
 
public void cadastrarAluno(int cod, String matricula){ 
this.cod=cod; 
this.matricula = matricula; 
} 
 
} 
*/ 
 
É correto afirmar que: 
A) A classe “calcularMedia” segue a regra geral para nomes de classes. 
B) Esta classe não apresenta coesão. 
C) Esta classe não está dentro de nenhum pacote. 
D) A classe está escrita totalmente correta. 
E) O método “calcularMedia” não irá executar a expressão aritmética. 
 
Questão 12) Em relação a classes abstratas, marque a alternativa incorreta. 
A) Classes abstratas fornecem a implementação de um ou mais métodos. 
B) O oposto de abstrato é concreto. 
C) Quando possuem métodos abstratos, devem ser declaradas abstratas. 
D) Cada método não implementado na classe abstrata é marcado com abstract. 
E) Não se pode criar objetos de uma classe abstrata. 
 
Questão 13) O que significa sobrescrever um método? 
A) As assinaturas e implementações devem ser diferentes daquela na superclasse. 
B) Escrever um método herdado com mesmo tipo de retorno, mas com nome diferente. 
C) As assinaturas devem ser diferentes. Todavia, a implementação deve ser igual. 
D) Escrever o método com mesmo nome modificando apenas seus parâmetros. 
E) Substituir a implementação do método da superclasse. 
 
Questão 14) O tratamento de exceções otimiza o tratamento de erros, permitindo que o programa defina um 
bloco de código, chamado de tratados de exceções, executando automaticamente quando um erro ocorre. Não 
é necessário verificar manualmente o sucesso ou a falha de cada chamada de método ou operação específica. 
Se um erro ocorrer, ele será processado pelo tratador de exceções. Outra razão que torna o tratamento de 
exceções importante é o Java definir exceções padrão para erros que são comuns nos programas, como a 
divisão por zero ou um arquivo não encontrado. 
SCHILDT, Herbert. Java para iniciantes. 6 ed. Porto Alegre: Bookman, 2015. 
 
O tratamento de exceções Java é gerenciado por palavras-chave que formam um subsistema interligado, em 
que o uso de uma implica o uso da outra. Neste contexto, sobre as palavras-chave utilizadas no tratamento de 
exceções, pode-se afirmar que 
(I) a palavra-chave throw é utilizada para lançar manualmente uma exceção. 
(II) a palavra-chave finally cria um bloco para armazenar exceções tratadas. 
(III) a palavra-chave try cria um bloco para armazenar exceções monitoradas. 
(IV) a palavra-chave catch é utilizada para capturar uma exceção e tratá-la de maneira racional. 
 
É correto o que se afirma em 
A) I, II, III e IV. 
B) II, III e IV, apenas. 
C) I e II, apenas. 
D) I, III e IV, apenas. 
E) II e IV, apenas. 
 
Questão 15) Marque a afirmativa que define interface. 
A) Interface serve para organizar classes de uma aplicação. 
B) São formulários que interagem com o usuário. 
C) Interface define tipos em forma abstrata. 
D) Interfaces são classes que possuem apenas métodos e podem ser instanciadas. 
E) São elementos da classe.

Outros materiais