Herança e Polimorfismo em Java Exercício

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