Logo Passei Direto
Buscar

Programação Orientada a Objetos - Avaliação Final - 100

Ferramentas de estudo

Questões resolvidas

Sabemos que, em Java, todas as classes são filhas diretas ou indiretas da classe 'Object'. Como consequência disso, todas classes em Java herdam os métodos definidos em 'Object'. Um desses métodos é o método 'equals', que é utilizado em diversas classes da API Java (como ArrayList, por exemplo), para determinar se dois objetos são 'iguais'. O código abaixo mostra uma classe 'Pedido' que sobrescreve o método 'equals' de 'Object', provendo para ele uma nova implementação. Tendo como referência esse exemplo, assinale a alternativa INCORRETA:
Estamos criando, nas linhas 23 e 26, dois objetos do tipo 'Pedido'. Como estamos atribuindo a eles o mesmo 'id' (linhas 24 e 27), o resultado da comparação na linha 30 (p1.equals(p2)) será 'true'.
Na implementação do método 'equals', que aparece entre as linhas 13 e 17, estamos dizendo que dois pedidos são 'iguais' se o valor armazenando no atributo 'idPedido' de ambos for o mesmo.
Pela implementação do método 'equals', que aparece entre as linhas 13 a 17, podemos dizer que se um objeto do tipo 'Pedido' for comparado com um objeto de outro tipo, por exemplo, um objeto do tipo 'String', o resultado do 'equals' será 'false'.
Estamos criando, nas linhas 23 e 26, dois objetos do tipo 'Pedido'. Como estamos atribuindo a eles o mesmo 'id' (linhas 24 e 27), o resultado da comparação na linha 29 (p1 == p2) será 'true'.
O método 'equals' recebe um parâmetro do tipo 'Object', porque é dessa maneira que está definido na classe 'Object'. Assim, para podermos comparar o parâmetro do método com a instância de 'Pedido' na qual o 'equals' foi chamado, devemos 'convertê-lo' de 'Object' para 'Pedido'. Isso é feito na linha 15, usando o operador de cast '(Pedido)'.
Pela implementação do método 'equals', que aparece entre as linhas 13 a 17, podemos dizer que se um objeto do tipo 'Pedido' for comparado com um objeto de outro tipo, por exemplo, um objeto do tipo 'String', o resultado do 'equals' será 'false'.

O polimorfismo permite que objetos de diferentes tipos possam ser tratados de uma mesma maneira. O código abaixo mostra um exemplo do uso do polimorfismo: Aqui, temos na linha 26 um método que recebe como parâmetro um objeto do tipo 'Pagamento'. Fazendo uso do polimorfismo, podemos passar para esse método não apenas objetos do tipo 'Pagamento', mas também qualquer objeto que implementa essa interface. Tendo como referência esse código, assinale a alternativa INCORRETA:
Nesse exemplo, podemos trocar a palavra reservada 'implements' por 'extends', nas linhas 5 e 12. Ao fazer isso o programa continuará funcionando como antes, produzindo os mesmos resultados.
Nesse exemplo temos duas classes, 'PagamentoComCartao' e 'PagamentoComBoleto', e essas duas classes implementam a interface 'Pagamento'. Esse relacionamento está evidenciado, no código, pela declaração 'implements Pagamento'.
Não existe, nesse exemplo, uma herança entre 'Pagamento', 'PagamentoComCartao' e 'PagamentoComBoleto'. Isso porque 'Pagamento' é uma interface, e a herança ocorre apenas entre classes.
Na sua forma usual, uma interface é criada para definir métodos que devem ser implementados (sobrescritos) por classes que implementam aquela interface. É que ocorre nesse exemplo. A interface 'Pagamento' define, na linha 2, o método 'getTaxaUso', que precisa ser sobrescrito pelas classes que implementam essa interface. Isso é feito pelas classes 'PagamentoComCartao' e 'PagamentoComBoleto' nas linhas 7 e 14, respectivamente.
Existe, entre uma interface e as classes que implementam essa interface, um relacionamento do tipo 'é um', assim como ocorre entre uma classe e suas subclasses. Por isso podemos usar a interface 'Pagamento' como parâmetro no método 'imprime' (linha 26) e chamar esse método passando para ele objetos do tipo 'PagamentoComCartao' e 'PagamentoComBoleto' (linhas 22 e 23).
Na sua forma usual, uma interface é criada para definir métodos que devem ser implementados (sobrescritos) por classes que implementam aquela interface. É que ocorre nesse exemplo. A interface 'Pagamento' define, na linha 2, o método 'getTaxaUso', que precisa ser sobrescrito pelas classes que implementam essa interface. Isso é feito pelas classes 'PagamentoComCartao' e 'PagamentoComBoleto' nas linhas 7 e 14, respectivamente.

