Buscar

AO2_ 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 11 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 11 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 11 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
Entrega 19 de jun de 2022 em 23:59
Pontos 6
Perguntas 10
Disponível 9 de jun de 2022 em 0:00 - 19 de jun de 2022 em 23:59
Limite de tempo Nenhum
Instruções
Este teste não está mais disponível, pois o curso foi concluído.
Histórico de tentativas
Tentativa Tempo Pontuação
MAIS RECENTE Tentativa 1 44 minutos 5,4 de 6
Pontuação deste teste: 5,4 de 6
Enviado 16 de jun de 2022 em 18:08
Esta tentativa levou 44 minutos.

Pergunta 1
0,6 / 0,6 pts
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.
Observe o código a seguir:
 
class Carregador {
 float tensao;
 float corrente;
 float potencia;
 
 public Carregador() {
 // ...
 }
 
 public void carregar(Bateria b) {
 // ...
 }
A+
A
A-
29/04/2024, 10:55 AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 1/11
https://famonline.instructure.com/courses/20544/quizzes/91797/history?version=1
Correto!
 Existe outra classe chamada “Bateria”.
Alternativa correta.
Os atributos da classe “Carregador” são as suas variáveis internas: “tensao”, “corrente” e “potencia”. Os
métodos da classe “Carregador” são suas funções. O método (função) “carregar” recebe um parâmetro “b” da
classe “Bateria”. Existe um único construtor, portanto não há sobrecarga, que é quando criamos diferentes
construtores com diferentes parâmetros.
 Um dos métodos da classe Carregador é “corrente”.
 Um dos atributos da classe Carregador é “Bateria”.
 A classe Carregador sobrecarrega construtores.
 Um dos atributos da classe Carregador é “carregar”.

Pergunta 2
0,6 / 0,6 pts
}
 
Assinale a afirmação correta sobre o código acima:
 
Leia o texto a seguir:
 
Grupos de desenvolvimento de software podem usar uma abordagem modular de projeto e implementação
orientados a objetos para que sejam muito mais produtivos do que com as técnicas anteriormente populares
como “programação estruturada” — programas orientados a objetos são muitas vezes mais fáceis de entender,
corrigir e modificar.
 
Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017, p.
8.
 
Considerando as informações apresentadas, analise as afirmações abaixo:
 
I. A programação orientada a objeto é um conjunto de princípios, portanto pode ser aplicada em qualquer
linguagem, desde que o programador siga seus princípios.
 
II. Programas orientados a objeto possuem melhor desempenho do que programas feitos utilizando apenas
“programação estruturada”, ou seja, são mais rápidos e usam menos memória.
 
A+
A
A-
29/04/2024, 10:55 AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 2/11
 II e III, apenas.
Correto!
 III, apenas.
Alternativa correta.
A programação orientada a objeto possui um conjunto de princípios, mas para que eles sejam implementados, a
linguagem precisa oferecer suporte a uma série de estruturas específicas, como classes e objetos, por este
motivo a afirmação I está incorreta.
A programação orientada a objeto não tem como objetivo melhorar o desempenho computacional das
aplicações, inclusive a sua “burocracia” pode tornar o programa mais lento ou pesado do que um programa
escrito em técnicas mais antigas, ou seja, a afirmação II está incorreta.
Uma das estratégias da programação orientada a objeto é justamente modularizar o código de modo que seja
fácil reutilizá-lo, e correções ou alterações podem ser feitas pontualmente em um módulo, e todos os módulos
que interagem com ele serão afetados pela mudança sem necessariamente serem alterados também,
confirmando a afirmação III como correta.
 I e II, apenas.
 I e III, apenas.
 II, apenas.

Pergunta 3
0,6 / 0,6 pts
IV. Programas orientados a objeto possuem grande capacidade de reutilização de código, gerando códigos
menores e fáceis de propagar correções ou novas funcionalidades.
 
Estão corretas as afirmações:
Leia o texto a seguir:
 
