Buscar

ACUMULADO PROVAS LINGUAGEM PROGRAMACAO ORIENTADA A OBJETOS LPOO UNIP

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 15 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

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 6, do total de 15 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

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 9, do total de 15 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

Prévia do material em texto

Disciplina: 796790 - LINGUAGEM DE PROGRAMAÇÃO ORIENTADA À OBJETOS 
Permitido o uso de calculadora. 
 
Questão 1: Utilizamos nosso computador de diversas maneiras (pesquisando coisas, ouvindo músicas, jogando jogos 
eletrônicos, dentre várias outras possibilidades) e ao mesmo tempo - graças aos Threads conseguimos executar 
diversas aplicações simultaneamente em nosso sistema operacional. O Java nos permite criar Threads para 
trabalharmos em conjunto com outros blocos e/ou aplicações, criando uma classe que implementará uma Thread. 
Contudo, para ela ser inicializada, qual é o nome do método que deve existir nesta classe para ela ser 
inicializada? 
 
A) Run 
B) Initialize 
C) ThreadStart 
D) Runnable 
E) Runtime 
 
Comentários: O método que deve existir na classe que implementa uma Thread em Java para que ela possa ser 
inicializada é o método "run()". Este método contém o código que será executado quando a Thread for iniciada e é 
necessário para que a Thread possa ser criada e executada corretamente. 
 
 
Questão 2: O programa a seguir mostra duas classes que contêm herança e uma terceira que se utiliza das 
classes anteriores, além de uma quarta classe de testes que as instancia: 
 
public class ConjuntoA{ 
//... métodos e atributos de ConjuntoA 
} 
public class ConjuntoB extends ConjuntoA{ 
//... métodos e atributos de ConjuntoB 
} 
public class ConjuntoC{ 
public void track01(ConjuntoA ca){ 
//... lógica do método} 
public void track02(ConjuntoB cb){ 
//... lógica do método} 
public void track03(ConjuntoC cc){ 
//... lógica do método} 
 
//... demais métodos 
} 
 
public class teste{ 
public ConjuntoA c1= new ConjuntoA(); 
public ConjuntoA c2= new ConjuntoB(); 
public ConjuntoB a2= new ConjuntoB(); 
public ConjuntoC c3= new ConjuntoC(); 
 
public void validadorTeste(){ 
// invocação dos métodos do ConjuntoC 
} 
} 
 
Dadas as opções a seguir, qual destes métodos não podem ser inseridos no “validadorTeste” da classe ConjuntoC, 
como uma invocação dos métodos? 
 
A) c3.track03(c3); 
B) c3.track02(c2); 
C) c3.track02(c3); 
D) c3.track01(c1); 
E) c3.track02(a2); 
 
Fonte (prova anterior com gabarito no passei direto) 
 
Questão 3: Ao desenvolvermos uma aplicação, precisamos tomar cuidado com os erros de execução, fazendo 
com que nosso programa pare de funcionar a partir do momento que ocorre este erro, podendo ser uma falha 
de conexão ou algum dado inserido de maneira incorreta. A fim de que nossa aplicação não pare 
simplesmente por ocorrer este erro, qual é a solução mais adequada para seu tratamento? 
 
A) Criar um padrão que é colocado caso o tipo de dado não seja inserido ou mal inserido. 
B) Utilizar condições if-else para filtrar qualquer incoerência. 
C) Criar sub-rotinas que verificam a integridade dos dados. 
D) Utilizar try-catch nos blocos onde é possível gerar um erro. 
E) Utilizar estruturas de switch-case, filtrando os possíveis erros e fazendo com que nosso programa consiga tratá- 
los. 
 
Comentários: 
O que significa “tratar uma exceção”? É criar no programa uma estrutura “try-catch” envolvendo uma ou mais linhas de código, de 
modo que, à medida que uma exceção ocorra, o sistema tenha um comportamento específico. 
 
 
Questão 4: Uma classe possui o seguinte código: 
 
public class ElementoA{ 
public static void main(String[] args){ 
int x = 0, y = 0, z = 0; 
int i = ?; 
if(i > 100) 
x= 5; 
else if (i > 50) 
y= 5; 
else if (i > 20) 
z = 5; 
} 
} 
 
Analisando este código, no final de sua execução, para os valores de “i” abaixo, seria possível termos os 
valores das variáveis x, y e z alterados para o número 5? 
 
A) No código apresentado, não é possível alterar os valores das três variáveis, apenas uma delas, dependendo do 
valor da variável i. 
B) As três variáveis terão seus valores alterados para 5 se a variável i tiver um valor acima de 100. 
C) As três variáveis terão seus valores alterados para 5 se a variável i tiver um valor igual a 20. 
D) As três variáveis terão seus valores alterados para 5 se a variável i tiver um valor entre 20 e 50. 
E) As três variáveis terão seus valores alterados para 5 se a variável i tiver um valor abaixo de 100. 
Fonte (prova anterior com gabarito no passei direto) 
 
Questão 5: Considerando um dos pilares da Orientação a Objeto, o polimorfismo é uma característica que 
define alguns elementos da linguagem orientada a objeto, fazendo que objetos possam ter formas diferentes 
de comportamento. Podemos afirmar que: 
 
A) O polimorfismo permite utilizar o mesmo nome de variável com tipos de dados diferentes. 
B) O polimorfismo permite que as classes consigam utilizar-se de outras, gerando heranças. 
C) O polimorfismo permite a utilização de métodos com o mesmo nome, mas com parâmetros iguais. 
D) O polimorfismo é a capacidade de um elemento possuir modificadores de acesso. 
E) O polimorfismo é a capacidade de um determinado elemento se comportar de formas diferentes. 
 