Por meio da herança podemos criar novas classes, aproveitando as funcionalidades de classes já existentes. O código abaixo mostra um exemplo de herança: Aqui, por simplicidade, os métodos 'get' e 'set' não estão sendo exibidos. Tendo como referência esse exemplo, assinale a alternativa INCORRETA:
De acordo com a terminologia da Programação Orientada a Objetos podemos dizer que, nesse exemplo, 'PagamentoComCartao' e 'PagamentoComBoleto' são subclasses. A classe 'Pagamento', por sua vez, é uma superclasse.
De acordo com a terminologia da Programação Orientada a Objetos podemos dizer que, nesse exemplo, 'PagamentoComCartao' e 'PagamentoComBoleto' são subclasses. A classe 'Pagamento', por sua vez, é uma superclasse.

Tanto na programação estruturada, quanto na programação orientada a objetos, podemos usar funções para organizar melhor nosso código, separar responsabilidades, permitir o reuso e evitar a repetição de comandos, entre outros benefícios. Na programação orientada a objetos, no entanto, chamamos as funções de "métodos". O código abaixo mostra um exemplo que aborda esse tema:
Tendo como referência esse exemplo, assinale a alternativa INCORRETA:
O método "maior" recebe como entrada dois valores e produz como saída um único valor, que corresponde ao maior dos valores informados como entrada.
O método "isPar" recebe como entrada um único valor e produz como saída o resultado "true" quando o valor é par e "false" quando o valor é ímpar.
Temos nessa classe os métodos "main", "maior" e "isPar". Os dois últimos métodos são declarados como "static" para poderem ser chamados do método "main", que é "static".
Nesse código, se removermos o modificador "static" dos métodos "maior" e "menor", o programa continuará funcionando.
Na linha 12 desse exemplo estamos usando uma expressão condicional. Essa expressão, no entanto, poderia ser substituída por um comando "if" equivalente.

O polimorfismo permite que objetos de diferentes tipos possam ser tratados de uma mesma maneira. O código abaixo mostra um exemplo do uso do polimorfismo:
Aqui, temos na linha 26 um método que recebe como parâmetro um objeto do tipo "Pagamento". Fazendo uso do polimorfismo, podemos passar para esse método não apenas objetos do tipo "Pagamento", mas também objetos de qualquer uma de suas subclasses.
Tendo como referência esse código, assinale a alternativa INCORRETA:
Na linha 22 estamos criando um objeto do tipo "PagamentoComCartao", e passando esse objeto para o método "imprime". Essa chamada está correta porque "PagamentoComCartao" é uma subclasse de "Pagamento", e pelo polimorfismo podemos passar um objeto do tipo "PagamentoComCartao" onde é esperado um objeto do tipo "Pagamento".
A chamada ao método "imprime", na linha 22, vai mostrar na tela o valor 5.
A chamada ao método "imprime", na linha 23, vai mostrar na tela o valor 10.
O método "getTaxaUso", declarado na classe "Pagamento", está sendo sobreposto na classe "PagamentoComCartao" na linha 7, e na classe "PagamentoComBoleto" na linha 14.
O método "getTaxaUso" foi declarado como "abstract" em "Pagamento". Quando declaramos um método como "abstract", em Java, ele não pode ter corpo (ou seja, não pode ter { e }). A classe "Pagamento", desse exemplo, não poderá ser diretamente instanciada com "new" porque foi declarada como "abstract". Classes abstratas, em Java, não podem ser instanciadas.

