Buscar

Prova Final A02 - Programação Orientada a Objetos

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

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

Continue navegando