O polimorfismo é um paradigma e uma grande contribuição para a programação orientada a objetos, visto que permite a adequação das ações das classes ao que elas se propõem. Considerando o paradigma do polimorfismo, analise as afirmativas a seguir e assinale V para a(s) verdadeira(s) e F para a(s) falsa(s). I. ( ) Um exemplo de polimorfismo ocorre quando um método da classe-mãe é redefinido na classe-filha. II. ( ) Caso o método não seja definido na classe-filha, o compilador busca a implementação na classe-mãe. III. ( ) Um método deve ter a assinatura diferente na classe-mãe e na filha, a fim de ter o comportamento padrão dessas classes. IV. ( ) Quando um método é sobrescrito na classe-filha, passa a ter o comportamento descrito na classe-filha. Assinale a alternativa que apresenta a sequência correta .
Na programação orientada a objetos, existem os conceitos de classe e subclasse. Uma subclasse também pode ser denominada classe-filha, pois passa a ter acesso aos atributos e métodos da classe-mãe, classe-base ou superclasse. Essa afirmativa refere-se à qual paradigma?
Na programação orientada a objetos, as classes podem herdar características e ações de outras classes. A linguagem Java é orientada a objetos e permite a criação de classes-pais e filhas. Considerando a linguagem Java, com base na criação de uma subclasse “Onibus”, a partir de uma superclasse “Transporte”, assinale a alternativa que apresenta o código correto .
Leia o trecho a seguir. “A declaração de variáveis de instância com o modificador private é conhecida como ocultamento de dados ou ocultamento de informações. Quando um programa instancia um objeto de uma classe, a variável (atributo) é ocultada no objeto e pode ser acessada apenas por métodos da classe do objeto” (DEITEL; DEITEL, 2016, p. 63). DEITEL, P.; DEITEL, H. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2016. Em relação aos conceitos de programação orientada a objetos, assinale a alternativa a seguir que apresenta corretamente ao que se refere o trecho lido anteriormente.
Considere uma classe “Calculo”, que solicita dois valores ao usuário e realiza a soma desses valores, conforme o código em linguagem Java (em qualquer versão) a seguir. public class Calculo { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.println("Informe o primeiro termo:"); int a = entrada.nextInt(); System.out.println("Informe o segundo termo:"); int b = entrada.nextInt(); int c = calculo(a, b); System.out.println("O resultado é " + c); } private static int calculo (int a, int b) { return a + b; } } Analise o código apresentado e assinale a alternativa correta .
Leia o trecho a seguir. “Na indústria, diagramas UML ajudam projetistas de sistema a especificar um sistema de maneira gráfica, concisa e independente de linguagem de programação antes de os programadores implementarem o sistema em linguagem específica” (DEITEL; DEITEL, 2016, p. 61). DEITEL, P.; DEITEL, H. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2016. Observe a seguinte imagem: Fonte: Deitel e Deitel (2016, p. 61). Considerando o apresentado, analise as afirmativas a seguir. I. No compartimento superior, temos o atributo da classe, que corresponde à variável de instância de mesmo nome em Java. II. O compartimento inferior contém as operações da classe, que correspondem aos métodos com os mesmos nomes em Java. III. A UML representa o tipo de retorno de um método utilizando dois pontos, juntamente com a expressão void ao lado de cada tipo em Java. IV. O compartimento intermediário possui definições de nome da classe, representada por uma classe de mesmo nome em Java. Está correto o que se afirma em:
Na programação orientada a objetos, é comum o uso de classes e métodos genéricos, visando reduzir a quantidade de códigos de conversão de tipos de dados. Considerando esse contexto, assinale a alternativa que apresenta, corretamente, o uso dos “Generics” em linguagem Java .
Considere o código a seguir, em linguagem Java (qualquer versão), que apresenta a utilização de um tipo genérico para uma lista de nomes. public static void main(String[] args) { List<String> nomes = new ArrayList<String>(); nomes.add("José"); nomes.add("João"); nomes.add("Maria"); System.out.println(nomes.get(0)); } Em relação a esse código, é possível afirmar que:
Leia o trecho a seguir. “Todo tipo primitivo tem uma classe empacotadora de tipo correspondente (no pacote java.lang). Essas classes chamam-se Boolean , Byte , Character , Double , Float , Integer , Long e Short . Elas permitem manipular valores de tipo primitivo como objetos. [...] Mas podem manipular objetos das classes empacotadoras de tipo, porque cada classe, em última análise, deriva de Object” (DEITEL; DEITEL, 2016, p. 539). DEITEL, P., DEITEL, H. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2016. Sobre tipos e classes, analise as asserções a seguir e a relação proposta entre elas. I. A interface List é implementada por várias classes, inclusive pelas classes ArrayList, LinkedList e Vector. O autoboxing ocorre quando valores de tipo primitivo são adicionados aos objetos dessas classes. POIS II. As variáveis de tipo primitivo armazenam apenas referências a objetos, em que as classes ArrayList e Vector são implementações de arrays redimensionáveis de List. A respeito das asserções, assinale a alternativa correta a seguir.
A estrutura de coleções em Java fornece ao desenvolvedor diversas interfaces e classes, facilitando sua implementação em vários algoritmos, além de diversas estruturas de dados. Algumas classes de coleção importantes são ArrayList, LinkedList, HashMap, TreeMap, HashSet e TreeSet. Essas classes resolvem a maioria das necessidades de programação, no entanto, se for necessária alguma classe de coleção especial, podemos estendê-la para criar uma classe de coleção personalizada. Em relação aos métodos utilizados nas coleções, analise as afirmativas a seguir. I. A função do método reverse é inverter a ordem dos elementos em uma List. II. No método fill , os elementos em uma List são sobrescritos com um determinado valor. III. A operação fill é útil para limpar uma lista e bloquear suas alterações. IV. Se a lista de destino for mais longa, os elementos não sobrescritos sofrerão alterações. Está correto o que se afirma em:
Na linguagem Java, é comum o uso de coleções, estruturas de dados (que também são objetos) que permitem armazenar vários outros objetos. Nesse contexto, analise as afirmativas a seguir, em relação aos métodos utilizados nas classes concreta e as relacione adequadamente. 1 – add e offer . 2 – remove e poll . 3 – element e peek . I. Removem e retornam o elemento do início. II. Retornam, porém não removem, o elemento do início. III. Inserem um elemento na fila. Assinale a alternativa que relaciona, adequadamente, os dois grupos de informações .
O Java Iterator também é conhecido como o cursor universal de Java, pois é apropriado para todas as classes do framework Collection. Ele também auxilia nas operações como READ e REMOVE. Quando comparamos a interface do Java Iterator com a interface do iterador de enumeração, podemos dizer que os nomes dos métodos disponíveis no primeiro são mais precisos e fáceis de usar. Assinale a alternativa correta a respeito do Java Iterator, a seguir.
Observe o seguinte trecho de código escrito em Java: Fonte: Elaborada pelo autor (2022). Considerando o apresentado, analise as afirmativas a seguir. I. O uso do ArrayList, na linha 14, está incorreto, uma vez que, na linha 10, se utilizou List. II. A classe Collections possui diversos métodos implementados, como ordenações, por exemplo. III. O array colors é definido como string , adicionado em uma lista utilizando o método sort . IV. O método construtor inicializa uma lista criada de forma global na codificação. Está correto o que se afirma em:
Na programação orientada a objetos, “[...] classes internas são definidas dentro de outras classes [...]”. Desse modo, as “[...] classes internas podem ter acesso a dados privados das classes nas quais elas estão inseridas” (FÉLIX, 2016, p. 16). FÉLIX, R. Programação orientada a objetos. São Paulo: Pearson Education do Brasil, 2016. Considerando o apresentado, analise as asserções a seguir e a relação proposta entre elas. I. A classe interna poderá conter o que uma classe considerada “normal” possui, como variáveis e métodos, além de membros estáticos. POIS II. A utilização de membros estáticos em uma classe interna informa ao compilador Java que essa classe será interpretada separadamente. A respeito das asserções, assinale a alternativa correta a seguir.
Em Java, variável é um contêiner de dados que salva os valores de dados durante a execução do programa. Para cada variável, é atribuído um tipo de dado, que designa o tipo e a quantidade de valor que ela pode conter. Uma variável é um nome de local de memória para os dados. Quanto ao uso de variáveis em Java, analise as afirmativas a seguir. I. Para atribuir dados a uma variável, especificamos o nome da variável e, em seguida, o operador de atribuição = , seguido de um valor que corresponda ao tipo de dados. II. Só usamos o tipo de dados no código quando estamos declarando ou inicializando a variável, e não ao atribuir ou alterar um valor. III. Podemos declarar ou inicializar várias variáveis de mesmo tipo ao mesmo tempo em Java separando cada nome por ponto e vírgula, não sendo possível atribuir valores. IV. Uma constante é um item de dados cujo valor não pode mudar durante a execução do programa. Assim, como o próprio nome indica, o valor é constante. Está correto o que se afirma em:
Na programação orientada a objetos, utilizamos o conceito de classes e objetos. Uma analogia que podemos fazer é a de um projeto de uma casa, que podemos utilizar para construir várias casas, com as mesmas características. Em relação a esses aspectos, assinale a alternativa correta .
Observe o seguinte trecho de código: Fonte: Elaborada pelo autor (2022). Podemos afirmar que poderia existir uma característica de polimorfismo atribuída à variável tamanho na linha:
Na linguagem Java, a primeira linha que compõe o método é denominada cabeçalho. Considere o seguinte cabeçalho do método: public static void main(String[] args) A seguir, analise as afirmativas, relacionadas aos termos utilizados no cabeçalho do método, e as relacione adequadamente. 1 – String[] 2 – public 3 – args I. Identificador da variável local utilizada como parâmetro do método. II. Modificador de acesso do método. III. Tipo de dados do parâmetro do método. Assinale a alternativa que relaciona, adequadamente, os dois grupos de informações .
Um dos conceitos relacionados à programação orientada a objetos em Java é o de abstração, que é o ato de representar os principais recursos sem incluir informações de suporte. É um método para desenvolver um novo tipo de dados apropriado para um aplicativo específico. Ele evita fornecer fatos estranhos ou sem sentido e exibe apenas a parte precisa que o usuário solicitou. Como base nos conceitos de abstração, analise as asserções a seguir e a relação proposta entre elas. I. Em Java, a abstração fornece segurança, mostrando os detalhes essenciais e ocultando certos detalhes do usuário. Para criar uma classe ou método abstrato, a palavra-chave abstract é utilizada. POIS II. As propriedades e os comportamentos de um objeto são essenciais para diferenciá-lo de outros objetos de tipo semelhante, além de auxiliar na classificação desses objetos. Sobre as asserções, assinale a alternativa correta a seguir.
Quando um programa está sendo executado, uma seção especial do espaço de memória do computador é alocada apenas para tal, chamada Pilha de Chamadas do programa. É importante entender como funciona o Call-Stack de um programa, para entender como as funções recursivas se comportam quando estão sendo executadas. Sobre o que foi apresentado, observe as asserções a seguir e as relações propostas entre elas. I. Quando a função termina a execução, o código de função é removido ou retirado do topo da pilha, que permite apenas que itens sejam adicionados ao topo; por isso, é chamada de estrutura de dados LIFO (Last-In-First-Out). PORQUE II. Cada vez que uma função é chamada, o código da função, bem como o espaço para os argumentos da função e os valores de retorno, são colocados no topo da Pilha de Chamadas. Analisando as asserções anteriores, assinale a alternativa correta.
A utilização de recursividade não apenas diminui a quantidade de código a ser usada em um procedimento ou chamada, mas possibilita uma economia de tempo nas codificações como, por exemplo, calculando o fatorial de um número. “Um método recursivo pode chamar outro método, que por sua vez pode fazer uma chamada de volta ao método recursivo. Isso é conhecido como uma chamada recursiva indireta ou recursão indireta. Por exemplo, o método A chama o método B, que faz uma chamada de volta ao método A. Isso ainda é recursão, porque a segunda chamada para o método A é feita enquanto a primeira está ativa – isto é, a primeira chamada ao método A ainda não concluiu sua execução (porque está esperando o método B voltar um resultado para ela) e não retornou ao chamador original do método A” (DEITEL; DEITEL, 2016, p. 609). DEITEL, P.; DEITEL, H. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2016. Observe o trecho de código a seguir, realizado na linguagem Java, versão 8. Fonte: Elaboração do autor, 2023. Sobre o código anterior, avalie as afirmativas a seguir. I. A codificação mostrada possui erro sintático, pois, nessa chamada recursiva, o método Fibonacci está chamando outro método para cálculo de mesmo nome, retornando uma chamada também com o mesmo nome de método. II. A condição “number.equals(BigInteger.ZERO)” permite que todo trecho de código não necessite ser executado, uma vez que a estrutura “if…else” está limitando a execução caso o “if” inicial seja verdadeiro. III. É possível realizar operações matemáticas por meio de métodos com cálculos predefinidos, seja para comparação, subtração ou adição numérica, passando como parâmetro o valor desejado. Está correto o que se afirma em:
A classe Java HashSet é usada para criar uma Coleção que usa uma Tabela Hash para armazenamento. Ela é uma implementação da interface Set que usa um HashMap interno para armazenar os seus elementos A interface Set herda as interfaces Collection e Iterable em ordem hierárquica. Sobre a classe HashSet e as características de conjunto em Java, avalie as afirmativas a seguir. I. O HashSet possui como mecanismo de armazenamento de elementos o hashing . II. O HashSet contém apenas elementos exclusivos, podendo ser nulos. III. O HashSet mantém a ordem de inserção, além de salvar os HashCode. Está correto o que se afirma em:
Na linguagem Java, é comum o uso da classe “Collection”, que tem classes-filhas para listas e conjuntos. Um conjunto funciona de forma análoga aos conjuntos da matemática e proporcionam grande poder para a programação orientada a objetos. Em relação ao melhor uso dos conjuntos em linguagem Java, assinale a alternativa correta .
Os Mapas de Hash são estruturas de dados indexados. Um Mapa de Hash usa uma função de Hash para calcular um índice com uma chave em uma matriz de baldes ou slots . O seu valor é mapeado para o bucket com o índice correspondente. A chave é única e imutável. Pense em um Mapa de Hash como um armário com gavetas com etiquetas para as coisas armazenadas nelas. Por exemplo, armazenar informações do usuário – considere o e-mail como a chave e podemos mapear os valores correspondentes a esse usuário como nome, sobrenome etc. para um bloco. Considere a seguinte codificação em Java, em sua versão 8, realizando a importação da biblioteca java.util.*; Fonte: Elaboração do autor, 2023. Sobre o código anterior, assinale a alternativa correta.
Analise o código a seguir em linguagem Java (qualquer versão), que cria um conjunto de nomes com a classe TreeSet. public static void main(String[] args) { TreeSet<String> dset = new TreeSet<String>(); dset.add("Zoraide"); dset.add("Maria"); dset.add("Janete"); dset.add("João"); dset.add("Heitor"); Iterator<String> iterator = dset.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + " "); } } Em relação ao código apresentado, assinale a alternativa correta .
Em aplicações desenvolvidas em linguagem Java, é muito comum o uso dos “Conjuntos”, que têm um conjunto de características fundamentais. Considerando as características fundamentais dos conjuntos em linguagem Java, analise as afirmativas a seguir e assinale V para a(s) verdadeira(s) e F para a(s) falsa(s). I. ( ) Os elementos inseridos nos conjuntos, quando recuperados, são apresentados na mesma ordem em que foram inseridos. II. ( ) Em relação ao uso dos conjuntos em linguagem Java do tipo HashSet ou TreeSet, ao se percorrer esses conjuntos, a ordem em que foram inseridos os elementos não é conhecida. III. ( ) Na pesquisa de dados em um conjunto do tipo HashSet ou LinkedHashSet, a velocidade é mais rápida que em um objeto do tipo List. IV. ( ) Os conjuntos não aceitam valores duplicados; a tentativa de inserção de um registro já existente no Set não terá sucesso. Assinale a alternativa que apresenta a sequência correta .
A API Stream é usada para processar coleções de objetos. Um fluxo é uma sequência de objetos que suporta vários métodos que podem ser canalizados para produzir o resultado desejado. Sobre o fluxo de APIs, analise as afirmativas a seguir. I. Um fluxo não é uma estrutura de dados, em vez disso, recebe entrada das coleções, matrizes ou canais de E/S. II. Os fluxos não alteram a estrutura de dados original, eles apenas fornecem o resultado conforme os métodos de pipeline . III. Cada operação intermediária é executada lentamente e retorna um fluxo como resultado; portanto, várias operações intermediárias podem ser canalizadas. Está correto o que se afirma em:
O CharStreams, em Java, possui um processo bem parecido com o ByteStream. Há classes de streams para lidar com caracteres, que derivam das classes Reader e Writer. Os Streams de Caracteres também podem ser usados como filtros para streams de bytes . Sobre o fluxo de bytes e caracteres, identifique se são (V) verdadeiras ou (F) falsas as afirmativas a seguir. I. ( ) Em Java, o armazenamento de caracteres é realizado por meio do padrão Unicode, em que os fluxos são convenientes para processarmos arquivos textuais. II. ( ) A classe Java ByteInputStream obtém bytes de entrada de um arquivo. É usado para ler dados orientados a byte e estende a classe abstrata InputStream. III. ( ) Recomenda-se a finalização do fluxo quando este não estiver mais em uso, a fim de garantir que, caso ocorra algum erro, os streams não sejam afetados. IV. ( ) Invocar o método flush() garante que o último dos dados que você pensou que já havia escrito realmente saia para o arquivo. Assinale a alternativa que apresenta a sequência correta.
A linguagem Java tem recursos para a programação de sistemas distribuídos em redes de computadores, e o uso de Sockets é um desses importantes recursos. Nesse sentido, analise as asserções a seguir e a relação proposta entre elas. I. O pacote java.net contém duas classes, Socket e ServerSocket, que implementam, respectivamente, o cliente e o servidor, em uma ligação confiável, com o protocolo TCP. II. Esse pacote também contém uma classe DatagramaPacket para a comunicação entre cliente e servidor, utilizando uma conexão não confiável, com o protocolo UDP. Analisando essas asserções, é correto afirmar que :
A linguagem Java foi projetada para usar Threads, sendo que o primeiro e principal Thread é executado no método “main”. Nesse sentido, analise as asserções a seguir e a relação proposta entre elas. I. O uso de Threads permite que o sistema operacional consiga dividir as tarefas entre todos os processadores disponíveis, aumentando, assim, a eficiência do processo. II. O processamento assíncrono (segundo plano) usando Threads pode fazer um servidor de e-mail atender a mais de um usuário, simultaneamente. Analisando essas asserções, é correto afirmar que :