O código abaixo mostra a declaração de uma classe "Produto". Essa classe, por sua vez, contém atributos para armazenar os seguintes dados: um identificador do produto, o nome do produto e o preço do produto.
Os atributos de uma classe são acessados com dois propósitos: armazenar ali um valor, ou obter o valor armazenado no atributo para se fazer algo com ele. Essas duas operações, por sua vez, podem ser efetuadas com o auxílio de métodos acessores, que por padrão tem o nome de get(nome do atributo) e set(nome do atributo).
Tendo como referência esse código, assinale a alternativa INCORRETA:
Os métodos da classe são declarados como "public", e por isso podem ser chamados por outras classes.
Por meio dos métodos "get" e "set" é possível obter e alterar o valor dos atributos da classe.
Os atributos da classe são declarados como "private", e por isso não podem ser diretamente referenciados por outras classes. Nesse caso, eles só podem ser acessados por métodos da classe "Produto".
Essa classe foi escrita de acordo com o princípio do "encapsulamento". Ou seja, os atributos da classe foram declarados privados e os métodos foram declarados públicos.
Podemos alterar os atributos da classe de "private" para "public", eliminando assim os métodos acessores "get" e "set". Ao fazer isso, além de deixar a classe mais enxuta, estamos mantendo o princípio do "encapsulamento".

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Sabemos que, em Java, todas as classes são filhas diretas ou indiretas da classe 'Object'. Como consequência disso, todas classes em Java herdam os métodos definidos em 'Object'. Um desses métodos é o método 'equals', que é utilizado em diversas classes da API Java (como ArrayList, por exemplo), para determinar se dois objetos são 'iguais'. O código abaixo mostra uma classe 'Pedido' que sobrescreve o método 'equals' de 'Object', provendo para ele uma nova implementação. Tendo como referência esse exemplo, assinale a alternativa INCORRETA:
Estamos criando, nas linhas 23 e 26, dois objetos do tipo 'Pedido'. Como estamos atribuindo a eles o mesmo 'id' (linhas 24 e 27), o resultado da comparação na linha 30 (p1.equals(p2)) será 'true'.
Na implementação do método 'equals', que aparece entre as linhas 13 e 17, estamos dizendo que dois pedidos são 'iguais' se o valor armazenando no atributo 'idPedido' de ambos for o mesmo.
Pela implementação do método 'equals', que aparece entre as linhas 13 a 17, podemos dizer que se um objeto do tipo 'Pedido' for comparado com um objeto de outro tipo, por exemplo, um objeto do tipo 'String', o resultado do 'equals' será 'false'.
Estamos criando, nas linhas 23 e 26, dois objetos do tipo 'Pedido'. Como estamos atribuindo a eles o mesmo 'id' (linhas 24 e 27), o resultado da comparação na linha 29 (p1 == p2) será 'true'.
O método 'equals' recebe um parâmetro do tipo 'Object', porque é dessa maneira que está definido na classe 'Object'. Assim, para podermos comparar o parâmetro do método com a instância de 'Pedido' na qual o 'equals' foi chamado, devemos 'convertê-lo' de 'Object' para 'Pedido'. Isso é feito na linha 15, usando o operador de cast '(Pedido)'.
Pela implementação do método 'equals', que aparece entre as linhas 13 a 17, podemos dizer que se um objeto do tipo 'Pedido' for comparado com um objeto de outro tipo, por exemplo, um objeto do tipo 'String', o resultado do 'equals' será 'false'.

O polimorfismo permite que objetos de diferentes tipos possam ser tratados de uma mesma maneira. O código abaixo mostra um exemplo do uso do polimorfismo: Aqui, temos na linha 26 um método que recebe como parâmetro um objeto do tipo 'Pagamento'. Fazendo uso do polimorfismo, podemos passar para esse método não apenas objetos do tipo 'Pagamento', mas também qualquer objeto que implementa essa interface. Tendo como referência esse código, assinale a alternativa INCORRETA:
Nesse exemplo, podemos trocar a palavra reservada 'implements' por 'extends', nas linhas 5 e 12. Ao fazer isso o programa continuará funcionando como antes, produzindo os mesmos resultados.
Nesse exemplo temos duas classes, 'PagamentoComCartao' e 'PagamentoComBoleto', e essas duas classes implementam a interface 'Pagamento'. Esse relacionamento está evidenciado, no código, pela declaração 'implements Pagamento'.
Não existe, nesse exemplo, uma herança entre 'Pagamento', 'PagamentoComCartao' e 'PagamentoComBoleto'. Isso porque 'Pagamento' é uma interface, e a herança ocorre apenas entre classes.
Na sua forma usual, uma interface é criada para definir métodos que devem ser implementados (sobrescritos) por classes que implementam aquela interface. É que ocorre nesse exemplo. A interface 'Pagamento' define, na linha 2, o método 'getTaxaUso', que precisa ser sobrescrito pelas classes que implementam essa interface. Isso é feito pelas classes 'PagamentoComCartao' e 'PagamentoComBoleto' nas linhas 7 e 14, respectivamente.
Existe, entre uma interface e as classes que implementam essa interface, um relacionamento do tipo 'é um', assim como ocorre entre uma classe e suas subclasses. Por isso podemos usar a interface 'Pagamento' como parâmetro no método 'imprime' (linha 26) e chamar esse método passando para ele objetos do tipo 'PagamentoComCartao' e 'PagamentoComBoleto' (linhas 22 e 23).
Na sua forma usual, uma interface é criada para definir métodos que devem ser implementados (sobrescritos) por classes que implementam aquela interface. É que ocorre nesse exemplo. A interface 'Pagamento' define, na linha 2, o método 'getTaxaUso', que precisa ser sobrescrito pelas classes que implementam essa interface. Isso é feito pelas classes 'PagamentoComCartao' e 'PagamentoComBoleto' nas linhas 7 e 14, respectivamente.

