Logo Passei Direto
Buscar

Programação Orientada a Objetos - AO2

Ferramentas de estudo

Questões resolvidas

Material

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

Prévia do material em texto

26/06/2024, 18:39 AO2: Programação Orientada a Objetos AO2 Entrega 16 jun em 23:59 Pontos 6 Perguntas 10 Disponível 3 jun em 0:00 - 16 jun em 23:59 Limite de tempo Nenhum A+ Tentativas permitidas 2 A Instruções A- 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. Este teste foi travado 16 jun em 23:59. Histórico de tentativas Tentativa Tempo Pontuação MAIS RECENTE Tentativa 1 39 minutos 6 de 6 Pontuação desta tentativa: 6 de 6 Enviado 5 jun em 10:45 Esta tentativa levou 39 minutos. Pergunta 1 0,6 / 0,6 pts Analise o código abaixo: void foo (Automovel a) { a.locomocao(); void bar () { Conversivel C = new Conversivel(); foo(c); } Sabendo que Conversivel é subclasse de Automovel, analise as afirmações abaixo sobre o código: https://famonline.instructure.com/courses/35616/quizzes/176671 1/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos I. Na função bar, C é um Automovel. II. Na função foo, a é um Conversivel. A+ III. No método bar, o método sendo chamado na primeira linha é determinado em tempo de A compilação. A- 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: Correto! 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 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 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 construtor a 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. III e IV, apenas. e II, apenas. https://famonline.instructure.com/courses/35616/quizzes/176671 2/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos e III, apenas. e IV, apenas. Pergunta 2 pts Leia o texto a seguir: A+ A Quando uma classe implementa uma interface, o mesmo relacionamento "é um" fornecido por A- herança se aplica. A classe Employee implementa Payable, assim podemos dizer que um Emp é uma Payable. De fato, objetos de quaisquer classes que estendem Employee também são ob Payable. Os objetos de quaisquer subclasses da classe que implementa a interface também pc ser pensados como objetos do tipo de interface. Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017, p. 337. Adaptado. Considerando as informações apresentadas, avalie as asserções abaixo e a relação proposta entre elas: I. Existe uma relação de polimorfismo entre uma classe que implementa uma interface e a interface, isso é, objetos da classe podem ser tratados como objetos "da interface". PORQUE II. A relação entre uma classe e uma interface pode ser utilizada para realizar herança, transmitindo códigos prontos, como métodos, que podem ser utilizados pelos objetos de suas subclasses, apesar de ser impossível instanciar objetos de uma interface. A respeito dessas asserções, assinale a opção correta: A asserção e a asserção II são proposições verdadeiras, mas a não é uma justificativa correta da I. A asserção e a asserção são proposições verdadeiras, e a Il é uma justificativa correta da I. A asserção e a asserção são proposições falsas. A asserção é uma proposição falsa e a asserção é uma proposição verdadeira https://famonline.instructure.com/courses/35616/quizzes/176671 3/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos Correto! A asserção é uma proposição verdadeira, e a asserção II é uma proposição falsa. Alternativa correta. Interfaces servem, precisamente, para permitir o polimorfismo entre objetos de classes não relacionadas. Ao implementar uma interface, uma classe "assume o compromisso" de implementar todos os métodos declarados na interface. Apesar de a funcionalidade interna poder ser diferer A+ assinatura será a mesma, isso quer dizer que todo código feito para interagir com um "objeto da interface" poderá interagir com objetos daquela classe, pois o código espera um certo conjunto A métodos e este conjunto estará disponível. A asserção é verdadeira. A- Porém, a relação entre uma classe e uma interface não é de herança. A interface não nenhum tipo de código pronto, nem possui métodos implementados, ela possui apenas as assinaturas dos métodos, e todas as classes devem implementar esses métodos, cada qual à sua maneira. Por este motivo, a asserção é falsa. Pergunta 3 pts 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, 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. https://famonline.instructure.com/courses/35616/quizzes/176671 4/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos 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: Correto! III, apenas. A+ Alternativa correta. A A programação orientada a objeto possui um conjunto de princípios, mas para que eles sejam A- implementados, a linguagem precisa oferecer suporte a uma série de estruturas específicas, 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 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. e III, apenas. II, apenas. e III, apenas. le II, apenas. Pergunta 4 0,6 / 0,6 pts Observe o código a seguir: class Carregador { float tensao; float corrente; float potencia; public Carregador() { https://famonline.instructure.com/courses/35616/quizzes/176671 5/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos } public void carregar(Bateria b) { A+ } A A- Assinale a afirmação correta sobre o código acima: A classe Carregador sobrecarrega construtores. Um dos atributos da classe Carregador é "carregar". 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". Pergunta 5 0,6 / 0,6 pts 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 https://famonline.instructure.com/courses/35616/quizzes/176671 6/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos 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, DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017, p. 356. Adaptado. A+ A Considerando as informações apresentadas, analise as afirmações abaixo: A- I. Se um método "A" chama um método "B" que lança "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: I, 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 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 https://famonline.instructure.com/courses/35616/quizzes/176671 7/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos compilação ou na execução, dependendo do tipo de exceção). Por isso a afirmação também está incorreta. I e II, apenas. II, III e IV, apenas. e III, apenas. A+ Pergunta 6 pts A Leia o texto a seguir: A- Ao dirigir um carro, o ato de pressionar o acelerador envia uma mensagem para o veículo realiza uma tarefa isto é, 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. valor a ser depositado deve ser determinado internamente pelo método depósito, seguindo o princípio da abstração. valor a ser depositado seria um atributo do objeto conta bancária. valor a ser depositado seria uma classe filha da classe conta bancária. Correto! valor a ser depositado seria um parâmetro do método depósito. Alternativa correta. 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. 8/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos valor a ser depositado seria uma exceção da classe conta bancária. Pergunta 7 Leia o texto a seguir: A+ A maioria das declarações de variável de instância é precedida pela palavra-chave private. Da A mesma forma que public, private é um modificador de acesso. As variáveis ou métodos declara com o modificador de acesso private só são acessíveis a métodos da classe em que isso ocorr A- 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. 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: As asserções I e são proposições verdadeiras, mas a asserção não é uma justificativa correta da I. A asserção I é uma proposição verdadeira e a asserção é uma proposição falsa As asserções e são proposições verdadeiras e a asserção é uma justificativa correta da I. As asserções e são proposições Correto! A asserção I é uma proposição falsa e a asserção é uma proposição verdadeira. Alternativa correta. 9/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos 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 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 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é A+ lógica dos métodos, podendo inclusive vetar alterações. A Pergunta 8 A- 0,6 / 0,6 pts 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? Porque faltou implementar o método fala. Porque ela é uma interface. Porque ela possui erros: atributo público e métodos private e protected. Porque ela não possui get e set para seu atributo. https://famonline.instructure.com/courses/35616/quizzes/176671 10/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos 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 A+ podem ser herdados, enquanto a interface serve apenas para obrigar outras classes a impleme métodos específicos. A O método "fala" não estar implementado é um impeditivo, porque classes com métodos não A- implementados devem ser abstratas, porém, simplesmente implementar o método não resolveria palavra "abstract" no topo manterá a classe abstrata mesmo que seus métodos estejam todos implementados. 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. Pergunta 9 pts Leia o texto a seguir: Uma nova classe de objetos pode ser criada convenientemente por meio de herança - ela (chamada subclasse) começa com as características de uma classe existente (chamada superclasse), possivelmente as personalizando e adicionando aspectos próprios. Na nossa analogia do carro, um objeto da classe "conversível" decerto é um objeto da classe mais geral "automóvel", mas, especificamente, o teto pode ser levantado ou baixado. Fonte: DEITEL, H.; DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017, pp. 9-10. Considerando a analogia acima, assinale a alternativa correta: método para levantar ou abaixar o teto existe em "automóvel" e pode ser usado diretamente em "conversível" por herança. método para levantar ou abaixar o teto existe em "automóvel", mas só poderá ser usado em "conversível" se for protected ou public. Correto! https://famonline.instructure.com/courses/35616/quizzes/176671 11/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos O método para levantar ou abaixar o teto não existe em "automóvel", mas pode ser criado em "conversível". Alternativa correta. Segundo o texto, como "conversível" é uma classe mais específica do que "automóvel", mas também é "automóvel", podemos concluir que "conversível" é subclasse de "automóvel", ou seja, é classe herdeira de "automóvel". O texto também diz que algo específico da classe "conversível" é a capacidade de abaixar ou levantar o teto. Isso indica que estamos falando de uma capacidade A+ existe na subclasse, ou classe filha, e não existe na superclasse, ou classe mãe. Portanto, é al que não é herdado e deve ser implementado diretamente pela classe filha. Sobreposição seria A reescrever algo que já foi herdado, e sobrecarga seria fornecer múltiplas implementações difer A- e nenhum deles se aplica neste caso. O método para levantar ou abaixar o teto existe em "automóvel", mas deve ser sobreposto. método para levantar ou abaixar o teto existe em "automóvel", mas deve ser sobrecarregado. Pergunta 10 pts 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 I. A programação orientada a objeto adota princípios como a abstração, o encapsulamento, a herança e o polimorfismo. PORQUE 12/1326/06/2024, 18:39 AO2: Programação Orientada a Objetos 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. A+ Correto! A A asserção é uma proposição verdadeira, e a asserção II é uma proposição falsa. A- 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 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. 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 está incorreta. As asserções e são proposições verdadeiras, e a é uma justificativa correta da I. As asserções e são proposições verdadeiras, mas a não é uma justificativa correta da I. As asserções e são proposições falsas. A asserção é uma proposição falsa e a asserção é uma proposição verdadeira. Pontuação do teste: 6 de 6 13/13

Mais conteúdos dessa disciplina