O Polimorfismo, no Java, é a capacidade de um determinado elemento se comportar de formas diferentes, dependendo de como este elemento é 
declarado, ou como está sendo utilizado, a partir da sua codificação. 
Questão 6: As afirmações a seguir falam sobre Threads. Analise-as e assinale a alternativa correta. 
 
A) Para acionarmos uma Thread, basta que invoquemos diretamente o método "run()" da classe que a implementa. 
B) Para que uma classe possa ser utilizada com Threads, ela deve herdar a classe Thread ou implementar a interface 
Runnable, além de possuir o método run() que é acionado ao darmos o "start" no Thread. 
C) A linguagem Java não permite o multiprocessamento a partir das Threads. 
D) A utilização de Threads permite validarmos métodos onde possuem exceções. 
E) As Threads permitem a criação de funções mais dinâmicas, que aliviam a carga de processamento dividindo suas 
tarefas, resultando em um código mais leve. 
 
 
Questão 7: Quando estamos na parte do desenvolvimento, precisamos testar as possíveis exceções de nossa 
aplicação, podendo utilizar-se de uma exceção genérica, que se comporta como qualquer exceção possível do 
sistema. 
Qual é esta exceção que foi descrita? 
 
A) RunTimeException 
B) Exception 
C) Throwable 
D) GenericException 
E) ExceptionCatcher 
 
A exceção genérica descrita na pergunta é provavelmente a exceção do tipo "Exception". 
A classe Exception é a classe base para todas as exceções em Java e é utilizada para representar uma exceção genérica. Quando não se sabe qual 
exceção específica pode ocorrer em um trecho de código, pode-se capturar a exceção genérica "Exception" para lidar com todas as exceções 
possíveis. 
 
Questão 8: Quando estamos aprendendo Java, primeiramente utilizamos o console como fonte de respostas a um 
programa, e, com o tempo, vamos aperfeiçoando nosso conhecimento e possibilitando o uso de outras ferramentas 
de resposta, sem utilizar o bom e velho console de sempre. 
Qual das alternativas a seguir nos permite criar uma janela onde possa ser exibida uma mensagem? 
 
A) Método “showInputDialog” da classe “JOptionPane” 
B) Método “insert” do objeto “in” da classe “System” 
C) Método “showResultMessage” da classe “JOptionPane” 
D) Método “showMessageDialog” da classe “JOptionPane” 
E) Método “showConfirmDialog” do objeto “JOptionPane” 
 
O método "showMessageDialog" da classe "JOptionPane" é utilizado para exibir uma caixa de diálogo modal que mostra uma mensagem ao usuário. 
Essa mensagem pode ser uma string simples, um objeto de componente ou uma mensagem formatada. 
 
Questão 9: O polimorfismo em variáveis nos permite utilizar o mesmo nome quando vamos declará-las em uma classe, 
facilitando o entendimento do código fonte e a sua utilização, podendo diferenciar variáveis globais e locais com o uso 
do "this.", como no exemplo a seguir. 
 
public class numero{ 
int num; 
public int getNum0{ 
return num; 
} 
Public voidsetNum(int num){ 
this.num = num; 
 
 } 
{ 
 
O this se refere a: 
A) À utilização de tipos de variáveis diferentes. 
B) Ao polimorfismo de sobrecarga. 
C) Ao atributo num da classe. 
D) Ao parâmetro num do método setNum. 
E) Ao modificador de acesso da variável num. 
 
No exemplo apresentado, o "this" se refere ao atributo "num" da classe "numero". O uso de "this" neste caso ajuda a distinguir entre a variável local 
"num" (que é o parâmetro do método "setNum") e o atributo "num" da classe "numero". 
 
Questão 10: Quando estamos implementando uma nova classe em nosso projeto, é possível verificar que cada classe 
que criamos tem em sua primeira linha o código "package com;”. 
Qual é o significado desta linha inicial? 
 
A) Significa que esta classe está importando o pacote de dependêndas do projeto. 
B) Significa que esta classe está em um pacote que possui o termo "com* (por exemplo "com.properties). 
C) Significa que esta classe está localizada em um pacote cujo nome é "com" 
D) Significa que esta classe utiliza métodos e atributos de outras classes cujo pacote é o com". 
E) Significa que esta classe está localizada em pacotes, independentemente de seu nome. 
 
Quando uma classe está localizada em um pacote, internamente, na classe, essa situação precisa estar definida (em código), identificando o pacote em 
que ela se localiza, por meio da palavra reservada "package". 
package nome.do.pacote; 
//significa que esta Classe pertence ao pacote "nome.do.pacote" 
Portanto, a declaração "package com;" significa que a classe está contida em um pacote chamado "com". Observe que isso não significa que o nome 
da classe é "com", mas sim que ela está contida em um pacote com esse nome. 
 
Questão 11: O código a seguir mostra a criação, o lançamento e a captura de exceções, e o resultado será apresentado 
natela do console quando o método "main()" da classe principal for executado. 
 
 
 
Ao término deste programa, o que será exibido na tela do console? 
A) XOFWJ 
B) JXPWFJ 
C) JXKOPJ 
D) JXOPWFJ 
E) XOPFJ 
(em uma prova passei direto com gabarito) 
 
Questão 12: Ao desenvolvermos uma aplicação, precisamos tomar cuidado com os erros de execução, fazendo com que 
nosso programa pare de funcionar a partir do momento que ocorre este erro, podendo ser uma falha de conexão ou 
algum dado inserido de maneira incorreta. A fim de que nossa aplicação não pare simplesmente por ocorrer este erro, 
qual é a solução mais adequada para seu tratamento? 
 
