Baixe o app para aproveitar ainda mais
Prévia do material em texto
AO2 Substitutiva Entrega 25 jun em 23:59 Pontos 6 Perguntas 10 Disponível 22 jun em 0:00 - 25 jun em 23:59 4 dias Limite de tempo Nenhum Instruções Histórico de tentativas Tentativa Tempo Pontuação MAIS RECENTE Tentativa 1 19 minutos 2,4 de 6 As respostas corretas estão ocultas. Pontuação deste teste: 2,4 de 6 Enviado 25 jun em 20:29 Esta tentativa levou 19 minutos. Importante: Caso você esteja realizando a atividade através do aplicativo "Canvas Student", é necessário que você clique em "FAZER O QUESTIONÁRIO", no final da página. 0,6 / 0,6 ptsPergunta 1 Leia o texto a seguir: Um objetivo-chave do Java é ser capaz de escrever programas a serem executados em uma grande variedade de sistemas computacionais e dispositivos controlados por computador. Isso às vezes é chamado de “escreva uma vez, execute em qualquer lugar”. Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017, p. 13. Assinale a alternativa correta sobre o princípio “escreva uma vez, execute em qualquer lugar” do Java. Os programas Java rodam em qualquer máquina, desde que modificados adequadamente, adaptados e recompilados para a máquina-alvo. Todos os processadores são capazes de executar nativamente bytecode Java. https://famonline.instructure.com/courses/12596/quizzes/42470/history?version=1 Os programas são compilados para uma máquina virtual, não para linguagem de máquina real. Alternativa correta. Programas em Java são compilados. Porém, na compilação, não é gerado código de máquina nativo, e sim “bytecode” feito para ser interpretado por uma máquina virtual. Programas Java são traduzidos para C, que é uma linguagem bastante portável. O código-fonte Java não é compilado, e sim interpretado. 0,6 / 0,6 ptsPergunta 2 Leia o trecho a seguir: As classes dão suporte completo à herança, uma característica fundamental da programação orientada a objetos. Ao criar uma classe, você pode herdar de outra interface ou classe que não está definida como selada, e outras classes podem herdar de sua classe e substituir seus métodos virtuais. Disponível em: https://docs.microsoft.com/pt-br/dotnet/csharp/programming- guide/classes-and-structs/classes (https://docs.microsoft.com/pt- br/dotnet/csharp/programming-guide/classes-and-structs/classes) . Acesso em: 05 de novembro de 2020. Além da herança, outras características fundamentais da programação orientada a objeto são: abstração, encapsulamento e eventos. classes abstratas, encapsulamento e polimorfismo. polimorfismo, abstração e encapsulamento. Alternativa correta. As quatro características básicas comuns às linguagens orientadas a objeto são a abstração (“ocultar” a complexidade de uma entidade), encapsulamento (“proteger” as informações de uma entidade), herança (uma estrutura pode reaproveitar código de outra estrutura) e polimorfismo (uma estrutura que herda código de outra pode ser tratada como se fosse a outra). classes, objetos e orientação a eventos. https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/classes objetos, atributos, métodos e entidades. 0,6 / 0,6 ptsPergunta 3 Observe o trecho de código abaixo: static void foo(int y) throws ArithmeticException { try { int x = 1/y; } catch(ArithmeticException e) { System.out.println("foo"); } } Considerando o trecho de código apresentado, avalie as asserções abaixo e a relação proposta entre elas: I. Métodos que chamam o método foo precisarão capturar ou lançar exceções pertencentes à classe ArithmeticException. PORQUE II. O método que possui a palavra “throws” logo à frente de sua lista de parâmetros, seguida do nome ArithmeticException, sinaliza que ele pode lançar exceções dessa classe. A respeito dessas asserções, assinale a opção correta. A asserção I é uma proposição falsa, e a asserção II é uma proposição verdadeira. Alternativa correta. A palavra “throws” na declaração de um método sinaliza uma lista de exceções que o método poderá lançar. A princípio, quando outro método o chamar, ele deve estar preparado para lidar com essas exceções de alguma maneira, já que elas poderão ocorrer. “Lidar” com essas exceções seria capturá-las ou lançá-las também. A asserção II é verdadeira. Porém, neste caso específico, apesar de o método em questão sinalizar que pode lançar exceções da classe ArithmeticException, dentro de seu corpo ele realiza uma única operação que pode provocá-las já dentro de um bloco “try” e captura as exceções em seguida. Como a exceção sempre será capturada, na prática ela nunca será lançada, e por isso os outros métodos da pilha não precisam se preocupar com essa exceção. A asserção I é falsa. As asserções I e II são proposições falsas As asserções I e II são proposições falsas, mas a II não é uma justificativa correta da I. As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I. A asserção I é uma proposição verdadeira, e a asserção II é uma proposição falsa. 0,6 / 0,6 ptsPergunta 4 Leia o texto a seguir: A noção de interfaces de tags (também chamadas de interfaces de marcação) — interfaces vazias que não têm métodos ou valores constantes. Elas são utilizadas para adicionar relacionamentos “é um” a classes. Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017, p. 332. Adaptado. Considerando conceito apresentado no texto, analise as afirmações a seguir: I. Interfaces são úteis para realizar polimorfismo – isto é, permitir que objetos de diferentes classes possam ser tratados como objetos “da interface”. II. Toda interface é vazia, são as classes que providenciam métodos para os objetos que pertencerão à interface. III. Uma classe pode implementar múltiplas interfaces simultaneamente, mas apenas herdar de uma classe. IV. Se uma classe implementa uma interface, objetos de suas subclasses também terão relação “é um” com a interface sem que a subclasse declare explicitamente que a implementa. São corretas as afirmações: II, III e IV, apenas. I, II e III, apenas. I, II e IV, apenas. I, III e IV, apenas. Alternativa correta. Ao contrário de classes (abstratas ou não), as interfaces não transmitem código pronto. Ao implementar uma interface, nenhum código pronto é herdado, a classe apenas assume o compromisso de implementar os métodos abstratos cuja assinatura foi declarada nas interfaces. Ao implementar todos os métodos da interface, os objetos da classe passarão a estabelecer uma relação “é um” com a interface. Afinal, tendo os mesmos métodos, eles podem ser “tratados” da mesma maneira. A afirmação I está correta. O Java permite que uma classe implemente diversas interfaces, permitindo dessa maneira que um mesmo objeto estabeleça relações “é um” com diversas interfaces diferentes, desde que todos os métodos abstratos sejam implementados. A alternativa III está correta. Caso uma classe implemente uma interface, ela deverá implementar todos os métodos especificados pela interface. Como na herança todo o código é transmitido, os objetos das subclasses com certeza terão implementações de todos os métodos da interface, podendo, portanto, ser tratados como objetos “da interface. A afirmação IV está correta. Apesar de interfaces não fornecerem implementações prontas, elas não necessariamente são vazias: elas normalmente possuem métodos abstratos. Isto é, assinaturas de métodos não implementados que deverão ser implementados por todas as classes que a implementem. A afirmação II está incorreta. I, II, III e IV. 0 / 0,6 ptsPergunta 5IncorretaIncorreta Leia o texto a seguir: A palavra-chave new estabelece um novo objeto da classe especificada. Os parênteses à direita [do nome da classe] são necessários. Esses parênteses em combinação com um nome de classe representam uma chamada para um construtor,que é semelhante a um método, mas é chamado implicitamente pelo operador new para inicializar as variáveis de instância de um objeto quando este é criado. Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017, p. 60. Adaptado. Considerando as informações apresentadas, analise as afirmações a seguir: I. Um construtor pode receber valores de inicialização para os atributos da classe. II. Uma classe pode ter mais de um construtor, desde que eles possuam nomes diferentes. III. Um construtor precisa retornar um objeto da classe sendo instanciada. Estão corretas as afirmações: II e III, apenas. I e III, apenas. I, II e III. Alternativa incorreta. Um construtor pode receber valores como parâmetros, e esses valores podem (e frequentemente são) utilizados para inicializar atributos. A afirmação I está correta. Uma classe pode ter mais de um construtor. Porém, o construtor sempre terá o mesmo nome que a classe. O que irá variar entre as diferentes “versões” do construtor é a sua lista de parâmetros. A afirmação II está incorreta. Um construtor não apresenta retorno. O new se encarrega de gerar/fornecer o objeto novo. A afirmação III está incorreta. I, apenas. I e II, apenas. 0 / 0,6 ptsPergunta 6IncorretaIncorreta Leia o trecho a seguir: Classes e métodos ajudam a modularizar um programa separando suas tarefas em unidades autocontidas. As instruções no corpo dos métodos são escritas apenas uma vez, permanecem ocultas de outros métodos e podem ser reutilizadas a partir de várias localizações em um programa. Uma motivação para modularizar um programa em métodos e classes é a abordagem dividir para conquistar, que torna o desenvolvimento de programas mais gerenciável, construindo programas a partir de peças mais simples e menores. Outra é a capacidade de reutilização de software — o uso de classes e métodos existentes como blocos de construção para criar novos programas. Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017. p. 158. Considerando as informações apresentadas, avalie as asserções a seguir e a relação proposta entre elas: I. Objetos são instâncias de classes. PORQUE II. Objetos definem todos os atributos e métodos que as classes terão, e todas as classes criadas seguirão o molde definido no objeto. A respeito dessas asserções, assinale a opção correta: A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I. As asserções I e II são ambas proposições falsas. A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I. Alternativa incorreta. A asserção I está correta, objetos são instâncias de classes. Isso ocorre porque a classe é a entidade abstrata que serve como “molde” para o objeto, definindo os atributos que cada objeto terá. Todos os objetos de uma certa classe terão os mesmos atributos e métodos. A asserção II inverte o papel da classe e do objeto, tornando-a falsa. 0 / 0,6 ptsPergunta 7IncorretaIncorreta Leia o trecho a seguir: Um carro, além de ter a capacidade de realizar tarefas, também tem atributos, como cor, número de portas, quantidade de gasolina no tanque, velocidade atual e registro das milhas totais dirigidas (isto é, a leitura do odômetro). Assim como suas capacidades, os atributos do carro são representados como parte do seu projeto nos diagramas de engenharia (que, por exemplo, incluem um odômetro e um medidor de combustível). Ao dirigir um carro real, esses atributos são incorporados a ele. Cada carro mantém seus próprios atributos. Cada carro sabe a quantidade de gasolina que há no seu tanque, mas desconhece quanto há no tanque de outros carros. Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017. p. 9. Considerando o texto acima, avalie as seguintes afirmações: I. Cada carro precisa ser representado por uma classe distinta. II. As capacidades do carro podem ser representadas por métodos. III. Objetos da mesma classe possuem os mesmos atributos, mas com valores individuais. É correto o que se afirma em: I e II, apenas. I e III, apenas. Alternativa incorreta. Entidades com características e capacidades em comum podem ser representados por uma classe. Portanto, como todos os carros possuem uma quantidade de gasolina, cor, número de portas etc., eles podem ser representados por uma classe. Cada carro distinto será um objeto dessa classe. Portanto, a afirmação I está incorreta. As ações realizadas por objetos são modeladas por funções internas a ele, que são conhecidas por métodos, deste modo, a afirmação II está correta. Uma classe define quais atributos seus objetos terão, portanto objetos de uma mesma classe terão os mesmos atributos. Entretanto, atributos são variáveis individuais internas a cada objeto, ou seja, os objetos de uma mesma classe possuem atributos com o mesmo nome e tipo, mas o valor será independente, podendo cada um ter as suas próprias informações particulares. Assim, a afirmação III está correta. I, apenas. III, apenas. II e III, apenas. 0 / 0,6 ptsPergunta 8IncorretaIncorreta Leia o trecho a seguir: "Antes do Java SE 8, o Java suportava três paradigmas de programação — programação procedural, programação orientada a objetos e programação genérica. O JavaSE 8 acrescenta a programação funcional." Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017. p. 3. Considerando as informações apresentadas, analise as afirmações a seguir: I. O paradigma orientado a objeto possui programas modularizados. II. O paradigma orientado a objeto não pode ser usado em programas gráficos, pois eles usam o orientado a evento. III. O paradigma procedural possui programas modularizados. Estão corretas as alternativas: II e III, apenas. Alternativa incorreta. No paradigma orientado a objeto, os programas são modularizados através das classes. O sistema é modelado utilizando classes, a partir das quais são instanciados objetos que irão trocar mensagens entre si através dos métodos. Portanto, a I está correta. O paradigma orientado a evento costuma estar presente em programas gráficos, mas ele não precisa estar sozinho. Ele é caracterizado pelo programa reagindo a eventos, como o acionamento de um botão. É possível (e frequente), por exemplo, que um programa seja inteiro modelado em classes e objetos e um evento chame um método de um objeto. Portanto, a II está incorreta. O paradigma procedural caracteriza-se por programas sendo subdivididos em módulos conhecidos como “funções” ou “procedimentos”, portanto a III está correta. I e III, apenas. I, apenas. I e II, apenas. II, apenas. 0 / 0,6 ptsPergunta 9IncorretaIncorreta Leia o texto a seguir: Herdar as variáveis de instância protected permite acesso direto a elas por meio de subclasses. Na maioria dos casos, porém, é melhor usar as variáveis de instância private para incentivar a engenharia de software adequada. Seu código será mais fácil de manter, modificar e depurar. Utilizar variáveis de instância protected cria vários problemas potenciais. Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017, p. 299. Considerando as informações apresentadas, analise as afirmações a seguir: I. Atributos são herdados se forem protected ou public, os private não são transmitidos na herança. II. Modificar o nome dos atributos da superclasse afeta os nomes dos atributos da subclasse. III. Uma subclasse não precisa de get e set para modificar atributos protected da superclasse. IV. Atributos protected criam brechas no encapsulamento da classe. Estão corretasas afirmações: I, II e III, apenas. I, II, III e IV. II, III e IV, apenas. I, II e IV, apenas. I, III e IV, apenas. Alternativa incorreta. Todos os atributos são herdados, independentemente de seu modificador de acesso. Porém, para que o atributo seja acessível pela subclasse, ele deve ser protected ou private. Caso contrário, o atributo existirá, mas não poderá ser lido ou modificado diretamente pelos métodos da subclasse, apenas por métodos da superclasse. A afirmação I está incorreta. Como os atributos são herdados, alterá-los na classe mãe também irá alterá-los na classe filha. Caso eles sejam private, a classe filha não irá “notar” a modificação. Caso sejam protected ou public, é possível que estejam sendo usados em métodos da classe filha, e neste caso a mudança de nome provocará erros. A afirmação II está correta. Como explicado anteriormente, se o atributo é protected, ele estará acessível para as subclasses. Portanto, elas poderão modificá-lo diretamente. A afirmação III está correta. Considerando todo o exposto, a afirmação IV está correta, pois temos atributos de uma classe (a superclasse) sendo acessados e modificados por outra classe (a subclasse). A superclasse pode ter mecanismos complexos para validar seus dados, e a subclasse consegue “contorná-los” e colocar valores arbitrários, inclusive inválidos. 0 / 0,6 ptsPergunta 10IncorretaIncorreta Leia o trecho a seguir: Ao dirigir um carro, o ato de pressionar o acelerador envia uma mensagem para o veículo realizar uma tarefa — isto é, ir mais rápido. Da mesma forma, você envia mensagens para um objeto. Cada mensagem é implementada como uma chamada de método que informa a um método do objeto a maneira de realizar sua tarefa. Por exemplo, um programa pode chamar o método depósito de um objeto conta bancária para aumentar o saldo da conta. Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017. p. 9. Considerando as informações apresentadas, analise as afirmações a seguir: I. O envio de uma mensagem pode alterar o estado de um objeto. II. Todos os carros possuem as mesmas características, mas não necessariamente as mesmas capacidades. III. Objetos de classes herdeiras de carro possuirão as mesmas características que os carros, mas não necessariamente as mesmas capacidades. É correto o que se afirma em: I e III, apenas. III, apenas. Alternativa incorreta. Um método pode acessar todas as informações do objeto que o executou, mesmo que sejam privadas. De fato, muitas vezes um método é a única maneira de o restante do programa interagir com atributos de um objeto. Como o próprio texto explicou, um envio de mensagem é uma chamada a um método, por isso a afirmação I está correta. Uma classe é uma ideia abstrata que define todas as informações (atributos) e comportamentos ou capacidades (métodos). Todos os objetos daquela classe terão esses atributos e métodos, portanto a afirmação II está incorreta. Quando uma classe herda de outra classe, tudo que foi definido na superclasse (classe mãe) fica definido também para a subclasse (classe filha), isso inclui atributos e métodos, ou seja, a afirmação III está incorreta. I, apenas. II, apenas. I e II, apenas. Pontuação do teste: 2,4 de 6
Compartilhar