Exercícios: POO em Java
Classes e Objetos
| Herança e Polimorfismo
| Classes abstratas e interfaces
| API Java
| Material de Apoio
Classes e Objetos
- O que há de errado com o programa Errado2.java ?
- Porque a saída do programa Errado3.java não é igual a (1.0,1.0)?
- Baixe o programa Ordenacao.java. Esse programa ilustra o uso de arrays em Java. Compile e execute esse programa, observando seu resultado.
- Para que foi usada a palavra-chave static antes do método ordena no programa Ordenacao.java? O que acontecerá se esta palavra for omitida?
- Na linha 22 de Ordenacao.java, a chamada ao método ordena pode ser escrita de que outra forma?
- No programa Ordenacao.java, inclua um método que ordena um array de inteiros em ordem decrescente. Modifique o método main para invocar este novo método e teste o programa.
- Analise o programa Relogio.java e responda às seguintes questões:
- Quais são as variáveis de classe e de instância da classe Relogio?
- Quais são os métodos de classe e de instância da classe Relogio?
- Qual será o resultado da execução do programa?
- Ainda sobre o programa Relogio.java, explique o que acontecerá se:
- adicionarmos o seguinte código na linha 36 do programa?
total = 0;
- adicionarmos o seguinte código na linha 40 do programa?
hora = 10;
- adicionarmos o seguinte código na linha 36 do programa?
Herança e Polimorfismo
- Analise o programa TesteHeranca.java e explique qual será o resultado de sua execução. Compile e execute o programa, verificando se sua resposta está correta. Dica: para fazer este exercício, leia a seção Overriding and Hiding Methods do Tutorial Java da Oracle.
- Considere as seguintes classes:
public class ClassA { public void methodOne(int i) { } public void methodTwo(int i) { } public static void methodThree(int i) { } public static void methodFour(int i) { } } public class ClassB extends ClassA { public static void methodOne(int i) { } public void methodTwo(int i) { } public void methodThree(int i) { } public static void methodFour(int i) { } }
Responda:- Qual método de ClassB sobrescreve um método de ClassA?
- Qual método de ClassB esconde um método de ClassA?
- Quais métodos de ClassB são inválidos devido à herança de ClassA?
Classes abstratas e interfaces
- O programa BichosIncompleto.java ilustra a definição de uma classe abstrata
Bicho
. Para derivar esta classe, é necessário fornecer o som emitido por cada tipo de bicho (método som()). Complete o programa criando as classes derivadasGato
eCachorro
, que devem respectivamente emitir os sons "Miau" e "Auau". - O método
toString
da classe Object retorna a representação de um objeto na forma da uma string. Este método pode ser sobreposto para "personalizar" a representação de um objeto. Implemente este método na classeBicho
do programa BichosIncompleto.java e adicione a seguinte linha ao métodomain
:System.out.println(g);
Considerando os dados do exercício anterior, o resultado da execução da linha acima deverá ser:Garfield
- Faça os exercícios sobre interfaces do Tutorial Java da Sun/Oracle: http://download.oracle.com/javase/tutorial/java/IandI/QandE/interfaces-questions.html
API Java
- O programa JogoDeDados.java ilustra a geração de números aleatórios usando o método
random
da classe java.lang.Math. Uma maneira alternativa de se trabalhar com números aleatórios é através da classe java.util.Random. Reescreva o programa utilizando esta classe. - O programa MedicaoDeTempo.java ilustra o uso do método
currentTimeMillis
da classe java.lang.System. Neste caso, o método é usado para medir o tempo gasto na execução do método loop1. Modifique o programa incluindo um método loop2, que deve implementar um laço equivalente ao de loop1 usando do <..> while (..);. Modifique também o método main de modo a comparar os tempos de execução de loop1 e loop2. - Analise o programa Pessoa.java e explique qual será o resultado de sua execução. Sugestão: para fazer este exercício, leia a seção sobre a classe String da plataforma Java.
- Escreva um programa Java que utilize o método
replace
da classeString
. Este programa deve receber várias strings na linha de comando e, para cada uma delas, mostrar uma string com as vogais substituídas por pontos, como no exemplo abaixo:java TesteReplace lobo ovelha couve l.b. .v.lh. c..v.
- Reescreva o programa do exercício anterior utilizando o método
replaceAll
da classeString
. - Escreva um programa Java que, dado o nome completo de uma pessoa, mostre as iniciais da pessoa. Você pode assumir que o nome da pessoa contenha maiúsculas e minúsculas. Assim, por exemplo, as iniciais de "Fulano de Tal" são "FT" e as de "João Pereira" são "JP".
Material de Apoio
- Java Programming Notes
Grande coleção de anotações úteis sobre programação em Java, com vários exemplos. - The Java Tutorial
Tutorial da Oracle/Sun sobre Java.