Herança e Polimorfismo em Java Exercício 1) Criar uma estrutura hierárquica que contenha as seguintes classes: Veiculo (classe abstracta), Bicicleta e Automóvel. Os métodos da classe Veiculo são todos abstractos e possuem a seguinte assinatura: • • • listarVerificacoes() ajustar() limpar() Estes métodos são implementados nas subclasses Automóvel e Bicicleta. Acrescentar na classe Automóvel o método mudarOleo() 2) Para desenvolver a classe Teste que é apresentada a seguir é necessário criar também a classe Oficina que terá dois métodos: • • proximo()que retorna aleatoriamente um objecto do tipo bicicleta ou automóvel manutencao(Veiculo v)que recebe como parâmetro um objecto do tipo veiculo e chama os métodos definidos na classe veiculo: • • • • listarVerificacoes() ajustar() limpar() se o veiculo for Automóvel deve também chamar o método mudarOleo() class Test{ public static void main(String args[]) { Oficina o = new Oficina(); Veiculo v; for(int i=0;i<4;++i){ v=o.proximo(); o.manutencao(v); } } } class Test{ public static void main(String args[]) { Oficina o = new Oficina(); Veiculo v; for(int i=0;i<4;++i){ v=o.proximo(); o.manutencao(v); } } import java.util.*; public class Oficina{ Random r=new Random(); public Veiculo proximo() { Veiculo v; int code=r.nextInt(); if(code%2==0) v=new Automovel(); else v=new Bicicleta(); return v; } public void manutencao(Veiculo vi) { vi.listarVerificacoes(); vi.ajustar(); vi.limpar(); if (vi instanceof Automovel) ((Automovel)vi).mudarOleo(); } } abstract class Veiculo{ public Veiculo() { System.out.print("Veiculo"); } public abstract void listaVerificacoes(); public abstract void ajustar(); public abstract void limpar(); } public class Automovel extends Veiculo{ public Automovel() { System.out.println("Automovel"); } public void listarVerificacoes() { System.out.println("Automovel.listarVerificacoes "); } public void ajustar() { System.out.println("Automovel.ajustar "); } public void limpar() { System.out.println("Automovel.limpar "); } public void mudarOleo() { System.out.println("Automovel.mudouOleo"); } } public class Bicicleta extends Veiculo{ public Bicicleta() { System.out.println("Bicicleta"); } public void listarVerificacoes() { System.out.println("Bicicleta.listarVerificacoes "); } public void ajustar() { System.out.println("Bicicleta.ajustar"); } public void limpar() { System.out.println("Bicicleta.limpar"); } }