Por meio da herança podemos criar novas classes, aproveitando as funcionalidades de classes já existentes. O código abaixo mostra um exemplo de herança: Aqui, por simplicidade, os métodos 'get' e 'set' não estão sendo exibidos. Tendo como referência esse exemplo, assinale a alternativa INCORRETA:
De acordo com a terminologia da Programação Orientada a Objetos podemos dizer que, nesse exemplo, 'PagamentoComCartao' e 'PagamentoComBoleto' são subclasses. A classe 'Pagamento', por sua vez, é uma superclasse.
De acordo com a terminologia da Programação Orientada a Objetos podemos dizer que, nesse exemplo, 'PagamentoComCartao' e 'PagamentoComBoleto' são subclasses. A classe 'Pagamento', por sua vez, é uma superclasse.

Tanto na programação estruturada, quanto na programação orientada a objetos, podemos usar funções para organizar melhor nosso código, separar responsabilidades, permitir o reuso e evitar a repetição de comandos, entre outros benefícios. Na programação orientada a objetos, no entanto, chamamos as funções de "métodos". O código abaixo mostra um exemplo que aborda esse tema:
Tendo como referência esse exemplo, assinale a alternativa INCORRETA:
O método "maior" recebe como entrada dois valores e produz como saída um único valor, que corresponde ao maior dos valores informados como entrada.
O método "isPar" recebe como entrada um único valor e produz como saída o resultado "true" quando o valor é par e "false" quando o valor é ímpar.
Temos nessa classe os métodos "main", "maior" e "isPar". Os dois últimos métodos são declarados como "static" para poderem ser chamados do método "main", que é "static".
Nesse código, se removermos o modificador "static" dos métodos "maior" e "menor", o programa continuará funcionando.
Na linha 12 desse exemplo estamos usando uma expressão condicional. Essa expressão, no entanto, poderia ser substituída por um comando "if" equivalente.

O polimorfismo permite que objetos de diferentes tipos possam ser tratados de uma mesma maneira. O código abaixo mostra um exemplo do uso do polimorfismo:
Aqui, temos na linha 26 um método que recebe como parâmetro um objeto do tipo "Pagamento". Fazendo uso do polimorfismo, podemos passar para esse método não apenas objetos do tipo "Pagamento", mas também objetos de qualquer uma de suas subclasses.
Tendo como referência esse código, assinale a alternativa INCORRETA:
Na linha 22 estamos criando um objeto do tipo "PagamentoComCartao", e passando esse objeto para o método "imprime". Essa chamada está correta porque "PagamentoComCartao" é uma subclasse de "Pagamento", e pelo polimorfismo podemos passar um objeto do tipo "PagamentoComCartao" onde é esperado um objeto do tipo "Pagamento".
A chamada ao método "imprime", na linha 22, vai mostrar na tela o valor 5.
A chamada ao método "imprime", na linha 23, vai mostrar na tela o valor 10.
O método "getTaxaUso", declarado na classe "Pagamento", está sendo sobreposto na classe "PagamentoComCartao" na linha 7, e na classe "PagamentoComBoleto" na linha 14.
O método "getTaxaUso" foi declarado como "abstract" em "Pagamento". Quando declaramos um método como "abstract", em Java, ele não pode ter corpo (ou seja, não pode ter { e }). A classe "Pagamento", desse exemplo, não poderá ser diretamente instanciada com "new" porque foi declarada como "abstract". Classes abstratas, em Java, não podem ser instanciadas.

O código abaixo mostra a declaração de uma classe "Produto". Essa classe, por sua vez, contém atributos para armazenar os seguintes dados: um identificador do produto, o nome do produto e o preço do produto.
Os atributos de uma classe são acessados com dois propósitos: armazenar ali um valor, ou obter o valor armazenado no atributo para se fazer algo com ele. Essas duas operações, por sua vez, podem ser efetuadas com o auxílio de métodos acessores, que por padrão tem o nome de get(nome do atributo) e set(nome do atributo).
Tendo como referência esse código, assinale a alternativa INCORRETA:
Os métodos da classe são declarados como "public", e por isso podem ser chamados por outras classes.
Por meio dos métodos "get" e "set" é possível obter e alterar o valor dos atributos da classe.
Os atributos da classe são declarados como "private", e por isso não podem ser diretamente referenciados por outras classes. Nesse caso, eles só podem ser acessados por métodos da classe "Produto".
Essa classe foi escrita de acordo com o princípio do "encapsulamento". Ou seja, os atributos da classe foram declarados privados e os métodos foram declarados públicos.
Podemos alterar os atributos da classe de "private" para "public", eliminando assim os métodos acessores "get" e "set". Ao fazer isso, além de deixar a classe mais enxuta, estamos mantendo o princípio do "encapsulamento".

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>

Mais conteúdos dessa disciplina