A) Criar um padrão que é colocado caso o tipo de dado não seja inserido ou mal inserido. 
B) Utilizar condições if-else para filtrar qualquer incoerência. 
C Criar sub-rotinas que verificam a integridade dos dados. 
D) Utilizar try-catch nos blocos onde é possível gerar um erro. 
E) Utilizar estruturas de switch-case, filtrando os possíveis erros e fazendo com que nosso programa consiga tratá-los. 
 
A utilização de try-catch é uma técnica de tratamento de exceções em Java que permite capturar e lidar com erros de execução que possam ocorrer 
durante a execução de um programa. 
 
Questão 13: Considerando um dos pilares da Orientação a Objeto, o polimorfismo é uma característica que define 
alguns elementos da linguagem orientada a objeto, fazendo que objetos possam ter formas diferentes de 
comportamento. Podemos afirmar que: 
 
A) O polimorfismo permite utilizar o mesmo nome de variável com tipos de dados diferentes. 
B) O polimorfismo permite que as classes consigam utilizar-se de outras, gerando heranças. 
C) O polimorfismo permite a utilização de métodos com o mesmo nome, mas com parâmetros iguais. 
D) O polimorfismo é a capacidade de um elemento possuir modificadores de acesso. 
E) O polimorfismo é a capacidade de um determinado elemento se comportar de formas diferentes. 
 
O Polimorfismo, no Java, é a capacidade de um determinado elemento se comportar de formas diferentes, dependendo de como este elemento é 
declarado, ou como está sendo utilizado, a partir da sua codificação. 
 
Questão 14: O encapsulamento é um dos pilares do paradigma da programação orientada a objeto, e um recurso que 
nos permite a "proteção" de atributos e métodos de uma classe, modificando a maneira de como trabalhamos com 
nossos métodos e atributos, porque: 
 
A) Permite um código mais seguro, porém implica na herança, pois restringe certos acessos a métodos e atributos pela 
subclasse. 
B) Utiliza um padrão de acesso, garantindo mais confiabilidade no código, quando utilizado em forma de plataforma 
web. 
C) Garante a proteção dos dados que estão sendo utilizados, sem eles é possível que ocorra perda de informação 
durante a manipulação dos dados. 
D) Permite controlar a manipulação de métodos e atributos de uma classe. 
E) Restringe o acesso a estes métodos e atributos sem uma validação. 
 
O encapsulamento permite que os atributos e métodos de uma classe sejam protegidos, ou seja, tornados privados, para que não possam ser 
acessados diretamente por outras partes do código fora da classe. Isso ajuda a controlar como os dados são manipulados, garantindo a integridade e 
consistência dos dados. O encapsulamento também permite que os métodos públicos sejam criados para acessar e manipular os dados privados, 
garantindo que a classe possa ser usada de forma segura e controlada. Portanto, a opção D é a resposta correta. 
 
Questão 15: Com relação as afirmações abaixo: 
 
1. As exceções que não obrigam o tratamento via estrutura try-catch são aquelas que herdam RuntimeException. 
II. O lançamento de Exceções (com o termo throw) gera uma interrupção na execução de um bloco de comandos. 
III. Ao lançarmos uma Exceção com o termo throw a partir de um método, este gerará uma interrupção de execução de 
bloco, Desta forma, se não tratarmos a Exceção ao chamarmos aquele método, o sistema volta ao status inicial de 
reinício do programa. 
IV. Em controle de Exceções, quando queremos obrigar o tratamento de Exceções toda vez que chamamos um 
determinado método, inserimos ao final da declaração daquele método o termo "throws" seguido do nome da 
Exceção que queremos invocar. 
V. É possível tratarmos Exceções específicas em uma estrutura try-catch. Neste caso, se a Exceção que ocorrer não for 
uma daquelas especificadas nas capturas (parte dos "catch"), a interrupção do programa e, consequentemente, do 
Servidor ocorrerá mesmo assim. 
 
Qual das afirmações acima está incorreta? 
 
A) l e V 
B) Il e iII 
C) Apenas II 
D) Ill e IV 
E) Apenas III 
 
Questão 16: Para implementarmos uma Thread, precisamos previamente estabelecer o seu método inicial, que vai fazer 
o programa rodar em paralelo com ouro, importando sua interface Runnable ou herdando a classe Thread e criando o 
objeto que vai trabalhar em conjunto. 
Para que este método realize o processamento paralelo, qual é o método que o inicia? 
 
A) start(); 
B) run(); 
C) initialize(); 
D) begin(); 
E) thread.run(); 
 
Uma vez que o objeto da Thread é criado e o método run() é implementado na classe que implementa a interface Runnable ou na própria classe que 
estende a classe Thread, chamamos o método start() na Thread criada para iniciar a execução do método run() em paralelo com a thread principal do 
programa. O método run() é o método que contém o código que será executado pela Thread em paralelo. 
 
Lembrando que não devemos chamar diretamente o método run() para executar uma Thread, pois isso executará o método na thread principal do 
programa, sem executar em paralelo com as outras threads. Para iniciar a execução paralela, devemos chamar o método start(). 
 
 
Questão 17: A partir de uma classe é possível gerar várias instâncias de um determinado tipo de projeto, e dentro dela 
podemos criar um método construtor que ele é acionado toda vez que um novo objeto é criado, podendo criar um 
objeto e já estabelecendo seus valores em uma única linha, podendo ter vários construtores em uma única classe. 
Olhandoo método construtor a seguir, como o Java sabe qual tipo de método construtor está sendo chamado? 
 
public class Pessoa { 
 
 // atributos da Classe Pessoa 
 public Pessoa(String s) { 
 nome = s; 
 } 
 
