Exercício: Polimorfismo (30 minutos)

Propaganda
Exercício 1: Criação de objetos usando o operador new.
Introdução:
Neste exercício você exercitará o conceito da criação de instâncias de objetos usando
o operador new. Mais tarde você aprenderá a criar instâncias de suas próprias classes.
(1.1) Criar instâncias da classe String usando o operador new
Passos a seguir:
1. Crie um projeto no JCreator. Adicione a esse projeto a classe ClasseEObjeto.java
cujo código é mostrado na figura a seguir. Leia com atenção os comentários.
2. Compile e rode o código anterior. Certifique-se de que o resultado seja:
Trabalho adicional:
3. Modifique o arquivo ClasseEObjeto.java de modo que ele atenda às seguintes
especificações:

Crie outra instância da classe String usando o operador new. Inicialize o
novo objeto com o valor:
o “Sou outra instancia da classe String”
4. Compile e rode o código
(1.2) Criar instâncias da classe Integer usando o operador new
Passos a seguir:
1. Modifique a classe ClasseEObjeto.java como mostrado a seguir:
2. Compile e rode o código anterior. Certifique-se de que o resultado seja:
Trabalho adicional:
3. Modifique o arquivo ClasseEObjeto.java de modo que ele atenda às seguintes
especificações:

Crie outra instância da classe Long usando o operador new.

Mostre o valor do objeto criado usando o método System.out.println(...)
4. Compile e rode o código
Exercício 2: Métodos estáticos e métodos de instância.
Introdução:
Neste exercício você aprenderá como invocar tanto métodos estáticos quanto métodos
de instância de uma classe. Observe que um método estático é invocado na forma:
NomeDaClasse.nomeDoMetodoEstatico
Exemplo:
Integer.parseInt("25"); // parseInt() é um método estático da classe Integer
Um método não-estático (de instância) só pode ser invocado através de uma instância
da classe:
nomeDoObjeto.nomeDoMetodoNaoEstatico
Exemplo:
String str1 = new String(“Hello”);
char x = str1.charAt(0);
// cria uma instancia da classe String
// invoca um método de instância da classe
// String através do objeto str1
(2.1) Uso de métodos estáticos (de classe) e não estáticos (de instância)
1. Crie um projeto no JCreator. Adicione a esse projeto a classe
MetodosEstaticos_Instancia.java a seguir:
2. Compile e rode o código
3. Verifique que o resultado é:
Trabalho adicional:
4. Escreva a classe MetodosEstaticos_Instancia2.java a seguir. Compile e observe os
erros de compilação que você obteve. Corrija esses erros de modo que o programa
compile e rode.
Trabalho adicional:
5. Identifique no código abaixo os métodos estáticos e não estáticos.
Exercício 3: Passagem por valor e passagem por referência
Introdução:
Neste exercício você exercitará os conceitos de passagem por valor. Observe que as
variáveis de tipos primitivos são passadas por valor enquanto que objetos são
passados por referência. Um array é considerado como sendo um objeto e é portanto
passado por referência, ainda que os elementos que ele contém sejam tipos primitivos.
(3.1) Passagem de parâmetros por valor
1. Crie um novo projeto no JCreator e insira nele a classe PassagemPorValor.java
cujo código é mostrado a seguir:
2. Compile e rode o código
3. Verifique que o resultado é:
Trabalho adicional:
3. Modifique o arquivo PassagemPorValor.java de modo que ele atenda às seguintes
especificações:

Passe um outro tipo primitivo como parâmetro para o método teste(). Você
pode escolher qualquer tipo primitivo (tal como long ou boolean)