Assim como os desenhos de engenharia de um carro podem ser reutilizados várias vezes para fabricar muitos
carros, você pode reutilizar uma classe muitas vezes para construir vários objetos. A reutilização de classes
existentes ao construir novas classes e programas economiza tempo e esforço. Também ajuda a construir
sistemas mais confiáveis e eficientes, porque classes e componentes existentes costumam passar por extensos
testes, depuração e ajuste de desempenho. Assim como a noção das partes intercambiáveis foi crucial para a
Revolução Industrial, classes reutilizáveis são fundamentais para a revolução de software que foi estimulada
pela tecnologia de objetos.
 
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, avalie as asserções abaixo e a relação proposta entre elas.
A+
A
A-
29/04/2024, 10:55 AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 3/11
 A asserção I é uma proposição falsa e a asserção II é uma proposição verdadeira.
 As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I.
 As asserções I e II são proposições falsas.
 As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I.
Correto!
 A asserção I é uma proposição verdadeira, e a asserção II é uma proposição falsa.
Alternativa correta.
A programação orientada a objeto prega quatro princípios básicos: o encapsulamento, onde as informações
sobre um objeto são protegidas, a abstração, onde cada objeto possui uma interface simples ocultando a
complexidade de seu funcionamento, a herança, onde código de uma classe pode ser reaproveitado por outra,
e o polimorfismo, onde um objeto pode ser tratado como membro de diferentes classes, ou seja, a asserção I
está correta.
Entretanto, os princípios mencionados na asserção I nada têm a ver com o “Write Once, Run Anywhere”.
Linguagens orientadas a objeto podem ser compiladas, interpretadas ou híbridas. Um programa em C++, por
exemplo, precisa ser compilado novamente para cada sistema, e pode exigir modificações de um sistema para
o outro. O W.O.R.A. é um conceito que surgiu com o Java e tem a ver com arquitetura de compilador, máquina
virtual e bytecode, portanto, a asserção II está incorreta.

Pergunta 4
0,6 / 0,6 pts
 
I. A programação orientada a objeto adota princípios como a abstração, o encapsulamento, a herança e o
polimorfismo.
 
PORQUE
 
II. Os quatro princípios da programação orientada a objeto combinados dão origem ao princípio “Write Once,
Run Anywhere”, em que o código é compilado uma única vez e pode ser reutilizado em qualquer computador.
 
A respeito dessas asserções, assinale a opção correta.
Analise o código abaixo:
 
void foo (Automovel a) {
 a.locomocao();
}
void bar () {
 Conversivel c = new Conversivel();
A+
A
A-
29/04/2024, 10:55 AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 4/11
 II e III, apenas.
 II e IV, apenas.
Correto!
 I e III, apenas.
Alternativa correta.
Pelo princípio do polimorfismo, uma subclasse também é objeto da superclasse. Como Conversivel é subclasse
de Automovel, todo objeto Conversivel é, necessariamente, objeto de Automovel também, portanto a afirmação I
está correta.
A relação inversa não é válida: um objeto Automovel não necessariamente é um objeto Conversivel. Tratar um
objeto Automovel como Conversivel provocará erros, ou seja, a afirmação II está incorreta.
Construtores são específicos de cada classe. Classes filhas devem ter seus próprios construtores, mesmo que
eles chamem internamente o super(), isso quer dizer que, naquela linha, é possível determinar já em tempo de
compilação qual o construtora ser utilizado: será necessariamente o construtor específico de Conversivel cujos
parâmetros batam com os passados (no caso, deve ser um construtor sem parâmetros). Isso é o que
chamamos de polimorfismo estático, o que conclui a afirmação III como correta.
A função foo recebe um objeto Automovel. Esse objeto pode ser um Automovel puro ou pode ser objeto de
classe herdeira. Nas classes herdeiras o método pode ter sido sobreposto. Como em diferentes pontos do
código a função foo pode ser chamada recebendo objetos de diferentes subclasses, apenas durante a sua
execução será possível determinar qual versão do método locomocao (o original ou uma das possíveis
sobreposições) será utilizado. Isso é o que chamamos de polimorfismo dinâmico, ou seja, a afirmação IV está
incorreta.
 I e II, apenas.
 foo(c);
}
 