 public Pessoa(String s, int i) { 
 nome = s; 
 idade = i; 
 } 
 
 public Pessoa(String s, int i, double d) { 
 nome = s; 
 idade = i; 
 altura = d; 
 } 
} 
 
A) A partr do tipo de dado dos parâmetros, é possível fazer a distinção entre os tipos de métodos construtores 
existentes, podendo ser repetidos para criar objetos de formas diferentes. 
B) A distinção dos métodos construtores está na quantidade e no tipo de elementos que estão sendo usados 
como parâmetros na hora da criação do objeto. 
C) Para diferenciar qual método construtor que está sendo utilizado, é necessário renomear estes métodos na hora 
instanciar um objeto. 
D) Quando o objeto for instanciado, utiliza-se a assinatura do método construtor quando possui mais de um tipo 
de método construtor, indicando ao programa qual tipo de construtor está sendo utilizado. 
E) Quando o cibjeto é instanciado, ele busca todos os métodos construtores previamente criados, encaixando-o 
no que é adequado, independentemente da quantidade e do tipo de parâmetros, podendo haver mais de um 
método arstrunor com a mesma assinatura. 
Em Java, os métodos construtores de uma classe são diferenciados pelo número e tipos de parâmetros que eles recebem. Quando um objeto é criado 
usando um construtor, o Java verifica qual construtor corresponde à lista de argumentos passados na chamada do construtor. Dessa forma, o 
construtor correto é selecionado com base nos tipos de parâmetros que ele recebe. Não é necessário renomear os métodos construtores e nem há a 
possibilidade de ter métodos com a mesma assinatura em uma mesma classe. 
 
 
 Questão 18: Uma interface é uma entidade que se equivale a uma classe totalmente abstrata, mas não é considerada 
uma classe, podendo ter métodos e atributos, sendo que todos estes atributos serão atributos de estáticos e finais, e 
todo seu método é um método abstrato. Qual das alternativas a seguir descreve um benefício de se utilizar interfaces? 
 
A) Métodos implementados diretamente nas interfaces poderão ser invocados pelas classes que as implementam. 
B) A partir da implementação de uma interface, podemos criar várias sobrecargas de métodos, garantindo os múltiplos 
usos de suas características. 
C) Quando instanciar uma interface, podemos definir os valores de seus atributos a partir de invocação de seus 
métodos. 
D) Podem garantir que determinadas regras de negócio sejam implementadas nos sistemas construídos em Java, 
obrigando-se a implementação de métodos que definam essas regras ao sistema. 
E) As interfaces protegem os atributos das classes, definindo como eles devem ser atribuídos. 
 
A alternativa correta é D: 
Interfaces em Java são importantes para definir contratos entre as classes, obrigando-as a implementar os métodos especificados pela interface. Isso 
garante que as classes implementadoras cumpram com as regras de negócio estabelecidas na interface, sem a necessidade de saber a implementação 
específica de cada uma. Dessa forma, interfaces ajudam a garantir a coerência e a integridade do código, além de permitirem a criação de código mais 
modular e reutilizável. As demais alternativas estão incorretas. 
>>>Também consta essa informação na página 27 do slide unidade III 
 
Questão 19: As estruturas de repetição permitem que determinado bloco de instruções sejam executadas um número 
finito de vezes, realizando instruções o quanto for necessário; dentre eles, temos os laços de repetição 
"for" e "while", e sobre eles, podemos afirmar que: 
 
A) Uma estrutura de repetição é aquela que é controlada por uma condição mutável que se adapta às 
necessidades de repetição de um bloco de instruções. 
B) A estrutura "for” de repetição contém uma variável de controle, em que ele é sempre verificado através de uma 
comparação que acontece antes da execução de uma nova iteração. 
C) A estrutura "while de repetição é verificada apenas no final da execução de uma iteração; assim, é necessário 
lembrar que este laço de repetição sempre vai executar uma vez a mais. 
D) Independentemente do laço de repetição utilizado, não é preciso criar uma condição na qual ele verifica se é 
necessário fazer uma nova iteração, possibilitando o uso do comando "break" para interromper a repetição. 
E) Sempre é possível realizar a conversão entre estruturas de repetição "for" para uma "while", mas uma instrução 
a para uma estrutura "while não pode ser convertida em uma instrução "for". 
Explicação: 
 
A opção A está correta na definição geral de estruturas de repetição, que são controladas por uma condição mutável. 
 
A opção B está correta, pois a estrutura de repetição "for" contém uma variável de controle que é verificada por uma comparação antes da 
execução de cada nova iteração. 
 
A opção C está incorreta, pois a estrutura "while" é verificada no início de cada iteração, e não no final. Além disso, a condição de verificação deve ser 
definida de forma apropriada para evitar que o laço execute uma vez a mais. 
 
A opção D está incorreta, pois o uso do comando "break" pode interromper a execução de um laço de repetição antes que ele atinja a condição de 
término, mas não elimina a necessidade de definir uma condição de término apropriada. 
 
A opção E está incorreta, pois é sempre possível converter uma estrutura "for" para uma "while" ou vice-versa, desde que a condição de término e a 
lógica de execução sejam mantidas. 
 
Questão 20: Quando finalizamos a criação de uma classe, contendo seus métodos e atributos, precisamos lembrar de 
instanciá-la (no caso, criar um objeto a partir dela) para conseguir utilizá-la. Para a instanciação do objeto, é necessário 
seguir uma sintaxe; esta sintaxe é exibida na alternativa: 
 
