WorksheetsAvaliação de Desempenho - 2º Bimestre - POO
Total questions: 10
Worksheet time: 5mins
(0,15) A Máquina Virtual Java (JVM) é o componente central da plataforma Java, responsável por executar programas compilados em bytecode. Esse bytecode é independente de hardware e sistema operacional, garantindo portabilidade. A JVM realiza a tradução de bytecodes em instruções nativas por meio do JIT (Just-In-Time compiler), otimizando o desempenho em tempo de execução. Além disso, ela gerencia memória, executa a coleta de lixo (garbage collection) e realiza verificação de segurança do código antes e durante a execução. Considere as afirmações: I. O uso de bytecodes permite que o mesmo programa Java seja executado em diferentes sistemas operacionais. II. A JVM apenas interpreta bytecodes, não sendo capaz de compilá-los para código nativo. III. O coletor de lixo da JVM é responsável por liberar memória de objetos não mais referenciados. IV. A JVM contribui para a segurança da execução, validando o código antes de executá-lo. Assinale a alternativa correta.
I, III e IV, apenas.
I, II, III e IV.
II e IV, apenas.
I e II, apenas.
I e III, apenas.
(0,15) A Programação Orientada a Objetos (POO) é um paradigma amplamente utilizado na construção de sistemas complexos e escaláveis, com mecanismos para estruturar o software de forma modular e reutilizável. Fundamentada em princípios como abstração, encapsulamento, herança e polimorfismo, a POO modela elementos do mundo real em objetos computacionais e estabelece relações hierárquicas entre classes. Pesquisas apontam desafios no ensino desses conceitos; estudos da Sociedade Brasileira de Computação destacam que o domínio de herança e polimorfismo é essencial não apenas para codificação eficiente, mas também para aplicar princípios de design de software, como SOLID, garantindo baixo acoplamento e alta coesão entre componentes. Considerando essas informações, avalie as asserções e a relação proposta entre elas: I. O uso adequado da herança em POO favorece o reuso e a extensibilidade de código, permitindo que subclasses expandam comportamentos de superclasses sem necessidade de alterar a estrutura original, contribuindo para a modularidade e a manutenibilidade do sistema. PORQUE II. A herança define uma relação semântica de especialização entre classes, na qual uma subclasse herda atributos e métodos de uma superclasse. Quando empregada fora de uma hierarquia conceitualmente coerente, para fins puramente de reutilização de código, a herança fere princípios fundamentais de projeto, resultando em acoplamento indevido e comprometendo a coesão do sistema. Assinale a opção correta.
A asserção I é verdadeira, e a II é falsa.
As asserções I e II são verdadeiras, e a II é uma justificativa correta da I.
As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.
A asserção I é falsa, e a II é verdadeira.
(0,15) O Brasil apresenta um quadro histórico de desigualdade regional, que remonta à década de 1950, sendo comumente descrito pela metáfora dos “dois Brasis”: um mais desenvolvido, representado pelas regiões Sul e Sudeste, e outro mais vulnerável, identificado no Norte e Nordeste. Essa heterogeneidade expressa-se não apenas na renda, mas também no acesso a direitos sociais fundamentais, como saúde, educação e igualdade de gênero. Grin et al. (2021) destacam que “o desenvolvimento humano não pode ser reduzido ao crescimento econômico, pois envolve a expansão das capacidades humanas e das liberdades políticas, civis e sociais”. A partir da ótica dos Objetivos de Desenvolvimento Sustentável (ODS), especialmente saúde (ODS 3), educação (ODS 4), igualdade de gênero (ODS 5) e redução das desigualdades (ODS 10), evidencia-se a urgência de políticas públicas diferenciadas para garantir inclusão e equidade territorial. O desafio central é compatibilizar desenvolvimento regional com desenvolvimento humano, em um país marcado por profundas disparidades sociais. Considerando as ideias apresentadas, assinale a alternativa correta:
As desigualdades regionais brasileiras expressam apenas diferenças climáticas e geográficas, não estando relacionadas ao acesso desigual a políticas sociais.
A metáfora da “Belíndia” ilustra a coexistência de regiões com padrões de vida semelhantes aos da Bélgica e outras mais próximas da realidade da Índia, reforçando a dualidade do desenvolvimento nacional.
O enfoque nos ODS 3, 4, 5 e 10 limita a análise do desenvolvimento humano ao âmbito internacional, sem aplicabilidade prática no contexto brasileiro.
O desenvolvimento humano, segundo Grin et al. (2021), é mensurado exclusivamente pelo Produto Interno Bruto, sendo as desigualdades regionais explicadas por fatores econômicos.
A análise das desigualdades regionais propõe a homogeneização de políticas públicas, uma vez que o país apresenta pouca diversidade socioeconômica entre suas regiões.
Analise o código a seguir, que simula um controle de estoque para produtos de um e-commerce, e avalie as asserções apresentadas e a relação proposta entre elas.
I. O encapsulamento da classe Produto assegura que os atributos nome e preco sejam acessíveis apenas por métodos específicos, evitando manipulações externas indevidas e garantindo maior controle sobre os dados armazenados. PORQUE II. O método resetarEstoque(), ao redefinir o atributo quantidadeTotal para zero, faz com que todos os objetos Produto anteriormente criados sejam automaticamente removidos da memória, impedindo o acesso às suas informações previamente armazenadas. A respeito dessas asserções, assinale a opção correta:
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 falsa, e a II é uma proposição verdadeira.
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.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
Em Java, todos os programas são estruturados a partir de classes, e o encapsulamento e a abstração garantem que os detalhes internos sejam ocultos e a interação ocorra apenas por interfaces públicas. Avalie as assertivas e a relação entre elas: I. O paradigma orientado a objetos favorece a modularidade e a reutilização do código. PORQUE II. O encapsulamento restringe o acesso direto aos atributos, forçando o uso de métodos controlados para manipular o estado interno. A respeito dessas assertivas, assinale a opção correta: a) A assertiva I é verdadeira, e a II é falsa. b) A assertiva I é falsa, e a II é verdadeira. c) As assertivas I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. d) As assertivas I e II são proposições verdadeiras, e a II é uma justificativa correta da I. e) As assertivas I e II são falsas.
A assertiva I é verdadeira, e a II é falsa.
A assertiva I é falsa, e a II é verdadeira.
As assertivas I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I.
As assertivas I e II são proposições verdadeiras, e a II é uma justificativa correta da I.
As assertivas I e II são falsas.
O polimorfismo permite que diferentes classes implementem o mesmo método de formas distintas, via herança ou interfaces. Quais afirmações estão corretas? I. Permite invocar métodos diferentes a partir de uma mesma referência. II. A decisão sobre qual método será executado ocorre em tempo de compilação. III. O uso de interfaces em Java é um exemplo de polimorfismo. IV. Favorece o reuso e a flexibilidade de código. Assinale a alternativa correta: a) I, III e IV, apenas. b) II e IV, apenas. c) I, II, III e IV. d) I e II, apenas. e) III e IV, apenas.
I, III e IV, apenas.
II e IV, apenas.
I, II, III e IV.
I e II, apenas.
III e IV, apenas.
Considere o código-fonte apresentado (classe Animal com método emitirSom imprimindo "Som genérico de animal"; classes Cachorro e Gato estendem Animal e sobrescrevem emitirSom para imprimir, respectivamente, "Latido" e "Miado"; no método main, são criadas as referências Animal a1 = new Cachorro(); e Animal a2 = new Gato(); em seguida, a1.emitirSom(); a2.emitirSom();). Qual será a saída do programa? a) Cachorro / Gato b) Latido / Miado c) Erro de compilação d) Som genérico de animal e) Som genérico de animal / Som genérico de animal
Cachorro / Gato
Latido / Miado
Erro de compilação
Som genérico de animal
Som genérico de animal / Som genérico de animal
Em aplicações Java, o tratamento de exceções é essencial para a estabilidade do sistema. As exceções são tratadas por meio de blocos try, catch e finally; a palavra-chave throw lança uma exceção e throws é usada na assinatura de métodos que podem lançá-las. Considere as afirmações: I. O bloco finally será executado sempre, independentemente de uma exceção ter sido lançada ou não. II. A palavra-chave throw é usada para lançar exceções, enquanto throws é usada na definição de métodos que podem lançar exceções. III. Exceções que herdam de RuntimeException são obrigatoriamente tratadas com try-catch ou lançadas com throws. Quais estão corretas?
Apenas I
Apenas II
I e II, apenas
I e III, apenas
I, II e III
Considerando os princípios da Programação Orientada a Objetos em Java, as boas práticas de encapsulamento e consistência entre objetos, identifique qual implementação do método realizarCompra() melhor representa a aderência aos requisitos de negócio e ao paradigma da POO, assegurando a correta atualização do sistema e a robustez da aplicação. Opções de implementação: a) public boolean realizarCompra(Produto produto, Cliente cliente, int quantidade) { if (produto.getEstoqueProduto() < quantidade) return false; this.codProduto = produto.getCodProduto(); this.codCliente = cliente.getCodCliente(); this.quantidade = quantidade; produto.setEstoqueProduto(produto.getEstoqueProduto() - quantidade); return true; } b) public void realizarCompra(Produto produto, Cliente cliente, int quantidade) { this.codProduto = produto.getCodProduto(); this.codCliente = cliente.getCodCliente(); this.quantidade = quantidade; produto.setEstoqueProduto(produto.getEstoqueProduto() - quantidade); } c) public boolean realizarCompra(Produto produto, Cliente cliente, int quantidade) { if (produto.getEstoqueProduto() >= quantidade && quantidade > 0) { this.codProduto = produto.getCodProduto(); this.codCliente = cliente.getCodCliente(); this.quantidade = quantidade; produto.setEstoqueProduto(produto.getEstoqueProduto() - quantidade); cliente.setCodUltimoPedido(this.codP...) } } Regras de negócio que o método deve cumprir: - Verificar disponibilidade de estoque. - Manter a integridade entre os objetos Cliente e Produto, atualizando o estoque. - Retornar um valor capaz de indicar sucesso ou falha da operação.
a) Implementação que valida o estoque, atualiza os dados e retorna true/false.
b) Implementação que atualiza dados e estoque, mas não retorna resultado.
c) Implementação que valida estoque e quantidade, altera também dados adicionais do cliente e não apresenta caminho explícito de retorno.
Considere o código abaixo. Ao executar o programa, qual será a saída no console:
Erro de compilação, pois o método somar está sobrescrito incorretamente.
5 / 25 / 5.0
4 / 9 / 25
5.0 / 5.0 / 25.0
25 / 5 / 5.0
