GABARITO
1 Uma interface é uma construção, dentro da qual é costume descrever métodos públicos abstratos e constantes estáticas. Você pode usar a interface para especificar o que a classe que a implementa deve fazer, mas não como fazê-la. O método de implementação é escolhido pela própria classe. Interfaces não conseguem armazenar dados do estado. As interfaces são um dos mecanismos para implementar o princípio do polimorfismo. Sobre interfaces, assinale a alternativa CORRETA:
a) ( ) Para definir uma interface devemos usar a palavra reservada “new interface”.
b) ( ) Uma interface pode definir constantes e métodos que podem ou não ter uma implementação.
c) ( ) Métodos com implementação são semelhantes aos métodos abstratos das classes abstratas.
d) ( ) Todos os métodos de interface possuem modificadores de acesso.
2 Interfaces como classes podem ser declaradas com o nível de acesso public ou padrão. As variáveis de interface são padrão e esses modificadores são opcionais ao declará-los. Todos os métodos de interface são opcionais e esses modificadores também. Os métodos declarados não contêm corpos, e suas declarações terminam com ponto e vírgula. Ainda com base nas interfaces, analise as sentenças a seguir:
I- Todas as funcionalidades de classes devem estar abertas para implementação.
II- Somente a linguagem Java possui a ideia de uso de interfaces.
III- Deve-se ter em mente, que se uma classe usa uma interface, ela deve implementar todos os métodos da interface.
Assinale a alternativa CORRETA:
a) ( ) As sentenças I e II estão corretas.
b) ( ) Somente a sentença II está correta.
c) ( ) As sentenças I e III estão corretas.
d) ( ) Somente a sentença III está correta.
3 O mecanismo de retorno de chamadas é generalizado na programação. Em um retorno de chamada, o programador especifica as ações que devem ser realizadas sempre que um evento ocorrer. E não importa se você desenvolverá apenas softwares em java ou aplicativos android — os retornos de chamadas serão encontrados em todos os lugares. Conforme os princípios de retornos de chamadas, classifique V para as sentenças verdadeiras e F para as falsas:
( ) A essência do retorno é que criamos ações, invocadas por outras ações.
( ) O fato é que, no momento da definição da classe, devemos saber exatamente as ações que devem ser realizadas.
( ) No conceito de retorno de chamadas, algumas ações são causadas por outras ações.
Assinale a alternativa que apresenta a sequência CORRETA:
a) ( ) V – F – F.
b) ( ) V – F – V.
c) ( ) F – V – F.
d) ( ) F – F – V.
4 O conceito de uma função de retorno de chamada não existe em Java porque Java não tem conceito de ponteiro. No entanto, há situações em que se pode falar de um objeto de retorno de chamada ou de uma interface de retorno de chamada. Em vez de passar o endereço de memória de uma função, é passada uma interface que se refere à localização de uma função. Disserte sobre uma maneira comum de usar retorno de chamadas e interfaces em Java, citando um exemplo.
R.: Uma maneira comum de usar interfaces em Java é criar um retorno de chamada. A essência do retorno é que criamos ações que são invocadas por outras ações. Ou seja, algumas ações são causadas por outras ações. Um exemplo padrão é pressionar um botão. Quando apertamos um botão, realizamos uma ação, mas em resposta a esse clique, outras ações são desencadeadas. Por exemplo, clicar no ícone da impressora começa a imprimir um documento na impressora, e assim por diante.
5 A partir do Java 1.5 tarefas onde são necessárias a criação de classes enumeradas foram solucionadas com a classe Enum. Essa classe traz modelos prontos para que o programador faça uso delas em situações de repetição. Disserte sobre o que é e os usos da classe enum na linguagem Java.
R.: Enumerações representam um conjunto de constantes logicamente relacionadas. A enumeração é declarada utilizando-se o operador de enum, seguido pelo nome da enumeração. Sendo assim, representa, na verdade, um novo tipo, para podermos definir uma variável desse tipo e usá-la. Enumerações podem ser usadas em classes para armazenar dados. A enumeração em si é declarada fora da classe, contém quatro gêneros de livros. Além das variáveis usuais, a classe Book também contém uma variável do nosso tipo de enumeração. No construtor, também podemos atribuí-lo, como os campos habituais da classe.
GABARITO
1 O JDK 5.0 introduziu os Genéricos Java visando reduzir os bugs e adicionar uma camada extra de abstração sobre os tipos. Escrevemos métodos genéricos com uma única declaração de método, e podemos chamá-los com argumentos de diferentes tipos. O compilador garantirá a correção de qualquer tipo que usarmos. Sobre métodos genéricos em Java, assinale a alternativa CORRETA:
a) ( ) Embora possamos criar uma classe comum que não herda, na verdade, todas as classes herdam da classe Object.
b) ( ) Todas as outras classes, mesmo aquelas que adicionamos ao projeto, são derivadas implicitamente da classe Main.
c) ( ) Nem todos os tipos e classes podem implementar os métodos definidos na classe Object.
d) ( ) Somente a linguagem Java possui o conceito de métodos genéricos.
2 Se você quiser representar qualquer objeto como uma sequência, o método toString() entrará em vigor. O método toString() retorna a representação string do objeto. Se você imprimir qualquer objeto, o compilador Java invoca internamente o método toString() no objeto. Assim, substituindo o método toString(), retorna a saída desejada, pode ser o estado de um objeto, etc. dependendo da sua implementação. Com base nas definições referentes ao método toString, analise as sentenças a seguir:
I- Use este método para obter uma representação de sequência deste objeto.
II- Somente a linguagem Java possui métodos toString.
III- Quando você tenta produzir uma representação de sequência de um objeto, normalmente observará o nome totalmente qualificado da classe.
Assinale a alternativa CORRETA:
a) ( ) As sentenças I e II estão corretas.
b) ( ) Somente a sentença II está correta.
c) ( ) As sentenças I e III estão corretas.
d) ( ) Somente a sentença III está correta.
3 O método “Java string class equals()” compara as duas strings dadas com base no conteúdo da string. Se qualquer personagem não for correspondido, ele retorna falso. Se todos os personagens forem combinados, ele retornará verdadeiro. O método String equals() substitui o método igual () da classe Objeto. Conforme os princípios do método “equals”, classifique V para as sentenças verdadeiras e F para as falsas:
( ) O método “equals” toma como parâmetro um objeto de qualquer tipo, que lançamos para o atual se eles são objetos da mesma classe.
( ) Se os objetos pertencem a classes diferentes, então sua comparação tem sentido, e a sentença verdadeira é devolvida.
( ) A instância da instrução permite determinar se o objeto passado como parâmetro é um objeto de uma determinada classe, neste caso a classe “pessoa”.
Assinale a alternativa que apresenta a sequência CORRETA:
a) ( ) V – F – F.
b) ( ) V – F – V.
c) ( ) F – V – F.
d) ( ) F – F – V.
4 Converter um tipo de subclasse em um tipo de superclasse é chamado de “generalização” porque estamos fazendo a subclasse se tornar mais geral e seu escopo está aumentando. Isso também é chamado de alargamento ou até o elenco. A ampliação é segura porque as aulas se tornarão mais gerais. Disserte sobre o processo de restrições aplicadas nas generalizações em Java.
R.: Quando especificamos um parâmetro genérico para generalizações, por padrão pode representar qualquer tipo. No entanto, às vezes você quer um parâmetro para combinar apenas com alguns tipos limitados. Neste caso, aplicam-se restrições que permitem especificar a classe base que o parâmetro deve corresponder.
5 Generalização é o processo de tirar propriedades e funcionalidades comuns de duas ou mais classes e combiná-las em outra classe que atua como a classe dos pais dessas classes ou o que podemos dizer da classe generalizada dessas classes especializadas. Quando este processo é desenvolvido usando alguns tipos de variáveis primitivas, ações devem ser tomadas. Neste contexto, disserte sobre os procedimentos realizados ao usar, por exemplo, variáveis inteiras e flutuantes (double, por exemplo).
R.: Quando você define uma variável de uma determinada classe e cria um objeto após o nome da classe, você deve especificar em suportes de ângulo qual tipo usar em vez do parâmetro genérico. Deve-se ter em mente que eles trabalham apenas com objetos, mas não trabalham com tipos primitivos. Ou seja, podemos escrever, mas não podemos usar o tipo “int” ou double, por exemplo. Sendo assim, em vez de tipos primitivos, você deve usar classes de invólucro.
GABARITO
1 Especialização e generalização são os mecanismos de hierarquia de subclasse e superclasse em um banco de dados relacional semelhante ao conceito de herança em Java. A ideia é simples, mas provoca confusão às vezes devido à sua organização incomparável entre o esquema relacional e a tecnologia orientada a objetos. Sobre generalização e classes genéricas, assinale a alternativa CORRETA:
a) ( ) Generalização e herança são abstrações poderosas para compartilhar semelhanças entre classes enquanto preservam suas diferenças.
b) ( ) A generalização é um processo descendente.
c) ( ) A generalização identifica diferenças entre um conjunto de entidades.
d) ( ) A semelhança pode ser de atributos, somente.
2 Generalização é o processo de abstração de baixo para cima, onde as diferenças entre as entidades conforme a característica comum, sendo possível generalizá-las em uma única superclasse. As entidades originais são, portanto, subclasses deste. Em termos mais simples, é apenas o inverso da especialização, sendo um processo de cima para baixo, enquanto a generalização é de baixo para cima. Com base nas definições de classes genéricas, analise as sentenças a seguir:
I- Ao herdar de uma classe generalizada, a classe descendente deve passar dados de tipo na construção da classe base.
II- Um objeto de um tipo generalizado pode ser lançado para outro tipo se eles usarem tipos diferentes.
III- Também pode haver uma situação onde a classe base é uma classe não genérica regular.
Assinale a alternativa CORRETA:
a) ( ) As sentenças I e II estão corretas.
b) ( ) Somente a sentença II está correta.
c) ( ) As sentenças I e III estão corretas.
d) ( ) Somente a sentença III está correta.
3 A clonagem de objetos refere-se à criação de uma cópia exata de um objeto. Ele cria uma instância da classe do objeto atual e inicializa todos os seus campos com exatamente o conteúdo dos campos correspondentes deste objeto. Conforme os princípios de clonagem em Java, classifique V para as sentenças verdadeiras e F para as falsas:
( ) Ao trabalhar com objetos de classe, deve-se ter em mente que todos eles representam tipos de referência, ou seja, apontam para algum objeto localizado na memória.
( ) Caso a classe não suporte a clonagem, o método deve lançar um NoPermission(), determinado usando a instrução de lançamentos.
( ) Para implementar a clonagem, a classe criada deve usar a interface cloneable, que define o clone.
Assinale a alternativa que apresenta a sequência CORRETA:
a) ( ) V – F – F.
b) ( ) V – F – V.
c) ( ) F – V – F.
d) ( ) F – F – V.
4 Em Java, um registro é um tipo especial de declaração de classe destinada a reduzir o código da caldeira. Os registros java foram introduzidos com a intenção de serem usados como uma maneira rápida de criar classes portadoras de dados, ou seja, as classes cujo objetivo é conter simplesmente dados e transportá-los entre módulos, também conhecidos como POJOs (Plain Old Java Objects) e DTOs (Data Transfer Objects). Disserte de forma introdutória sobre os registros e definição dessas classes em Java.
R.: Começando com Java 16, uma nova funcionalidade foi adicionada ao idioma - Registros (em russo é frequentemente chamado de "registros"). Os registros representam classes projetadas para criar contêineres de dados imutáveis. Além disso, os registros permitem simplificar o desenvolvimento reduzindo a quantidade de código. Para definir as classes de registro, a palavra-chave de registro é usada, seguida pelo título e, em seguida, entre parênteses, a lista de campos de registro.
5 O registro foi introduzido no Java como um recurso de pré-visualização, sendo um recurso cujo design, implementação e especificação estão completos, mas não é uma adição permanente ao idioma, o que significa que o recurso pode ou não existir nas versões futuras da linguagem. Neste contexto, disserte sobre as definições de registros relacionando ainda com o uso de construtores.
R.: Os registros são definidos usando a palavra-chave do registro, seguido pelo título do registro. A seguir, uma lista de campos de registro. Ou seja, neste caso, dois campos são definidos - nome e idade. E por padrão, todos eles serão privados e terão um modificador final. Você também criará um construtor com dois parâmetros, nome e idade. Em cada campo será criado automaticamente um método público de mesmo nome para obter o valor deste campo. Por exemplo, um método namename() é criado para um campo que retorna o valor do campo de nome.