GABARITO
1 Classes e Objetos são conceitos básicos de Programação Orientada a Objetos que giram em torno de entidades da realidade. Uma classe é um projeto ou protótipo definido pelo usuário a partir do qual os objetos são criados. Ele representa o conjunto de propriedades ou métodos que são comuns a todos os objetos de um tipo. Sobre orientação a, objetos e classes em Java, julgue a alternativa CORRETA:
a) ( ) Para armazenar o estado de um objeto em uma classe, você usa os campos ou variáveis da classe.
b) ( ) Objetos na linguagem Java não possuem nenhuma característica.
c) ( ) Os métodos são usados para determinar o comportamento de um modificador de acesso em uma classe.
d) ( ) Normalmente, as classes são definidas em arquivos únicos.
2 A programação orientada a objetos visa implementar entidades reais como herança, ocultação, polimorfismo, etc. na programação. O principal objetivo do POO é vincular os dados e as funções que operam neles para que nenhuma outra parte do código possa acessar esses dados, exceto essa função. Com base nas definições e conceitos da Programação Orientada a Objetos, analise as sentenças a seguir:
I- Uma classe representa um novo tipo, para que possamos definir variáveis que representam esse tipo.
II- Construtores são chamados sempre que há objetos antigos.
III- Além dos métodos usuais, as classes podem definir métodos especiais chamados construtores.
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 Construtores são usados para inicializar novos objetos. Campos são variáveis que fornecem o estado da classe e seus objetos, e métodos são usados para implementar o comportamento da classe e seus objetos. Existem vários tipos de classes, utilizadas em aplicações em tempo real, como classes aninhadas, classes anônimas, expressões lambda.
Conforme as características dos construtores, classifique V para as sentenças verdadeiras e F para as falsas:
( ) Se nenhum construtor for definido em uma classe, um construtor sem parâmetros será criado automaticamente para essa classe.
( ) O construtor em programação orientada a objetos é usado unicamente para criar variáveis e colocá-la em um lugar do código.
( ) Se o construtor não inicializar os valores das variáveis do objeto, eles receberão seus valores padrão.
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 A palavra reservada “this” em Java é uma variável de referência que se refere ao objeto atual de um método ou de um construtor. O principal objetivo de usar esta palavra-chave em Java é remover a confusão entre atributos de classe e parâmetros com os mesmos nomes. Disserte sobre os usos variados desta palavra na linguagem Java.
R.:
A palavra-chave this pode ser usada para se referir a variáveis de instância da classe atual.
Esta palavra-chave pode ser usada para chamar um método da classe atual (implicitamente).
this() pode ser usado para chamar o construtor da classe atual.
A palavra-chave this pode ser passada como um parâmetro para o método de chamada.
A palavra-chave this pode ser passada como um parâmetro ao chamar um construtor.
A palavra-chave this pode ser usada para retornar uma instância da classe atual de um método.
5 O pacote em Java é um mecanismo para encapsular um grupo de classes, subclasses e interfaces. Um pacote é um contêiner de um grupo de classes relacionadas onde algumas das classes são acessíveis são expostas e outras são mantidas para fins internos.
Podemos reutilizar as aulas existentes dos pacotes quantas vezes precisarmos em nosso programa. Neste contexto, disserte sobre o uso desses pacotes nos programas em Java.
R.: Normalmente, em Java, as classes são embaladas. Os pacotes permitem que você organize as classes logicamente em conjuntos. Por padrão, java já tem uma série de pacotes embutidos, por exemplo, etc., Além disso, os pacotes podem ter pacotes aninhados.java.langjava.utiljava.io
Organizar classes como pacotes evita conflitos de nomes entre as classes. Afinal, muitas vezes há situações em que os desenvolvedores chamam suas aulas pelo mesmo nome. Pertencer a um pacote ajuda a garantir que os nomes sejam inequívocos.
GABARITO
1 Às vezes, você quer ter variáveis que são comuns a todos os objetos. Isso é feito com o modificador. Campos que têm o modificador em sua declaração são chamados campos estáticos ou variáveis de classe. Eles estão associados com a classe, em vez de com qualquer objeto. Cada instância da classe compartilha uma variável de classe, que está em um local fixo na memória. Qualquer objeto pode alterar o valor de uma variável de classe, mas as variáveis de classe também podem ser manipuladas sem criar uma instância da classe. Sobre campos estáticos, assinale a alternativa CORRETA:
a) ( ) Para declarar variáveis estáticas, constantes, métodos e inicializadores, você especifica a palavra-chave static antes de declará-las.
b) ( ) Quando você cria objetos em uma classe, cada objeto não cria sua própria cópia dos campos regulares não estáticos, é necessário declarar.
c) ( ) Campos estáticos não são comuns a todas as classes.
d) ( ) É necessário criar objetos e classes para se usar uma variável ou campo estático.
2 Pode haver momentos em que é útil ter valores que são compartilhados em todas as instâncias de uma determinada classe. Campos estáticos e constantes estáticas permitem esse tipo de compartilhamento por pertencer à classe e não aos objetos reais. Com base nas definições dos campos estáticos, analise as sentenças a seguir:
I- Os iniciadores estáticos são projetados para inicializar variáveis estáticas ou para executar as ações que são executadas quando o primeiro objeto é criado.
II- Tenha em mente que o inicializador estático é chamado antes de a classe ser carregada.
III- O inicializador estático é definido como normal, apenas a palavra-chave é colocada antes dele.
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 Em Java, modificadores de acesso são usados para definir a acessibilidade (visibilidade) de classes, interfaces, variáveis, métodos, construtores, membros de dados e os métodos de setter. De acordo com os princípios de modificadores de acesso em Java, classifique V para as sentenças verdadeiras e F para as falsas:
( ) Public: campos e métodos declarados com este modificador são visíveis para outras classes no pacote atual e de pacotes externos.
( ) Protected: está disponível apenas a partir do código na mesma classe.
( ) Private: tal classe ou membro de classe é acessível de qualquer lugar da classe ou pacote atual, ou em classes derivadas, mesmo que estejam em outros pacotes.
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 método estático é um método que pertence a uma classe e não a uma instância de uma classe. O método é acessível a todas as instâncias de uma classe, mas métodos definidos em uma instância só podem ser acessados por esse objeto de uma classe. Disserte sobre algumas limitações dos métodos estáticos bem como o momento em que devem ser definidos.
R.: Ao usar métodos estáticos, devemos levar em conta as limitações: em métodos estáticos, só podemos chamar outros métodos estáticos e usar apenas variáveis estáticas.
Em geral, os métodos são definidos como estáticos, quando os métodos não afetam o estado do objeto, ou seja, seus campos e constantes não estáticos, e não adianta criar uma instância da classe para chamar o método.
5 O Objeto parâmetro é simplesmente um objeto invólucro para todos os parâmetros de um método. A vantagem do Objeto parâmetro sobre uma lista de parâmetros de método regular é que os campos de classe podem ter valores padrão. Uma vez criada a classe wrapper para a lista de parâmetros de método, uma classe de construtor correspondente também é criada. Normalmente é uma classe estática interna. Neste contexto, disserte sobre objetos de classe e dados primitivos.
R.: Objetos de classe, como dados de tipos primitivos, podem ser passados para métodos. No entanto, neste caso, há uma peculiaridade - ao passar objetos como um valor, uma cópia da referência à área na memória onde este objeto está localizado é transmitida.
GABARITO
1 Em Java, a classe interna refere-se à classe que é declarada dentro da classe ou interface que foram introduzidas principalmente, para resumir, as mesmas classes logicamente relacionáveis como Java é puramente orientada para objetos, por isso aproximá-lo do mundo real. Sobre o conceito de classes internas e aninhadas, assinale a alternativa CORRETA:
a) ( ) Uma classe interna se comporta como uma classe regular, exceto que seus objetos só podem ser criados dentro da classe externa.
b) ( ) A classe interna não tem acesso a todos os campos da classe externa.
c) ( ) Objetos de classes internas podem ser criados em qualquer classe e em qualquer trecho do código.
d) ( ) É possível criar objetos na classe interna.
2 Herança em Java é um mecanismo no qual um objeto adquire todas as propriedades e comportamentos de um objeto pai. É uma parte importante da programação orientada a objetos. A ideia por trás da herança em Java é que você pode criar novas classes que são construídas sobre as classes existentes. Com base nas definições de orientação a objetos, analise as sentenças a seguir:
I- Com a ajuda da herança, você pode expandir a funcionalidade das classes existentes adicionando novas funcionalidades ou alterando a antiga.
II- A classe derivada tem acesso apenas a alguns métodos e campos da classe base.
III- Para declarar uma classe a herdar de outra, você deve usar a palavra-chave estendida após o nome da classe herdante, seguido pelo nome da classe base.
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 Uma classe java é declarada abstrata usando a palavra-chave 'abstrata' e pode conter métodos abstratos e não abstratos. Não pode ser instaurado, ou seus objetos não podem ser criados. Uma classe herdada da classe abstrata tem que fornecer a implementação para os métodos abstratos declarados na classe abstrata. Uma classe abstrata pode conter construtores, métodos estáticos e métodos finais também. De acordo com os princípios das classes abstratas, classifique V para as sentenças verdadeiras e F para as falsas:
( ) As classes abstratas são projetadas para fornecer funcionalidade básica para classes herdadas.
( ) Podemos usar o construtor de uma classe abstrata para criar seu objeto.
( ) A classe derivada deve substituir e implementar todos os métodos abstratos que existem na classe abstrata subjacente.
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 Na programação orientada a objetos, podemos usar a herança quando sabemos que há uma relação "é um" entre uma criança e sua classe de pais.
Observe o código abaixo:
Com base na afirmação e no trecho de código acima, disserte sobre o uso de herança em Java bem como o uso de construtores.
R.: Para declarar uma classe a herdar de outra, você deve usar a palavra-chave estendida após o nome da classe herdante, seguido pelo nome da classe base. Para a classe Employee, a classe base é Pessoa e, portanto, a classe Employee herda todos os mesmos campos e métodos que estão na classe Pessoa. Se você tiver construtores definidos na classe base, você deve chamar um dos construtores da classe base na classe derivada usando a palavra-chave super. Por exemplo, a classe Pessoa tem um construtor que leva um único parâmetro. Portanto, na classe employee na construtora, você chama o construtor da classe Pessoa..
5 As classes abstratas são semelhantes às interfaces. Você não pode instanciar-los, e eles podem conter uma mistura de métodos declarados com ou sem uma implementação. No entanto, com aulas abstratas, você pode declarar campos que não são estáticos e finais, e definir métodos de concreto público, protegido e privado. Disserte sobre a importância de usar classes abstratas em nossos códigos.
R.: Digamos que façamos um programa bancário e definamos três classes nele: Pessoa, que descreve uma pessoa, Funcionário, que descreve um Funcionário do banco, e Cliente, que representa um cliente do banco. Obviamente, as classes Funcionário e Cliente derivam da classe Pessoa, pois ambas as classes compartilham alguns campos e métodos comuns. E como todos os objetos representarão um Funcionário ou um cliente do banco, não criaremos objetos diretamente da classe Pessoa. Então faz sentido torná-lo abstrato.