A) nomeObjeto = new NomeClasse(); 
B) NomeClasse = new nomeObjeto (NomeClasse()); 
C) NomeClasse nomeObjeto = new NomeClasse(); 
D) nomeObjeto = new nomeObjeto(); 
E) NomeClasse = nomeObjeto (new NomeClasse); 
Slide 19 unidade I 
 
 
Questão 21: Em um sistema de mercado, existe uma ArrayList que é responsável por listar todos os objetos já 
cadastrados em uma única lista, facilitando a visualização dos produtos cadastrados. O código a seguir mostra como 
esta lista está sendo preenchida. 
 
public void listarProdutos(ArrayList estoque){ 
 
for(int i=0; i < estoque.size(); i++){ 
Produto p = __________________; 
//... demais ações 
} 
 
} 
Complete a lacuna com o comando correto para pegar o objeto de um ArrayList de um produto. 
 
 
A) (Produto) estoque 
B) estoque.get(i) >>>>> 
C) estoque.getByld(i); 
D) estoque.produto(i) 
E) produto.get(estoque.retrieve (i)) 
 
Questão 21: Em algumas situações, quando vamos desenvolver uma solução em software, podemos verificar que uma 
classe pode nunca ser instanciada; isso pode ser pelo fato de que esta classe sozinha não encaixe no problema 
abordado, mas a partir dela é possível gerar variações especificas com herança, sendo mais eficaz torná-la uma classe 
abstrata. Contudo, quando utilizamos uma classe abstrata, precisamos lembrar que: 
 
A) todos seus métodos abstratos deverão ser implementados nas subclasses que a herda. 
B) por essa classe ser abstrata, as classes que herdam não deixam instanciar objetos delas. 
C) esta classe, por ser abstrata, não deixa implementar métodos, somente sua assinatura. 
D) impossibilita o uso do polimorfismo, por não ser possível alterar o comportamento dos métodos. 
E) limita a classe inteira a utilizar o modificador de acesso "public". 
 
A resposta correta é a opção A) todos seus métodos abstratos deverão ser implementados nas subclasses que a herdam. Quando uma classe é 
declarada como abstrata, isso significa que ela não pode ser instanciada diretamente, apenas por meio de suassubclasses. Além disso, uma classe 
abstrata pode conter métodos abstratos, que não possuem implementação na classe abstrata, mas devem ser implementados nas suas subclasses 
concretas. Essa é uma forma de garantir que todas as subclasses tenham uma implementação para esses métodos, e assim permitir o polimorfismo. 
As outras opções estão incorretas: 
B) As classes que herdam uma classe abstrata podem ser instanciadas normalmente, desde que não sejam abstratas. 
C) Uma classe abstrata pode ter métodos implementados, mas também pode ter métodos abstratos. 
D) Pelo contrário, a utilização de classes abstratas é importante para permitir o polimorfismo. 
E) O modificador de acesso "public" não é limitado a classes abstratas, podendo ser utilizado por qualquer classe. 
 
Questão 22: 
 
Considere os atributos a seguir: 
 
Public int x= 17, y=3, z=8; 
Public double j= 3.15, k= 1.73; 
Public string s = "80”; 
 
Qual das seguintes operações não pode ser realizada? 
 
A) int a = (int) s; 
B) double j= (int) z; 
C) double w = j + Double.parseDouble(s); 
D) float z = (float) x + Float.parseFloat(s) ; 
E) int a = Integer.parselnt(s); 
 
A resposta correta é a opção A) int a = (int) s;. Isso ocorre porque a variável "s" é uma string e não pode ser convertida diretamente para um tipo 
inteiro. Para realizar essa conversão, seria necessário utilizar o método Integer.parseInt(s), como na opção E). Todas as outras opções estão corretas e 
podem ser realizadas, com as conversões sendo feitas corretamente. 
 
 
Questão 23: Uma interface é uma entidade que se equivale a uma classe totalmente abstrata, mas não é considerada 
uma classe, podendo ter métodos e atributos, sendo que todos estes atributos serão atributos de estáticos e finais, e 
todo seu método é um método abstrato. 
Qual das alternativas a seguir descreve um benefício de se utilizar interfaces? 
 
A) Métodos implementados diretamente nas interfaces poderão ser invocados pelas classes que as implementam. 
B) A partir da implementação de uma interface, podemos criar várias sobrecargas de métodos, garantindo os múltiplos 
usos de suas características 
C) Quando instanciar uma interface podemos definir os valores de seus atributos a partir de uma invocação de seus 
métodos 
D) Podem garantir que determinadas regras de negócio segam implementadas nos sistemas construídos em Java, 
obrigando-se a implementação de métodos que definam essas regras ao sistema 
E) As interfaces protegem os atributos das classes, definindo como eles devem ser atribuídos. 
 
 
A alternativa D é a correta. Uma das vantagens de se utilizar interfaces é a possibilidade de garantir que determinadas regras de negócio sejam 
implementadas nas classes que as implementam, obrigando a implementação de métodos que definam essas regras no sistema. As interfaces 
fornecem um contrato que as classes que as implementam devem seguir, garantindo a consistência e a integridade do sistema. As outras alternativas 
apresentam informações incorretas ou incompletas sobre as interfaces. 
 
Questão 24: As afirmações a seguir se referem às estruturas de condicionais. Analise estas afirmações e assinale 
a alternativa correta. 
 
A) A estrutura "switch - case" possui uma funcionalidade "default que é equivalente ao bloco 'else" da estrutura "if - 
else", de modo que o valor somente será executado se todas as alternativas previamente estabelecidas dentro desta 
estrutura resultarem em falso. 
B) A estrutura "if - else não permite a comparação de lógicas de igualdade, sendo necessário utilizar um valor 
aproximado ou utilizar-se da estrutura "switch - case 
C) A estrutura "if - else iP possui um limite de possíveis comparações; caso ele atinja este limite, é necessário iniciar 
outra estrutura, não sendo possível ultrapassar este valor padrão. 
D) A estrutura "switch - case é uma estrutura condicional que apenas atende a um tipo de condição, não sendo possivel 
realizar vários tipos de condições de um mesmo parâmetro. 
E) A estrutura "if - else", mesmo que possua apenas uma única linha, necessita que se estabeleçam os blocos com 
chaves ((_ bloco.)). 
 
