Você está na página 1de 3

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");
}
}

Você também pode gostar