Curso de Programação Básica em Java Instituto de Computação – UNICAMP Elaborado por: Cecília Mary Fischer Rubira Fernando Castor Filho Última revisão: 14/04/2004 Roteiro de Classes Abstratas e Concretas (4) Nota: Os exercícios devem ser executados na ordem apresentada pois o nível de dificuldade é crescente. 1. Nos itens de 1 a 7 deste roteiro, o código deve ser compilado e executado a partir do diretório veiculos, ou seja, o diretório veiculos deve ser o diretório corrente. Obtenha os arquivos veiculos/FilaVeiculo.java, veiculos/Veiculo.java, veiculos/Carro.java, veiculos/Caminhao.Java e veiculos/Inicial.java. Compile e execute a classe Inicial. Adicione o modificador abstract à definição da classe Veiculo. Compile-a e execute novamente a classe Inicial. 2. Adicione à operação main( ) da classe Inicial uma linha que cria um objeto do tipo Veiculo. Compile a classe Inicial. O que aconteceu? Você sabe explicar o porquê? Desfaça a modificação antes de passar para o próximo item. 3. Remova o modificador abstract da definição da classe Veiculo. Defina em Veiculo a seguinte operação: public abstract boolean ligar( ); Recompile as classes Caminhao e Carro. O que aconteceu? 4. Adicione o modificador abstract à definição da classe Carro e tente compilá-la. O que acontece? Desfaça essa modificação antes de passar para o próximo item. 5. Implemente a operação ligar( ) nas classes Carro e Caminhao. Essa operação deve imprimir na tela uma mensagem informando que o carro ou caminhão foi ligado corretamente. Obtenha a classe veículos/ExemploLigar.java, compile os arquivos e execute essa classe. 6. Implemente uma operação ligarTodos( ) na classe FilaVeiculo. Essa operação deve funcionar de maneira muito similar a mostraFila( ) mas, ao invés de enviar a mensagem mostra( ) de cada veículo, envia a mensagem ligar( ). Modifique a operação main( ) da classe Inicial para que envie a mensagem ligarTodos( ) para o objeto fila. Compile as classes e execute a classe Inicial. 7. Obtenha o arquivo veiculos/Aviao.Java. Apesar de representar um tipo de veículo, a classe Aviao não apresenta todas as características definidas pela classe Veiculo. Por exemplo: não faz sentido um avião ter um atributo chamado placa. Use o conceito de classes abstratas para reestruturar a hierarquia Veiculo. 8. Neste item, o código deve ser compilado e executado a partir do diretório figuras. Obtenha os arquivos figuras/Figura.Java, figuras/Circulo.java, figuras/Linha.java e figuras/ExemploFiguras.java. Compile os arquivos, execute a classe ExemploFiguras e observe os resultados. Modifique as operações esconder( ) e mostrar( ) para que deixem de ser abstratas e informem qual operação de qual classe está sendo chamada (similarmente às operações esconder( ) e mostrar( ) da classe Circulo). Recompile os arquivos e execute novamente a classe ExemploFiguras. Por que o resultado não mudou? Modifique a operação mover( ) para o seguinte: void mover(int x, int y) { this.esconder(); this.mostrar(x, y) } Compile os arquivos e, mais uma vez, execute a classe ExemploFiguras. Por que o resultado também não mudou?