A alternativa correta é a letra A) A estrutura "switch - case" possui uma funcionalidade "default" que é equivalente ao bloco 'else" da estrutura "if - 
else", de modo que o valor somente será executado se todas as alternativas previamente estabelecidas dentro desta estrutura resultarem em falso. 
 
As demais afirmações estão incorretas. Na estrutura "if - else" é possível comparar lógicas de igualdade utilizando o operador "==". A estrutura "if - 
else" não possui um limite de possíveis comparações e é possível estabelecer apenas uma única linha de código sem a necessidade de utilizar blocos 
com chaves. A estrutura "switch - case" permite realizar várias comparações de um mesmo parâmetro e não é limitada a apenas um tipo de condição. 
 
Questão 25: Num sistema de cartões de crédito, existe um método para verificar as compras parceladas chamado de 
parcelasLimite0*, que verifica o limite da conta na hora de liberar a compra parcelada e retorna um valor double 
Sabendo que este é um método público, a equipe de desenvolvimento o construiu de modo que ele lance uma exceção 
do tipo "Exception" caso se trabalhe com compras maiores que o limite do cartão. 
Qual das alternativas a seguir demonstra uma declaração do método, de forma que obriga o tratamento com 
"try-catch" sempre que este método for utilizado por outras classes? 
 
A) public double parcelasLimite) throws RuntimeError {...} 
B) public double parcelasLimite (Exception e){...} 
C) public double parcelasLimite(){...} 
D) public exception parcelasLimite0) throw RuntimeException {...} 
E) public double parcelasLimite0 throws Exception {...} 
 
 
 
 
Questão 26: Analise as afirmações a seguir e assinale a alternativa correta: 
 
I. A criação de um objeto (no caso, instanciá-lo) é feita a partir de um molde contendo as informações necessárias 
(métodos e atributos) previamente estabelecidas no programa fonte. 
II. Para iniciar-se a execução de um programa Java, é necessário que ele possua uma classe main; ela é responsavel por 
iniciar a execução do programa, sendo necessário existir em todas as classes que serão inicializadas junto a 
aplicação. 
II. Ao utilizarmos objetos como parâmetros, não conseguimos distinguir qual parte de sua informação estamos 
utilizando, pois dentro de um objeto podemos ter uma variedade de tipos de dados além de seus dados previamente 
guardados por isso é recomendado retirar um valor de dentro do objeto para depois utilizá-lo. 
IV. Para instanciar uma classe, é necessário que os métodos e atributos estejam previamente estabelecidos pois o Java 
não permite a instanciação de um molde vazio, o que gera erros de compilação. 
V. O método main é responsável pela execução do programa; sem ele, o Java não sabe onde o programa começa. Este 
método é necessário em apenas uma classe que indica onde o programa vai inicializar e quais métodos serão 
necessários para a inicialização do programa. 
 
Quais afirmações estão corretas? 
 
Resposta: I e V 
 
As afirmações II e V apresentam informações semelhantes, mas a afirmação II está incompleta e incorreta. A afirmação III é incorreta, pois é possível 
distinguir quais partes de um objeto são utilizadas como parâmetros, desde que sejam passados como argumentos apenas os atributos ou métodos 
relevantes. As afirmações IV está incorreta, pois a instância de um objeto pode ser feita mesmo que seus atributos e métodos estejam vazios. 
 
Questão 27: Seguindo as regras de promoção (promotion) de tipos de dados, as linhas a seguir mostram alguns blocos 
de código que utilizam casting. Qual das alternativas demonstra um comando que vai gerar um erro de compilação? 
 
long a1 = 10L; 
float a2 = 3,15; 
double a3 = 9.8; 
 
A) Long x = al + (int) a3: 
B) Double x = a1 + a2 + a3; 
C Int x = (long)a3 + a1; 
D) Int x = (int) a2 - (int)a3; 
E) Float x = a1 + a2; 
 
A resposta correta é a alternativa E) Float x = a1 + a2; , pois ela tenta somar um valor do tipo long com um valor do tipo float diretamente, sem utilizar 
o casting para promover o tipo do valor long para float. Isso vai gerar um erro de compilação, pois a soma entre valores de tipos diferentes não é 
permitida em Java sem que haja uma promoção de tipo explícita através do casting. As demais alternativas estão corretas em relação às regras de 
promoção de tipos de dados em Java. 
 
Questão 28: Em Java, podemos concatenar as strings, juntando seu conteúdo em um único lugar ou misturando ele 
com o texto; um exemplo de sua concatenação pode ser visto na alternativa: 
 
A) textoProduto = nomeProduto; 
B) textoNomeCompleto = + primeiroNome + sobrenome; 
C) textoPromocao += nomeCategoria - nomeProduto; 
D) System.out.printin(nomeCategoria,"na promocao"); 
E) System.out.println(“Usuario: ” +primeiroNome+” “+ sobreNome); 
 
Questão 29: Quando estamos criando uma solução em software, é possível misturar diversos tipos de valores 
numéricos, variando de um tipo int para um tipo float, em ocasiões que necessitamos de utilizar fórmulas matemáticas, 
por exemplo. Para Isso, o compilador tem um sistema chamado "promotion" que permite que um tipo de valor consiga 
elevar-se ao outro, seguindo uma ordem do menor para o maior tipo, que é apresentada na alternativa: 
 