Sabendo que Conversivel é subclasse de Automovel, analise as afirmações abaixo sobre o código:
 
I. Na função bar, c é um Automovel.
 
II. Na função foo, a é um Conversivel.
 
III. No método bar, o método sendo chamado na primeira linha é determinado em tempo de compilação.
 
IV. No método foo, o método sendo chamado na primeira linha é determinado em tempo de compilação.
 
São corretas as afirmações:
A+
A
A-
29/04/2024, 10:55 AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 5/11
 III e IV, apenas.

Pergunta 5
0,6 / 0,6 pts
 A asserção I é uma proposição verdadeira e a asserção II é uma proposição falsa.
 As asserções I e II são proposições verdadeiras, mas a asserção II não é uma justificativa correta da I.
 As asserções I e II são proposições verdadeiras e a asserção II é uma justificativa correta da I.
 As asserções I e II são proposições falsas.
Correto!
 A asserção I é uma proposição falsa e a asserção II é uma proposição verdadeira.
Alternativa correta.
O método get, por padrão, retorna o valor de uma variável, enquanto o método set recebe um parâmetro e,
dado que ele siga suas regras, o atribui para um atributo. Eles são usados em atributos privados – se os
atributos fossem públicos, não haveria necessidade de os usar.
Entretanto, eles não constituem uma violação de encapsulamento, pelo contrário, eles são utilizados justamente
para permitir que o objeto possa receber novas informações sem que o encapsulamento seja violado. Ninguém
Leia o texto a seguir:
 
A maioria das declarações de variável de instância é precedida pela palavra-chave private. Da mesma forma
que public, private é um modificador de acesso. As variáveis ou métodos declarados com o modificador de
acesso private só são acessíveis a métodos da classe em que isso ocorre.
 
Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017, p.
58.
 
Considerando as informações apresentadas, avalie as asserções abaixo e a relação proposta entre elas.
 
I. O uso de métodos get e set públicos em atributos private constitui uma violação do encapsulamento da
classe.
 
PORQUE
 
II. Métodos get e set permitem, respectivamente, ler e modificar o valor do atributo, e métodos públicos são
visíveis para todo o projeto.
 
A respeito dessas asserções, assinale a opção correta:
A+
A
A-
29/04/2024, 10:55 AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 6/11
pode acessar diretamente os atributos, e sim trocar mensagens através dos métodos, de modo que o objeto
tem total controle sobre o que acontecerá com o atributo através da lógica dos métodos, podendo inclusive
vetar alterações.

Pergunta 6
0,6 / 0,6 pts
 I e III, apenas.
 II, III e IV, apenas.
Leia o texto a seguir:
 
O compilador verifica cada chamada de método e declaração de método para determinar se ele lança uma
exceção verificada. Se sim, o compilador checa se a exceção verificada é capturada ou é declarada em uma
cláusula throws — isso é conhecido como requisito “capture ou declare” (catch-or-declare). Lembre-se de que a
cláusula throws especifica as exceções que um método lança. Tais exceções não são capturadas no corpo do
método. Para satisfazer a parte capture do requisito capture ou declare, o código que gera a exceção deve ser
empacotado em um bloco try e fornecer uma rotina de tratamento catch para o tipo de exceção verificada (ou
uma de suas superclasses). Para satisfazer a parte declare do requisito capture ou declare, o método contendo
o código que gera a exceção deve fornecer uma cláusula throws contendo o tipo de exceção verificada depois
de sua lista de parâmetros e antes do corpo do método. Se o requisito “capture ou declare” não for atendido, o
compilador emitirá uma mensagem de erro.
 
 
Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017, p.
356. Adaptado.
 
Considerando as informações apresentadas, analise as afirmações abaixo:
 
I. Se um método “A” chama um método “B” que lança exceções, “A” deve necessariamente as capturar.
 
