Prévia do material em texto
<p>Avaliação final da disciplina</p><p>1</p><p>2</p><p>Seu trabalho foi salvo e enviado</p><p>Por escrito 29 de junho de 2024 18:55 – 29 de junho de 2024 19:05 • Tentativa 1 de 1</p><p>Pontuação da tentativa 10 / 10 - 100%</p><p>Nota geral (Maior tentativa) 10 / 10 - 100%</p><p>Concluído</p><p>O questionário foi enviado com êxito.</p><p>Pergunta 1 (1 ponto) Salvo</p><p>Próxima página Página 1 de 10</p><p>GE-POO-PR-QME-10</p><p>Durante nossos estudos vimos que uma exceção é um evento inesperado que</p><p>pode acontecer durante a execução de um programa, interrompendo seu fluxo</p><p>normal de execução. Em Java, podemos tratar exceções usando um bloco try-</p><p>catch. O código abaixo mostra um exemplo de uso desse bloco:</p><p>Tendo como referência esse exemplo, assinale a alternativa INCORRETA:</p><p>Página anterior</p><p>Próxima página Página 1 de 10</p><p>Enviar questionário 1 de 10 perguntas salvas</p><p>Na construção desse programa colocamos dentro do bloco "try" os</p><p>comandos que podem levantar uma excecão. Caso seja levantada uma</p><p>exceção do tipo "NullPointerExcepcion", ela será capturada pelo "catch" e</p><p>será exibida na tela a mensagem "Foi levantada uma exceção!"</p><p>Se removermos desse código as instruções "try" (linha 16) e "catch" (linhas</p><p>21 a 24) o código vai compilar e executar. O tratamento com try-catch,</p><p>nesse caso, é opcional porque "NullPointerException" é uma exceção não</p><p>verificada, e exceções desse tipo não precisam necessariamente serem</p><p>tratadas.</p><p>Esse código, quando executado, vai levantar uma exceção do tipo</p><p>"NullPointerException".</p><p>A chamada ao método "printStackTrace", na linha 23, é usada para mostrar</p><p>na tela a exceção que foi levantada durante a execução do programa.</p><p>Esse código, quando executado, exibe a mensagem "Nome da pessoa: Luiz</p><p>Reginaldo"</p><p>Página anterior</p><p>Pergunta 2 (1 ponto) Salvo</p><p>Página anterior Próxima página Página 2 de 10</p><p>GE-POO-PR-QME-01</p><p>Os operadores lógicos são utilizados nos comandos "if", "while" e "for" para</p><p>construir condições que contêm mais de uma expressão lógica. Isso é feito, por</p><p>exemplo, no seguinte comando "if":</p><p>if( (a > 18) && (a < 40) ) System.out.println( "Adulto" );</p><p>Nesse caso, usamos o operador "&&" para juntar as expressões lógicas "(a > 18)"</p><p>e "(a < 40)". A condição é verdadeira quando o valor de "a" for maior que 18 e ao</p><p>mesmo tempo menor que 40.</p><p>A tabela abaixo mostra o resultado produzido pelos operadores lógicos "não" (!),</p><p>"e" (&&) e "ou" (||). Na tabela, "A" e "B" são as entradas (ou operandos)</p><p>informadas para o operador lógico, e "X" é o resultado da operação, onde "V" é</p><p>"verdadeiro" e "F" falso.</p><p>A respeito desse tema, assinale a alternativa INCORRETA.</p><p>Página anterior Próxima página Página 2 de 10</p><p>Enviar questionário 2 de 10 perguntas salvas</p><p>O resultado de uma operação "ou" é sempre verdadeiro quando pelo menos</p><p>um dos operandos for verdadeiro.</p><p>O operador "não" é também chamado de inversor, porque ele inverte o valor</p><p>verdade de seu operando.</p><p>O resultado de uma operação "ou" é falso quando algum dos operandos for</p><p>falso.</p><p>O resultado de uma operação "e" é sempre falso quando pelo menos um dos</p><p>operandos for falso.</p><p>O resultado de uma operação "e" só é verdadeiro quando ambos os</p><p>operandos forem verdadeiros.</p><p>Pergunta 3 (1 ponto) Salvo</p><p>Página anterior Próxima página Página 3 de 10</p><p>GE-POO-PR-QME-07</p><p>Sabemos que, em Java, todas as classes são filhas diretas ou indiretas da classe</p><p>"Object". Como consequência disso, todas classes em Java herdam os métodos</p><p>definidos em "Object". Um desses métodos é o método "equals", que é utilizado</p><p>em diversas classes da API Java (como ArrayList, por exemplo), para determinar</p><p>se dois objetos são "iguais". O código abaixo mostra uma classe "Pedido" que</p><p>sobrescreve o método "equals" de "Object", provendo para ele uma nova</p><p>implementação.</p><p>Tendo como referência esse exemplo, assinale a alternativa INCORRETA:</p><p>Página anterior Próxima página Página 3 de 10</p><p>Enviar questionário 3 de 10 perguntas salvas</p><p>Estamos criando, nas linhas 23 e 26, dois objetos do tipo "Pedido". Como</p><p>estamos atribuindo a eles o mesmo "id" (linhas 24 e 27), o resultado da</p><p>comparação na linha 30 (p1.equals(p2)) será "true".</p><p>Na implementação do método "equals", que aparece entre as linhas 13 e 17,</p><p>estamos dizendo que dois pedidos são "iguais" se o valor armazenando no</p><p>atributo "idPedido" de ambos for o mesmo.</p><p>Pela implementação do método "equals", que aparece entre as linhas 13 a</p><p>17, podemos dizer que se um objeto do tipo "Pedido" for comparado com</p><p>um objeto de outro tipo, por exemplo, um objeto do tipo "String", o</p><p>resultado do "equals" será "false".</p><p>Estamos criando, nas linhas 23 e 26, dois objetos do tipo "Pedido". Como</p><p>estamos atribuindo a eles o mesmo "id" (linhas 24 e 27), o resultado da</p><p>comparação na linha 29 (p1 == p2) será "true".</p><p>O método "equals" recebe um parâmetro do tipo "Object", porque é dessa</p><p>maneira que está definido na classe "Object". Assim, para podermos</p><p>comparar o parâmetro do método com a instância de "Pedido" na qual o</p><p>"equals" foi chamado, devemos "convertê-lo" de "Object" para "Pedido". Isso</p><p>é feito na linha 15, usando o operador de cast "(Pedido)".</p><p>Pergunta 4 (1 ponto) Salvo</p><p>Página anterior Próxima página Página 4 de 10</p><p>GE-POO-PR-QME-09</p><p>O polimorfismo permite que objetos de diferentes tipos possam ser tratados de</p><p>uma mesma maneira. O código abaixo mostra um exemplo do uso do</p><p>polimorfismo:</p><p>Aqui, temos na linha 26 um método que recebe como parâmetro um objeto do</p><p>tipo "Pagamento". Fazendo uso do polimorfismo, podemos passar para esse</p><p>método não apenas objetos do tipo "Pagamento", mas também qualquer objeto</p><p>que implementa essa interface.</p><p>Tendo como referência esse código, assinale a alternativa INCORRETA:</p><p>Página anterior Próxima página Página 4 de 10</p><p>Nesse exemplo, podemos trocar a palavra reservada "implements" por</p><p>"extends", nas linhas 5 e 12. Ao fazer isso o programa continuará</p><p>funcionando como antes, produzindo os mesmos resultados.</p><p>Nesse exemplo temos duas classes, "PagamentoComCartao" e</p><p>"PagamentoComBoleto", e essas duas classes implementam a interface</p><p>"Pagamento". Esse relacionamento está evidenciado, no código, pela</p><p>declaração "implements Pagamento".</p><p>Não existe, nesse exemplo, uma herança entre "Pagamento",</p><p>"PagamentoComCartao" e "PagamentoComBoleto". Isso porque</p><p>"Pagamento" é uma interface, e a herança ocorre apenas entre classes.</p><p>Na sua forma usual, uma interface é criada para definir métodos que devem</p><p>ser implementados (sobrescritos) por classes que implementam aquela</p><p>interface. É que ocorre nesse exemplo. A interface "Pagamento" define, na</p><p>linha 2, o método "getTaxaUso", que precisa ser sobrescrito pelas classes</p><p>que implementam essa interface. Isso é feito pelas classes</p><p>"PagamentoComCartao" e "PagamentoComBoleto" nas linhas 7 e 14,</p><p>respectivamente.</p><p>Existe, entre uma interface e as classes que implementam essa interface, um</p><p>relacionamento do tipo "é um", assim como ocorre entre uma classe e suas</p><p>subclasses. Por isso podemos usar a interface "Pagamento" como parâmetro</p><p>no método "imprime" (linha 26) e chamar esse método passando para ele</p><p>objetos do tipo "PagamentoComCartao" e "PagamentoComBoleto" (linhas</p><p>22 e 23).</p><p>Enviar questionário 4 de 10 perguntas salvas</p><p>Pergunta 5 (1 ponto) Salvo</p><p>Página anterior Próxima página Página 5 de 10</p><p>GE-POO-PR-QME-06</p><p>Por meio da herança podemos criar novas classes, aproveitando as</p><p>funcionalidades de classes já existentes. O código abaixo mostra um exemplo de</p><p>herança:</p><p>Aqui, por simplicidade, os métodos "get" e "set" não estão sendo exibidos.</p><p>Tendo como referência esse exemplo, assinale a alternativa INCORRETA:</p><p>Página anterior Próxima página Página 5 de 10</p><p>Enviar questionário 5 de 10 perguntas salvas</p><p>De acordo com a terminologia da Programação Orientada a Objetos</p><p>podemos dizer que, nesse exemplo, "PagamentoComCartao" e</p><p>"PagamentoComBoleto" são subclasses. A classe "Pagamento", por sua vez,</p><p>é uma superclasse.</p><p>De acordo com a terminologia da Programação Orientada a ObjetosDe acordo com a terminologia da Programação Orientada a Objetos</p><p>podemos dizer que, nesse exemplo, "PagamentoComCartao" epodemos dizer que, nesse exemplo, "PagamentoComCartao" e</p><p>"PagamentoComBoleto" são classes filhas. A classe "Pagamento", por sua"PagamentoComBoleto" são classes filhas. A classe "Pagamento", por sua</p><p>vez, é uma classe derivada.vez, é uma classe derivada.</p><p>De acordo com a terminologia da Programação Orientada a Objetos</p><p>podemos dizer que, nesse exemplo, a classe "Pagamento" é uma</p><p>generalização das classes "PagamentoComCartao" e</p><p>"PagamentoComBoleto".</p><p>Podemos dizer, nesse exemplo, que a relação de herança implica no fato de</p><p>que "PagamentoComCartao" é um "Pagamento", assim como</p><p>"PagamentoComBoleto" é um "Pagamento".</p><p>De acordo com a terminologia da Programação Orientada a Objetos</p><p>podemos dizer que, nesse exemplo, as classes "PagamentoComCartao" e</p><p>"PagamentoComBoleto" são especializações da classe "Pagamento".</p><p>Pergunta 6 (1 ponto) Salvo</p><p>Página anterior Próxima página Página 6 de 10</p><p>GE-POO-PR-QME-02</p><p>Quando estamos escrevendo um programa em Java usamos comandos de</p><p>repetição para executar diversas vezes um mesmo conjunto de instruções. Para</p><p>isso podemos usar os comandos "while", "do-while", ou ainda o comando "for". O</p><p>código abaixo mostra um exemplo de utilização desse último comando:</p><p>Tendo como referência esse exemplo, assinale a alternativa INCORRETA:</p><p>Página anterior Próxima página Página 6 de 10</p><p>Enviar questionário 6 de 10 perguntas salvas</p><p>Quando esse programa for executado a variável contadora assumirá os</p><p>valores 10, 12, 14, 16, 18 e 20.</p><p>Esse código, quando executado, mostra na tela o seguinte resultado: "10 11Esse código, quando executado, mostra na tela o seguinte resultado: "10 11</p><p>12 13 14 15 16 17 18 19 20"12 13 14 15 16 17 18 19 20"</p><p>No comando "for", quando queremos tratar um intervalo de valores,</p><p>informamos na parte de "inicialização" o valor inicial de uma variável</p><p>contadora, e na parte da "condição" o valor final que será assumido por essa</p><p>variável. Nesse exemplo o valor inicial é 10 e valor final é 20.</p><p>No comando "for" informamos na parte de "incremento" como o valor da</p><p>variável contadora será atualizado após a execução dos comandos</p><p>controlados que estão dentro da repetição. Nesse exemplo o valor da</p><p>variável contadora é aumentado de 2 a cada repetição.</p><p>O comando "for" é naturalmente utilizado quando conhecemos o número de</p><p>repetições, ou ainda quando queremos tratar um intervalo de valores. Nesse</p><p>exemplo, em particular, estamos usando o comando "for" para tratar valores</p><p>no intervalo de 10 a 20.</p><p>Pergunta 7 (1 ponto) Salvo</p><p>Página anterior Próxima página Página 7 de 10</p><p>GE-POO-PR-QME-04</p><p>Tanto na programação estruturada, quanto na programação orientada a objetos,</p><p>podemos usar funções para organizar melhor nosso código, separar</p><p>responsabilidades, permitir o reuso e evitar a repetição de comandos, entre</p><p>outros benefícios. Na programação orientada a objetos, no entanto, chamamos</p><p>as funções de "métodos". O código abaixo mostra um exemplo que aborda esse</p><p>tema:</p><p>Tendo como referência esse exemplo, assinale a alternativa INCORRETA:</p><p>Página anterior Próxima página Página 7 de 10</p><p>Enviar questionário 7 de 10 perguntas salvas</p><p>O método "maior" recebe como entrada dois valores e produz como saída</p><p>um único valor, que corresponde ao maior dos valores informados como</p><p>entrada.</p><p>O método "isPar" recebe como entrada um único valor e produz como saída</p><p>o resultado "true" quando o valor é par e "false" quando o valor é ímpar.</p><p>Temos nessa classe os métodos "main", "maior" e "isPar". Os dois últimos</p><p>métodos são declarados como "static" para poderem ser chamados do</p><p>método "main", que é "static".</p><p>Nesse código, se removermos o modificador "static" dos métodos "maior" eNesse código, se removermos o modificador "static" dos métodos "maior" e</p><p>"menor", o programa continuará funcionando."menor", o programa continuará funcionando</p><p>Na linha 12 desse exemplo estamos usando uma expressão condicional.</p><p>Essa expressão, no entanto, poderia ser substituída por um comando "if"</p><p>equivalente.</p><p>Pergunta 8 (1 ponto) Salvo</p><p>Página anterior Próxima página Página 8 de 10</p><p>GE-POO-PR-QME-08</p><p>O polimorfismo permite que objetos de diferentes tipos possam ser tratados de</p><p>uma mesma maneira. O código abaixo mostra um exemplo do uso do</p><p>polimorfismo:</p><p>Aqui, temos na linha 26 um método que recebe como parâmetro um objeto do</p><p>tipo "Pagamento". Fazendo uso do polimorfismo, podemos passar para esse</p><p>método não apenas objetos do tipo "Pagamento", mas também objetos de</p><p>qualquer uma de suas subclasses.</p><p>Tendo como referência esse código, assinale a alternativa INCORRETA:</p><p>Página anterior Próxima página Página 8 de 10</p><p>Enviar questionário 8 de 10 perguntas salvas</p><p>Na linha 22 estamos criando um objeto do tipo "PagamentoComCartao", e</p><p>passando esse objeto para o método "imprime". Essa chamada está correta</p><p>porque "PagamentoComCartao" é uma subclasse de "Pagamento", e pelo</p><p>polimorfismo podemos passar um objeto do tipo "PagamentoComCartao"</p><p>onde é esperado um objeto do tipo "Pagamento".</p><p>A chamada ao método "imprime", na linha 22, vai mostrar na tela o valor 5. AA chamada ao método "imprime", na linha 22, vai mostrar na tela o valor 5. A</p><p>chamada ao método "imprime", na linha 23, vai mostrar na tela o valor 10.chamada ao método "imprime", na linha 23, vai mostrar na tela o valor 10.</p><p>O método "getTaxaUso", declarado na classe "Pagamento", está sendo</p><p>sobreposto na classe "PagamentoComCartao" na linha 7, e na classe</p><p>"PagamentoComBoleto" na linha 14.</p><p>O método "getTaxaUso" foi declarado como "abstract" em "Pagamento".</p><p>Quando declaramos um método como "abstract", em Java, ele não pode ter</p><p>corpo (ou seja, não pode ter { e }).</p><p>A classe "Pagamento", desse exemplo, não poderá ser diretamente</p><p>instanciada com "new" porque foi declarada como "abstract". Classes</p><p>abstratas, em Java, não podem ser instanciadas.</p><p>Pergunta 9 (1 ponto) Salvo</p><p>Página anterior Próxima página Página 9 de 10</p><p>GE-POO-PR-QME-05</p><p>O código abaixo mostra a declaração de uma classe "Produto". Essa classe, por</p><p>sua vez, contém atributos para armazenar os seguintes dados: um identificador</p><p>do produto, o nome do produto e o preço do produto.</p><p>Os atributos de uma classe são acessados com dois propósitos: armazenar ali um</p><p>valor, ou obter o valor armazenado no atributo para se fazer algo com ele. Essas</p><p>duas operações, por sua vez, podem ser efetuadas com o auxílio de métodos</p><p>acessores, que por padrão tem o nome de get(nome do atributo) e set(nome do</p><p>atributo).</p><p>Tendo como referência esse código, assinale a alternativa INCORRETA:</p><p>Página anterior Próxima página Página 9 de 10</p><p>Enviar questionário 9 de 10 perguntas salvas</p><p>Os métodos da classe são declarados como "public", e por isso podem ser</p><p>chamados por outras classes.</p><p>Por meio dos métodos "get" e "set" é possível obter e alterar o valor dos</p><p>atributos da classe.</p><p>Os atributos da classe são declarados como "private", e por isso não podem</p><p>ser diretamente referenciados por outras classes. Nesse caso, eles só podem</p><p>ser acessados por métodos da classe "Produto".</p><p>Essa classe foi escrita de acordo com o princípio do "encapsulamento". Ou</p><p>seja, os atributos da classe foram declarados privados e os métodos foram</p><p>declarados públicos.</p><p>Podemos alterar os atributos da classe de "private" para "public", eliminandoPodemos alterar os atributos da classe de "private" para "public", eliminando</p><p>assim os métodos acessores "get" e "set". Ao fazer isso, além de deixar aassim os métodos acessores "get" e "set". Ao fazer isso, além de deixar a</p><p>classe mais enxuta, estamos mantendo o princípio do "encapsulamento".classe mais enxuta, estamos mantendo o princípio do "encapsulamento".</p><p>Pergunta 10 (1 ponto) Salvo</p><p>Página anterior Página 10 de 10</p><p>GE-POO-PR-QME-03</p><p>Você foi encarregado de avaliar alguns candidatos para a vaga de programador</p><p>Java na empresa onde trabalha. Foi solicitado a eles escrever o seguinte código,</p><p>em Java:</p><p>Escreva um programa que:</p><p>a) Solicite ao usuário 10 números inteiros e armazene esses</p><p>números em um</p><p>vetor.</p><p>b) Percorra o vetor e, a partir dos valores armazenados, diga em que posição</p><p>está o menor valor.</p><p>O programa entregue por um candidato continha os seguintes trechos de</p><p>código:</p><p>I) // Declaração do vetor</p><p>int vetor[] = new int[10] ;</p><p>II) // Leitura dos elementos do vetor</p><p>Scanner in = new Scanner( System.in ) ;</p><p>for(int i= 0; i < vetor.length; i++) {</p><p>System.out.printf( "Entre com o elemento %d do vetor: ", i);</p><p>vetor[i] = in.nextInt() ;</p><p>}</p><p>III) // Determina a posicao do menor valor</p><p>int posicao = 0 ;</p><p>for(int i= 1; i < vetor.length; i++) {</p><p>if( vetor[i] < vetor[posicao] ) {</p><p>posicao = i ;</p><p>}</p><p>}</p><p>System.out.printf( "O menor elemento esta na posicao %d ", posicao) ;</p><p>Após analisar essa resposta, assinale a alternativa CORRETA:</p><p>Próxima página</p><p>Página anterior Página 10 de 10</p><p>Enviar questionário 10 de 10 perguntas salvas</p><p>Todos os trechos de código estão corretos.Todos os trechos de código estão corretos.</p><p>Todos os trechos de código estão incorretos.</p><p>Apenas os trechos de código I e II estão corretos.</p><p>Apenas os trechos de código I e III estão corretos.</p><p>Apenas os trechos de código II e III estão corretos.</p><p>Próxima página</p>