A) Long – int – double – float; 
B) Float – long – int – double; 
C) Int – float – long – double; 
D) Int – long – float – double; 
E) Double – float – long – int; 
Em Java, quando ocorre uma operação envolvendo valores de diferentes tipos numéricos, o compilador faz a promoção automática dos 
tipos para o tipo mais abrangente, a fim de evitar perda de precisão ou de informações durante a operação. A ordem de promoção é: 
 
byte -> short -> int -> long -> float -> double 
 
Questão 30: Observe os métodos da clas se a seguir: 
 
public int metodo01 (String p) {...} 
public void metodo02 () {...} 
public double metodo03 (int p1, int p2) {...} 
public void metodo04 (String p) {...} 
public String metodo05 (double p) {...} 
 
Esta classe está instanciada com o nome de obj. Qual das alternativas mo stra uma codificação qu e vai gerar erros 
quando executada? 
 
A) int k = metodo01(“01230 ”); 
B) System.out.println(obj.me todo02()); 
C) obj.m etodo04(“Olá mundo” ); 
D) double k = m etodo03(5,80); 
E) int k = metodo05(7); 
 
O motivo é que o método metodo05 espera receber um valor do tipo double como argumento, mas na linha de código em questão está sendo 
passado um valor do tipo int (7). Como o Java não faz conversão automática de tipos nesse caso, o compilador irá gerar um erro de compilação 
indicando que o tipo de dado é incompatível. 
 
Questão 31: Uma equipe está desenvolvendo um jogo de luta na linguagem Java, onde foi criada a classe Lutador que 
será a que contém todas as características gerais de todos os "personagenslutadores deste jogo; portanto, sera herdada 
por todas as classes que representarão personagens. O desenvolvedor líder pretende exigir que todas as classes de 
"personagensLutadores contenham métodos de controles individuais e próprios e deverão ser implementados por cada 
um dos desenvolvedores de sua equipe ao criarem um personagem com seus comandos individuais. Qual é o recurso 
de programação que permite a forma mais organizada da exigência ocorrer automaticamente durante o 
desenvolvimento desta aplicação? 
 
 
A) Criar uma interface geral para ser implementada em todas as classes "personagenslutadores. 
B) Tornar a classe Lutador abstrata e definir os métodos de controle como abstratos nela. 
C) Criar todos os métodos de controle dentro da classe Lutador, gerando uma sobrecarga de métodos e de invocando-
os convenientemente dependendo do personagem selecionado. 
D) Encapsular as classes "personagensLutadores*, controlando seus métodos por setters e getters. 
E) Deixar cada programador por sua conta e risco, atendendo as documentaçõe necessárias. 
 
A) Criar uma interface geral para ser implementada em todas as classes "personagensLutadores" é a forma mais organizada de exigir que cada classe 
implemente seus próprios métodos de controle individuais e próprios. Uma interface define um conjunto de métodos que devem ser implementados 
pelas classes que a implementam, garantindo que cada classe de "personagemLutador" tenha seus próprios métodos de controle. Além disso, permite 
que a equipe de desenvolvimento possa trabalhar em paralelo, já que cada desenvolvedor pode implementar os métodos para seu próprio 
personagem sem interferir no trabalho dos outros. 
 
 
 
 
Continuação >> 
 
 
 
 
 
 
 
 
 
 
 
 
 
Questões discursivas 
Questão 1: Dado o array int[] k = {1, 2, 9, 7, 4, 5, 3} crie uma estrutura de repetição que seja capaz de exibir os valores 
deste array. 
 
Resposta: 
 
 
Questão 2: Ao desenvolver uma aplicação, precisamos desenvolver todas as ferramentas necessárias para resolver 
um problema. No entanto, existem vários tipos de bibliotecas, podendo ser desenvolvidas pela comunidade ou 
empresas, que facilitam a vida do programador, não precisando “reinventar a roda”; ou seja, é possível reutilizar vários 
métodos prontos. 
Mas o que seria esta biblioteca? 
 
Resposta: 
 
Uma biblioteca em programação é um conjunto de códigos pré-escritos que fornecem funções específicas para serem 
usadas em um programa. As bibliotecas são usadas para acelerar o processo de desenvolvimento, pois permitem que 
os desenvolvedores reutilizem código existente em vez de escrever tudo do zero. As bibliotecas podem incluir funções 
para lidar com entrada e saída, manipulação de dados, operações matemáticas, comunicação de rede e muito mais. As 
bibliotecas podem ser desenvolvidas por indivíduos, empresas ou organizações e podem ser disponibilizadas para uso 
público ou privado. As bibliotecas públicas geralmente são disponibilizadas como pacotes de software que podem ser 
baixados e usados por outros desenvolvedores em seus próprios projetos. 
Resumindo: Ela é uma coleção de subprogramas usados no desenvolvimento de softwares. A sua principal função é 
facilitar a programação, garantindo mais agilidade e menos erros. 
 
Questão 3: 
Depois de criarmos uma classe, com seus métodos e atributos, podemos instanciá-las como objetos e utilizá-los para 
seus respectivos fins, mas é possível certas ocasiões em que nosso objeto precise de algo para ser utilizado, podendo 
ser valores ou referências necessárias para utilizá-lo sem que seja necessário informar suas características depois de 
sua criação. 
Como criamos esta "pré-configuração" do nosso objeto? Explique. 
 
Resposta: 
 