Atribua um valor ao segundo parâmetro antes de chamar o método teste().
Altere o valor do parâmetro passado dentro do método teste(), assim como
você fez com o primeiro parâmetro no código acima.
Modifique as chamadas ao método System.out.println(...) acima de modo a
mostrar os valores do primeiro e do segundo parâmetros.
(3.2) Passagem de parâmetros por referência
1. Crie um novo projeto no JCreator e insira nele a classe
PassagemPorReferencia.java cujo código é mostrado a seguir:
2. Compile e rode o código
3. Verifique que o resultado é:
Exercício 4: Escopo de Variáveis
Introdução:
Neste exercício você exercitará o conceito de escopo de variáveis. Você também
aprenderá a declarar três tipos de variáveis: variáveis estáticas, variáveis de instância
e variáveis locais.
(4.1) Compile e rode um programa Java que exercita o escopo de variáveis
1. Crie um novo projeto no JCreator e insira nele a classe EscopoDeVariaveis.java
cujo código é mostrado a seguir.
2. Compile o código
3. Você deve encontrar um erro de compilação. O problema é que o escopo da
variável var2 é somente dentro do bloco onde ela é definida e ela não pode ser usada
fora deste bloco:
4. Modifique o código como mostrado na figura a seguir:
5. Compile e rode o código
6. Verifique que a saída seja o seguinte resultado:
(4.2) Escreva um programa Java que declare três tipos de variáveis
1. Crie um novo projeto no JCreator e insira nele a classe
TresTiposDeVariaveis.java cujo código é mostrado a seguir.
2. Compile o código
3. Você deve encontrar um erro de compilação. Uma variável de instância não pode
ser referenciada a partir de um contexto estático: o método main() é um método
estático.
4. Comente a linha com problema. Compile e rode o código.
Exercício 5: Conversão de tipos primitivos e Classes Envoltório
(Wrappers)
Introdução:
Neste exercício você exercitará a conversão de tipos primitivos e como converter
tipos primitivos para o Envoltório (Wrapper) correspondente e vice-versa. A
conversão de objetos será vista mais tarde.
(5.1) Convertendo tipos primitivos
1. Crie um novo projeto no JCreator e insira nele a classe
ConvertendoPrimitivos.java cujo código é mostrado a seguir.
2. Compile e rode o código
3. Verifique que o resultado é:
Trabalho adicional:
4. Remova a conversão explícita quando você converte de double para int e observe o
erro de compilação.
(5.2) Convertendo tipos primitivos para classes Envoltório e vice-versa
1. Crie um novo projeto no JCreator e insira nele a classe
ConvertendoPrimitivosParaEnvoltorios.java cujo código é mostrado a seguir.
2. Compile e rode o código
3. Verifique que o resultado é:
Trabalho adicional:
4. Modifique o arquivo ConvertendoPrimitivosParaEnvoltorios.java de modo que
ele atenda às seguintes especificações:

Crie uma variável do tipo Long, converta-a para o tipo primitivo long e
imprima o valor do tipo primitivo.
Exercício 6: Comparando Objetos
Introdução:
Neste exercício você exercitará o conceito de comparação de objetos usando a classe
String como exemplo.
(6.1) Compile e rode um programa Java que compare objetos:
1. Crie um novo projeto no JCreator e insira nele a classe
TesteIgualdadeStrings.java cujo código é mostrado a seguir. Não deixe de ler os
comentários no texto
2. Compile e rode o código
3. Verifique que o resultado é:
Trabalho adicional:
4. Escreva a classe TesteIgualdadeInteiros.java como se segue.


Compare instâncias da classe Integer usando o mesmo código de teste da
classe TesteIgualdadeStrings.java acima
Compile e rode o programa
Exercício 7: O método getClass() e o operador instanceof
Introdução:
Neste exercício você utilizará o método getClass() da classe Object para descobrir a
que classe pertence um objeto. Você também aprenderá como usar o operador
instanceof para descobrir se um objeto é uma instância de uma Classe específica.
(7.1) Compile e rode um programa Java que use o método getClass():
1. Crie um novo projeto no JCreator e insira nele a classe MetodoGetClass.java cujo
código é mostrado a seguir. Não deixe de ler os comentários no texto
2. Compile e rode o código
3. Verifique que o resultado é:
Trabalho adicional:
4. Modifique a classe MetodoGetClass.java como se segue.

Crie uma instância de java.util.Date e use o método getClass() para
descobrir as informações da Classe a que pertence o objeto criado.

Compile e rode o programa
(7.2) Uso do operador instanceof
1. Crie um novo projeto no JCreator e insira nele a classe OperadorInstanceOf.java
cujo código é mostrado a seguir. Não deixe de ler os comentários no texto
Observe que a classe Integer é uma subclasse da classe Number
2. Compile e rode o código
3. Verifique que o resultado é:
Trabalho adicional:
4. Modifique a classe MetodoGetClass.java como se segue.

Crie uma instância da classe Long e use o operador instanceof para
descobrir se ela pertence aos tipos Number, Object e Long.

Compile e rode o programa
Exercício 8: Para você fazer sozinho
1. Crie um novo projeto no JCreator que atenda as seguintes especificações:

Receba os nomes (somente o primeiro nome) de 3 a 6 pessoas da sua família
como argumentos em linha de comando

Escreva um método estático chamado geraNovoNome() como se segue:
o Ele recebe o array de String como parâmetro
o Ele cria um novo nome suprimindo a segunda letra de cada nome

Imprima os nomes originais e os nomes modificados
Download