II. Como exceções podem ser capturadas ou lançadas, uma exceção não tratada não provocará erro, desde
que seja lançada por todos os métodos na pilha.
 
III. Um método não é obrigado a capturar uma exceção, desde que ele a lance.
 
IV. Um método não é obrigado a lançar uma exceção, desde que ele a capture.
 
Estão corretas as afirmações:
A+
A
A-
29/04/2024, 10:55 AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 7/11
 I e II, apenas.
 I, II e IV, apenas.
Correto!
 III e IV, apenas.
Alternativa correta.
As afirmações III e IV estão corretas: pelo princípio do “capture ou declare”, um método precisa apenas capturar
ou lançar cada exceção, não os dois. Qualquer uma das ações estará correta do ponto de vista daquele
método. Por esse motivo, a afirmação I está incorreta: não faz diferença se uma exceção ocorreu diretamente
dentro de um método ou se ela foi lançada por outro método que foi chamado dentro daquele método. Ela
continua podendo ser ou capturada ou lançada novamente.
Porém, em algum momento a exceção deverá ser capturada. Se todos os métodos na pilha forem apenas
lançando a exceção, em algum ponto acabarão as funções da pilha. Como uma exceção é um erro previsto e
tratável, se nenhuma função a tratou, o programa apresentará erro (na compilação ou na execução,
dependendo do tipo de exceção). Por isso a afirmação II também está incorreta.

Pergunta 7
0,6 / 0,6 pts
 
Segundo o texto, todos os métodos não precisam ser implementados pela classe que venha a utilizar uma determinada
interface.
 A partir do texto, compreende-se que um programa em Java pode instanciar uma interface.
Correto!
 A partir do texto, entende-se que uma interface especifica o que deve ser feito, mas não como deve ser feito.
Leia o texto abaixo:
 
Um método abstrato define a assinatura de um método, mas não fornece implementação. Uma subclasse deve
fornecer sua própria implementação de cada método abstrato definido por sua superclasse. Portanto, um
método abstrato especifica a interface do método, mas não a implementação. Embora as classes e métodos
abstratos sejam úteis, podemos levar esse conceito um passo adiante. Em Java, podemos separar totalmente a
interface de uma classe de sua implementação usando a palavra-chave interface.
Uma interface é sintaticamente semelhante a uma classe abstrata no fato de podermos especificar um ou mais
métodos sem corpo. Estes métodos devem ser implementados por uma classe para que suas ações sejam
definidas. Quando uma interface é definida, não há limite para o número de classes que podem implementá-la.
Além disso, uma classe pode implementar qualquer número de interface.
 
Fonte: SCHILDT, H. Java para iniciantes: crie, compile e execute programas Java rapidamente, 6ª edição. Porto
Alegre: Bookman, 2015 (adaptado).
 
Considerando as informações apresentadas, assinale a opção correta.
A+
A
A-
29/04/2024, 10:55AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 8/11
A alternativa está correta. Uma interface, assim como um método abstrato, especifica o que deve ser feito, mas
não como deve ser feito.
 Uma interface, assim como uma classe abstrata, fornece os nomes dos métodos e os implementa, conforme indica o texto.
 A partir do texto, entende-se que as interfaces possuem atributos assim como as classes.

Pergunta 8
0,6 / 0,6 pts
 Porque faltou implementar o método fala.
 Porque ela não possui get e set para seu atributo.
Correto!
 Porque ela é uma classe abstrata e serve apenas para herança.
Alternativa correta.
O “abstract” logo na primeira linha indica que ela é uma classe abstrata. Classes abstratas não podem ser
utilizadas para instanciar objetos, apenas para realizar herança. Classes abstratas não são interfaces: elas
servem para herança e podem ter métodos implementados e atributos que podem ser herdados, enquanto a
interface serve apenas para obrigar outras classes a implementar métodos específicos.
O método “fala” não estar implementado é um impeditivo, porque classes com métodos não implementados
devem ser abstratas, porém, simplesmente implementar o método não resolveria: a palavra “abstract” no topo
manterá a classe abstrata mesmo que seus métodos estejam todos implementados.
Analise o código abaixo:
 
