WorksheetsPSC - JAVA (revisão)
Total questions: 19
Worksheet time: 21mins
Considere que você está desenvolvendo um sistema de gerenciamento de biblioteca. Nesse sistema, você tem uma classe base chamada Livro, que contém atributos como titulo, autor, isbn e métodos para gerenciar esses atributos. Para diversificar as funcionalidades do sistema, você decide criar novas classes para diferentes tipos de livros, como LivroFisico e Ebook, que terão atributos específicos adicionais, como peso para LivroFisico e formatoArquivo para Ebook, além de compartilhar os atributos da classe Livro. Nesse cenário, qual é o papel da herança na programação orientada a objetos?
Permitir a criação das classes LivroFisico e Ebook com base na classe Livro, estendendo suas funcionalidades e reutilizando código para gerenciar atributos comuns como titulo, autor, e isbn.
Garantir que todas as classes, incluindo Livro, LivroFisico, e Ebook, compartilhem exatamente os mesmos métodos e atributos, para promover uma padronização completa do código em todo o sistema de gerenciamento da biblioteca.
Fornecer uma maneira de desenvolver interfaces de usuário mais complexas especificamente para LivroFisico e Ebook, facilitando a interação dos usuários com diferentes tipos de livros no sistema operacional.
Encapsular dados dentro de métodos privados na classe Livro, assegurando que o estado interno dos objetos LivroFisico e Ebook só possa ser alterado através de operações definidas na classe Livro.
Utilizar a herança para criar um sistema de controle de versões para os livros, permitindo que LivroFisico e Ebook representem diferentes versões do mesmo título, mantendo um histórico de alterações.
A lógica de programação é fundamental para o desenvolvimento de algoritmos, que consistem em uma série de passos ou comandos organizados de maneira específica e executados em um tempo finito para solucionar um problema. Com base nesse conceito, analise as afirmações a seguir:
I) Um algoritmo pode ser representado de diferentes formas, como pseudocódigo, fluxogramas ou linguagens de programação, sem perder sua essência lógica.
II) A eficiência de um algoritmo está relacionada apenas à capacidade de desenvolvimento do programador, independentemente da velocidade de execução, do uso de recursos como memória ou processamento.
III) A lógica de programação envolve, entre outros aspectos, a capacidade de decompor um problema em partes menores e resolver cada uma delas de forma estruturada.
IV) Um algoritmo sempre produzirá o mesmo resultado para uma determinada entrada, desde que suas instruções sejam seguidas corretamente.
V) A repetição de instruções em um algoritmo só é permitida quando não houver outra forma de resolver o problema.
A afirmação correta é somente a constante em:
I e II
II e IV
I,III e IV
III e V
Todas as alternativas estão corretas
A lógica de programação é essencial para a criação de algoritmos, que são essencialmente a especificação de um conjunto limitado de passos ou comandos que precisam ser seguidos em uma ordem específica e dentro de um tempo limitado para alcançar um resultado desejado, ou seja, resolver um problema. Com base nesse entendimento de algoritmos, considere as afirmações a seguir:
I) A sequência lógica é a realização das operações ou instruções na ordem correta para alcançar um objetivo ou resolver um problema.
II) Um algoritmo pode ter apenas uma única sequência lógica de instruções que leva à sua solução.
III) A lógica de programação é a arte de ordenar pensamentos para alcançar um objetivo específico.
IV) Uma instrução é um conjunto de diretrizes ou normas estabelecidas para executar uma tarefa que culmina em uma ação específica.
A afirmação correta é somente a constante em:
I e II
I e III
II e IV
I, III e IV
II, III e IV
Uma rede de lojas de varejo com mais de 20 anos de mercado está expandindo suas operações para o comércio eletrônico, criando um aplicativo móvel para facilitar o acesso dos clientes aos seus produtos. O aplicativo deve permitir que os usuários filtrem os produtos disponíveis de acordo com critérios como categoria, preço e popularidade. O objetivo é melhorar a experiência do usuário, permitindo que ele encontre rapidamente os produtos de seu interesse em um catálogo com milhares de itens.
Como desenvolvedor responsável pela implementação dessa funcionalidade de filtragem, você deve escolher a estrutura de controle mais adequada para organizar e aplicar os filtros com eficiência, garantindo que o aplicativo responda rapidamente às solicitações dos usuários.
Assinale a alternativa que contém a estrutura de controle mais apropriada para implementar essa lógica de filtragem de produtos:
Estrutura condicional if/else
Estrutura de repetição for
Switch/case
Fila de prioridade
Loop while
Uma fintech está desenvolvendo um aplicativo bancário para oferecer diferentes modalidades de contas, entre elas conta corrente e poupança, cada uma com suas próprias regras.
Qual conceito de programação orientada a objetos é mais adequado para garantir que essas contas compartilhem atributos comuns, mas possam ter comportamentos diferentes?
Uma startup fintech brasileira, com foco em inclusão financeira, está desenvolvendo um aplicativo bancário inovador que visa atender tanto a jovens empreendedores quanto a aposentados que desejam investir suas economias. O aplicativo oferecerá diferentes tipos de contas, como conta corrente, poupança e investimento, cada uma com suas próprias regras de operação, taxas e limites. Por exemplo, a conta corrente deve permitir saques e transferências sem limites diários, enquanto a conta poupança deve restringir a quantidade de saques mensais para incentivar o hábito de poupar. Além disso, o aplicativo deve ser fácil de expandir para incluir novos tipos de contas no futuro, conforme a startup cresce e diversifica seus serviços.
Dado este cenário, existe um conceito de programação orientada a objetos que é mais adequado para garantir que todas as contas compartilhem atributos comuns (como saldo e titularidade), mas que, ao mesmo tempo, possam ter comportamentos específicos e únicos (como regras de operação e cálculos de juros). Com base nisso, assinale a opção que descreve corretamente esse conceito.
Encapsulamento
Herança
Polimorfismo
Composição
Interface
Uma empresa de logística está desenvolvendo um sistema para controle de veículos. Para isso, um desenvolvedor criou a seguinte estrutura de classes em Java:
Com base no código apresentado e nos conceitos de programação orientada a objetos em Java, assinale a alternativa correta:
O código resultará em erro de compilação, pois a classe Caminhao está sobrescrevendo um método da classe Veiculo.
O código imprimirá "Veículo em movimento." no console, pois a variável v é do tipo Veiculo.
O polimorfismo não pode ser aplicado nesse exemplo, já que a variável foi declarada como Veiculo.
O código imprimirá "Caminhão em movimento." no console, demonstrando o uso de polimorfismo em tempo de execução.
Para acessar o método mover() da classe Caminhao, seria necessário fazer um cast explícito da variável v para Caminhao.
Encapsulamento é um conceito-chave ao trabalhar com programação orientada a objetos (POO). Formalmente, o encapsulamento não é nada além do que combinar dados e comportamento em um pacote de modo a proteger detalhes de implementação do objeto.
HORSTMANN, Cay S.; CORNELL, Gary. Core Java 1. Rio de Janeiro: Alta Books, 2005.
Assinale a alternativa que apresenta a alternativa correta que melhor descreve o objetivo do encapsulamento.
Permitir que qualquer parte do código acesse diretamente os atributos de um objeto.
Promover a abstração, ocultando os detalhes de implementação e expondo apenas as funcionalidades essenciais.
Criar classes abstratas que não podem ser instanciadas.
Herdar atributos e métodos de uma classe para outra.
Implementar polimorfismo, permitindo que objetos de diferentes classes sejam tratados como se fossem de uma mesma classe.
A Programação Orientada a Objetos (POO), surgiu na década de 70, diz respeito a um padrão de desenvolvimento que é seguido por muitas linguagens, como C# e Java. É um paradigma que utiliza objetos como elementos fundamentais na construção da solução computacional. Segundo BARNES (2008), um objeto é uma abstração de algum fato ou ente do mundo real, com atributos que representam as suas caraterísticas ou propriedades, e métodos que emulam o seu comportamento ou atividade. Todas as propriedades e métodos comuns aos objetos encapsulam-se ou agrupam-se em classes, que são modelos ou protótipos para se criar objetos. No geral, dizemos que cada objeto é uma instância ou exemplar de uma classe.
Para entendermos exatamente do que se trata a orientação a objetos, devemos entender quais são os requerimentos de uma linguagem para ser considerada nesse paradigma. Para isso, a linguagem precisa atender a quatro tópicos bastante importantes, sendo chamados de os "4 pilares da POO".
Com relação a esses conceitos e fundamentos, marque a alternativa correta que configura os 4 pilares da programação orientada a objetos.
Encapsulamento, Herança, Polimorfismo e Abstração
Encapsulamento, Herança, Polimorfismo e Interface
Encapsulamento, Composição, Polimorfismo e Abstração
Encapsulamento, Herança, Polimorfismo e Classes
Encapsulamento, Polimorfismo, Classes e Objetos
A programação orientada a objetos é uma abordagem de programação que utiliza objetos e classes para organizar e estruturar o código. Um dos conceitos importantes nesse paradigma é a sobrecarga, que permite que métodos ou funções tenham o mesmo nome, mas com diferentes parâmetros. De acordo com Deitel et al. (2017), a sobrecarga é "o mecanismo pelo qual duas ou mais funções em uma classe têm o mesmo nome, mas parâmetros diferentes".
Considerando esse conceito, qual das alternativas abaixo melhor representa a sobrecarga na programação orientada a objetos?
Sobrecarga permite que métodos tenham o mesmo nome e os mesmos parâmetros, mas com implementações diferentes, facilitando a reutilização de código.
Sobrecarga é a capacidade de uma classe herdar propriedades e métodos de outra classe, permitindo a criação de hierarquias de classes.
Sobrecarga é a possibilidade de uma classe ter métodos com o mesmo nome e a mesma quantidade de parâmetros, mas com tipos de parâmetros diferentes.
Sobrecarga permite que métodos tenham o mesmo nome, mas com diferentes tipos de retorno, tornando o código mais flexível e genérico.
Sobrecarga é a capacidade de uma classe ter métodos com o mesmo nome e a mesma quantidade de parâmetros, mas com implementações diferentes, permitindo a polimorfismo.
Na computação, o conceito de abstração é fundamental para lidar com problemas complexos. Ele permite ao desenvolvedor construir modelos que destacam apenas os aspectos essenciais para a solução, ignorando detalhes que não são relevantes no contexto.
Com base nisso, assinale a alternativa que melhor representa o conceito de abstração em computação:
Abstração consiste em eliminar todas as informações de um problema para facilitar sua compreensão.
Abstração é o processo de transformar código de alto nível em linguagem de máquina para execução eficiente.
Abstração envolve representar um problema com suas principais características, ocultando os detalhes irrelevantes à solução.
Abstração é a técnica de maximizar a performance de um algoritmo ignorando sua legibilidade.
Abstração é a prática de codificar todos os aspectos possíveis de um problema para garantir exatidão.
Em uma instituição de ensino superior, está sendo desenvolvido um sistema acadêmico que precisa modelar diferentes perfis de usuários (alunos, professores e funcionários) com comportamentos específicos, mas compartilhando características comuns. O sistema foi projetado seguindo os princípios de Programação Orientada a Objetos, com atenção especial aos conceitos de herança, polimorfismo e classes abstratas. A modelagem do sistema apresenta a seguinte estrutura:
Classe Abstrata Usuario
Atributos comuns a todos:
nome (texto)
matricula (número único)
Métodos:
acessarSistema(): Método que retorna "Acesso concedido" para todos os usuários.
gerarRelatorio(): Método que deve ser implementado por cada subclasse.
Subclasses Concretas:
Aluno
Implementa gerarRelatorio() retornando "Relatório acadêmico (histórico escolar)"
Professor
Implementa gerarRelatorio() retornando "Relatório docente (planejamento de aulas)"
Situação Problema
Durante a execução do sistema:
São criados:
Um objeto Aluno (nome: "Maria", matrícula: 123)
Um objeto Professor (nome: "Carlos", matrícula: 456)
Assinale a única alternativa correta, sabendo que para cada objeto criado foram chamados os métodos acessarSistema() e gerarRelatorio(). Qual será a saída exibida pelo sistema?
Acesso concedido Relatório acadêmico Acesso concedido Relatório docente
Acesso concedido Relatório padrão Acesso concedido Relatório padrão
Erro: Não é possível chamar os métodos separadamente.
Acesso concedido Erro: Método não implementado Acesso concedido Erro: Método não implementado
Relatório acadêmico Relatório docente
Avaliar a seguinte asserção: "Em Programação Orientada a Objetos (POO), a herança permite que uma classe herde atributos e métodos de outra classe, facilitando a reutilização de código".
Verdadeira, pois a herança é um dos princípios fundamentais da POO, permitindo a criação de classes mais especializadas a partir de classes mais genéricas.
Falsa, pois a herança em POO apenas permite a criação de novos atributos para uma classe, não influenciando na reutilização de código.
Falsa, pois a herança em POO não tem relação com a reutilização de código, apenas com a estruturação de classes.
Falsa, pois a herança em POO apenas permite a herança de atributos, não de métodos.
Falsa, pois a herança em POO é um conceito obsoleto e pouco utilizado na prática atual.
Na orientação a objetos, um método é uma função associada a uma classe, responsável por definir comportamentos específicos de seus objetos. Métodos permitem que as instâncias de uma classe realizem ações/procedimentos com suas variáveis. Eles também podem receber informações através de parâmetros e devolver resultados ao serem chamados.
Analise as afirmativas a seguir:
I. Métodos são utilizados para definir comportamentos de objetos, permitindo que instâncias de uma classe realizem ações ou manipulem seus próprios dados.
II. Em orientação a objetos, métodos de uma classe não podem ser chamados diretamente sem a necessidade de criar uma instância da classe.
III. A sobrecarga de métodos permite que uma classe tenha múltiplos métodos com o mesmo nome, desde que eles possuam parâmetros diferentes, promovendo flexibilidade na sua chamada.
IV. Métodos que não alteram os dados de uma classe devem ser evitados, pois não contribuem para o comportamento do objeto.
Com base nos conceitos de métodos em orientação a objetos e nas afirmações acima, assinale a alternativa correta:
Somente as afirmativas I e II estão corretas.
Somente as afirmativas II e IV estão corretas.
Somente as afirmativas I e III estão corretas.
Somente as afirmativas I, II e III estão corretas.
Apenas as afirmativas II, III e IV estão corretas.
Imagine que uma empresa está desenvolvendo um jogo chamado "Zoológico Mágico", no qual diversas criaturas herdam comportamentos de classes básicas.
Existe uma classe Criatura que define atributos comuns como nome e idade, além de um método FazerSom(). A partir dela, surgem classes como Dragão, Fênix e Unicórnio, cada uma redefinindo o método FazerSom() com sons característicos.
Com base nesse cenário, assinale a alternativa que melhor representa o papel da herança no desenvolvimento desse jogo:
A herança impede que as criaturas mágicas compartilhem atributos com a classe base, forçando a duplicação de código.
A herança permite reutilizar atributos e comportamentos comuns, além de especializar comportamentos conforme o tipo da criatura.
A herança elimina a necessidade de métodos distintos para cada criatura, tornando todos os comportamentos exatamente iguais.
A herança serve apenas para agrupar visualmente as criaturas no código, sem implicações funcionais.
A herança é usada apenas para copiar código de uma classe para outra, sem permitir modificações posteriores.
O desenvolvimento de aplicações utilizando a orientação a objetos envolve o uso de classes e objetos. O uso desse paradigma está associado ao desejo de obter-se código mais fácil de se manter e de se reutilizar. Além dos pilares elementares da orientação a objetos, há princípios que, quando adotados, também promovem a manutenibilidade e reusabilidade de código, dentre os quais se encontram a alta coesão e o baixo acoplamento.
Considerando o texto apresentado, avalie as proposições a seguir.
I. Uma classe altamente coesa é aquela que faz uso de múltiplos construtores, fornecendo mais flexibilidade para o código cliente.
II. Se uma classe é altamente coesa, ela também tem baixo acoplamento com as demais classes.
III. Ainda que duas classes interajam, é possível que exista baixo acoplamento entre elas.
É correto apenas o que se afirma em
I
II
III
I e II
II e III
Segundo Manzano et. al (2019, pág. 162), "Para classificar dados em uma matriz de uma dimensão (ou mesmo matrizes com mais dimensões), não há necessidade de um programador desenvolver algoritmos próprios, pois já existe um con-junto de algoritmos para essa finalidade. Basta conhecer e escolher aquele que mais bem atenda a uma necessidade em específico".
Seja o seguinte vetor (lista) escrito em linguagem Python:
vetor = [12,-23,5,-7,9,1,-4,-2,11,12]
Então, qual é o valor do conteúdo armazenado respectivamente nas posições 3 e 7 do "vetor"?
-7 e -2
5 e -4
-7 e 11
5 e -2
-7 e 1
Imagine que você está desenvolvendo um programa para calcular a média de notas de uma turma de alunos. O programa deve solicitar ao usuário o número de alunos e, em seguida, permitir que o usuário insira as notas de cada aluno. Utilizando a estrutura de repetição for, o programa deve calcular e exibir a média das notas.
Qual das alternativas abaixo descreve corretamente o funcionamento do programa ao lado..?
O programa calcula a média das notas de uma turma de alunos, solicitando o número de alunos e as notas de cada um, utilizando a estrutura de repetição for.
O programa calcula a soma das notas de uma turma de alunos, solicitando o número de alunos e as notas de cada um, utilizando a estrutura de repetição for.
O programa calcula a média das notas de uma turma de alunos, solicitando apenas a nota do primeiro aluno, utilizando a estrutura de repetição for.
O programa calcula a média das notas de uma turma de alunos, solicitando o número de alunos e as notas de cada um, utilizando a estrutura de repetição while.
O programa calcula a soma das notas de uma turma de alunos, solicitando apenas a nota do primeiro aluno, utilizando a estrutura de repetição for.
Polimorfismo é um conceito fundamental na programação orientada a objetos em Java. Ele permite que uma única interface seja usada para representar diferentes tipos de objetos, possibilitando que métodos sejam chamados de forma polimórfica.
Qual das alternativas abaixo descreve corretamente o conceito de polimorfismo?
Polimorfismo permite que uma classe herde propriedades e métodos de outra classe, promovendo a reutilização de código.
Polimorfismo permite que os detalhes internos de uma classe sejam ocultados, expondo apenas o que é necessário através de métodos públicos.
Polimorfismo permite que vários métodos sejam definidos com o mesmo nome, desde que tenham assinaturas diferentes.
Polimorfismo permite que um objeto assuma várias formas, sendo realizado através de herança e interfaces.
Polimorfismo permite que classes abstratas sejam definidas, que não podem ser instanciadas diretamente, mas podem ser usadas como base para outras classes.
Em linguagem Java, a abstração é um conceito fundamental para a orientação a objetos. Avalie a seguinte asserção: "Abstração em Java é o processo de ocultar detalhes de implementação e mostrar apenas a funcionalidade de um objeto".
Assinale a alternativa correta.
Verdadeiro, a abstração em Java visa simplificar a complexidade ao focar na funcionalidade essencial de um objeto.
Falso, a abstração em Java mostra todos os detalhes de implementação de um objeto.
Falso, a abstração em Java não tem relação com a orientação a objetos.
Falso, a abstração em Java só é utilizada em programação procedural.
Falso, a abstração em Java torna os objetos mais complexos e difíceis de entender.