Para criar uma pré-configuração de um objeto em Java, podemos utilizar o construtor da classe. O construtor é um 
método especial que é invocado quando um objeto da classe é criado, permitindo que a inicialização dos atributos do 
objeto seja feita de forma adequada. 
Ao criar uma classe, podemos definir um ou mais construtores para ela. O construtor deve ter o mesmo nome da 
classe e pode ter parâmetros que serão utilizados para inicializar os atributos do objeto. Por exemplo, se tivermos uma 
classe "Pessoa" com os atributos "nome" e "idade", podemos definir um construtor que recebe os valores desses 
atributos como parâmetros 
 
Questão 4: 
 
O encapsulamento nos permite dizer qual classes e/ou métodos pode ser acessado fora dela, permitindo um controle 
maior sobre o fluxo de processamento. 
Quais são estes modificadores de acesso? Quais são suas diferenças? 
 
Resposta: 
 
Em Java, existem 4 modificadores de acesso para atributos e métodos em uma classe: 
 
public: torna o atributo ou método acessível a partir de qualquer classe, sem restrições. 
protected: torna o atributo ou método acessível a partir de qualquer classe dentro do mesmo pacote ou por uma 
subclassefora do pacote, por meio de herança. 
private: torna o atributo ou método acessível somente dentro da própria classe, não podendo ser acessado 
diretamente por outras classes. 
(default) – ou sem modificador: fazendo com que sejam acessíveis somente por classes do mesmo pacote. 
 
A diferença principal entre esses modificadores de acesso é o nível de visibilidade que é permitido. Essa diferenciação 
de acesso ajuda a proteger o estado interno de uma classe, evitando que outras classes modifiquem o estado de 
maneira inesperada ou inapropriada. 
 
 
 
Questão 5 
 
O sistema operacional é capaz de realizar várias tarefas ao mesmo tempo, acionando vários recursos de maneira 
simultânea. O recurso em programação que permite esse multiprocessamento é chamado de Thread, que já é 
normalmente gerenciado pelo próprio sistema operacional. Dentro da linguagem de programação Java, existem duas 
maneiras de se trabalhar com uma Thread. 
 Quais são elas? 
 
Resposta: 
 
 - Usando herança: criamos uma classe que estende a classe Thread; 
 - Usando implementação de interface: criamos uma classe que implementa a 
interface Runnable. 
 
Questão 6 
 
Dentro da linguagem de programação orientada a objetos podemos usar modificadores de 
comportamento, que alteram a forma de se trabalhar com os elementos e, consequentemente, o comportamento do 
elemento na funcionalidade do sistema, sendo eles Static, Final e Abstract. 
 Quais são suas diferenças? 
 
Resposta: 
 
Static: indica que o elemento pertence à classe em vez de pertencer a cada instância da classe. Isso significa que todos 
os objetos criados a partir daquela classe compartilham o mesmo valor de uma variável estática, por exemplo. Além 
disso, métodos estáticos podem ser chamados diretamente pela classe, sem a necessidade de criar uma instância da 
classe. 
Final: indica que o elemento não pode ser alterado depois de inicializado. Isso significa que uma variável final terá seu 
valor definido apenas uma vez e não poderá ser alterada depois. Já um método final não pode ser sobrescrito pelas 
subclasses. 
 Abstract: indica que o elemento não possui uma implementação completa na classe em que é definido, deixando sua 
implementação para as subclasses. Uma classe abstrata não pode ser instanciada diretamente e pode conter métodos 
abstratos, que não têm implementação na classe abstrata e devem ser implementados pelas subclasses concretas. 
 
Questão 8 
 
Quando criamos uma Thread, é necessário criar o método run0, que vai indicar qual é a operação que está sendo 
realizada. Após codificado este método, é necessário instanciar o objeto que queremos que rode junto com nossa 
aplicação. A partir da classe "CalendarioHorario", implemente o método que inicia a Thread, independentemente se ela 
foi utilizada usando herança ou pela interface. 
 
 
 
Resposta: 
 
 
 
 
Ou 
 
 
 
Questão 9 
 
A utilização de sobrecarga de métodos nos permite manter uma facilidade na hora de utilizar um método, por utilizar o 
mesmo nome, mas com funções diferentes. Como o compilador consegue diferenciar um método do outro, já que 
ambos possuem o mesmo nome? 
 
Resposta: 
 
O compilador consegue diferenciar um método sobrecarregado do outro com base na sua lista de parâmetros. Na 
sobrecarga de métodos, os métodos possuem o mesmo nome, mas a lista de parâmetros é diferente. Dessa forma, 
quando um método é chamado, o compilador verifica a lista de parâmetros do método e escolhe o método correto com 
base nos argumentos passados na chamada do método. 
 
Questão 10 
 
Sua equipe foi alocada para um projeto em Java, de uma aplicação de vendas de varejo onde o usuário consiga ver os 
produtos e fazer sua solicitação online a partir de um menu. Como este programa ainda está em fase de testes, utilize a 
estrutura "switch-case" para criar um menu de testes, onde o nome da variável é opc, e em cada "case" a opção será de 
1 até 3, chamando os métodos varejo.procura(), varejo. verCarrinho() e varejo.comprar(). 
 
Resposta: 
 
 
 
Questão 11: 
 
Ao desenvolver uma aplicação usando o paradigma de Orientação a Objetos, estamos aproximando o mundo lógico 
da programação e o mundo em que vivemos. No entanto, para criar estas representações chamadas de objetos, 
precisamos de uma classe. 
O que é uma classe e o que ela contém? 
 
Resposta: 
 
Uma classe é um modelo ou plano para criar objetos em um programa de computador. Ela contém um conjunto de 
atributos, que representam as características dos objetos que serão criados a partir daquela classe, e métodos, que 
representam o comportamento ou ações que esses objetos poderão realizar.

Outros materiais