abstract class Pessoa {
 public String nome;
 
 public Pessoa(){
 // ...
 }
 private void anda()
 {
 // ...
 }
 protected abstract void fala();
}
 
Considerando o código exposto acima, por que não podemos criar objetos da classe Pessoa?
 
A+
A
A-
29/04/2024, 10:55 AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 9/11
Apesar de o padrão ser atributos serem privados, métodos serem públicos e métodos get e set serem
disponibilizados para acessar os atributos, nada disso é obrigatório, e não seguir o padrão não é impeditivo
para que a classe funcione ou possa ser instanciada.
 Porque ela possui erros: atributo público e métodos private e protected.
 Porque ela é uma interface.

Pergunta 9
0 / 0,6 pts
 static ou void.
Resposta correta
 public, abstract ou final.
 this.
 int, float, double ou String.
Você respondeu
 public, private ou protected.
A alternativa está incorreta, pois public, private ou protected são modificadores de acesso de atributos ou
métodos da classe, e não modificadores de acesso a nível de classe.
É correto afirmar que o qualificador é um elemento opcional e quando usado deve ser representado por um dos
valores: public, abstract ou final. Quando ocorre o uso do qualificador public, antes do nome de uma classe,
normalmente é em uma classe pública e pode ser usada de uma forma muito extensa. Uma classe abstract
Leia o texto abaixo:
 
Uma classe na linguagem Java pode ser um tipo de dado usado pelo programador com a instrução class, ou
um objeto já definido em algum pacote interno da linguagem. Uma classe possui a característica de agregar
objetos, formando um conjunto de objetos (quando houver mais de um objeto definido em uma determinada
classe), os quais possuem características de armazenamento de dados (seus atributos) e funcionalidades (seus
métodos). Uma classe é declarada com a instrução class, que possui a seguinte sintaxe:
 
<qualificador> class [<nome da classe>] {
 <lista dos tipos e seus atributos)>
 <lista dos métodos>
}
 
 
Fonte: MANZANO, J. A. N. G. Java 7: programação de computadores: guia prática de introdução, orientação e
desenvolvimento. São Paulo: Érica, 2011.
 
O qualificador é um elemento opcional e quando usado, deve ser representado por
A+
A
A-
29/04/2024, 10:55 AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 10/11
torna-se explicitamente abstrata, diferenciando-se de uma classe concreta. As classes concretas permitem o
uso de estâncias delas, enquanto uma classe abstrata não permite estâncias. Uma classe final não permite que
outras classes herdem dela suas características.

Pergunta 10
0,6 / 0,6 pts
 O valor a ser depositado seria um atributo do objeto conta bancária.
 O valor a ser depositado seria uma exceção da classe conta bancária.
 O valor a ser depositado deve ser determinado internamente pelo método depósito, seguindo o princípio da abstração.
Correto!
 O valor a ser depositado seria um parâmetro do método depósito.
Alternativa correta.
O valor a ser depositado é uma informação que não é intrínseca do objeto (portanto não pode ser um atributo),
nem é gerada pela própria função depósito (não podendo ser, portanto, “determinada internamente”), e sim uma
informação externa que precisa ser informada para o método depósito. Se o método é a forma de passar
mensagens, então essa informação deve ser um parâmetro do método. Herança e exceção nem sequer se
aplicam à situação descrita no texto.
 O valor a ser depositado seria uma classe filha da classe conta bancária.
Pontuação do teste: 5,4 de 6
Leia o texto 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. Adaptado.
 
Considerando o exemplo em destaque no fim do texto acima, assinale a opção que melhor descreve como
representar o valor a ser depositado.
 
A+
A
A-
29/04/2024, 10:55 AO2: Programação Orientada a Objetos
https://famonline.instructure.com/courses/20544/quizzes/91797?module_item_id=437569 11/11

Continue navegando