Faço curso a distancia de java,não consigo fazer exercício pra hoje meia noite,me ajudem por favor!

/* Fiz parte do exercício, estou com dificuldades nas classes Oficina(que não sei se ta certo e ta faltando o tratamento de entres ou saidas ilegais) e Teste(não consigo chamar os métodos), colocar o enunciado aqui só do que eu não fiz direito ou não consegui fazer porque é muito grande o enunciado completo.Desculpa ,sei que é grande gente mas realmente preciso da ajudo pois preciso entregar isso hoje até meia noite, muito obrigado pela atenção.
Deixo em anexo o exercício todo para quem quiser…!

3-c)Alteração da classe Oficina: Remova o método manutencao() da
classe Oficina. Defina um atributo privado chamado boxes do tipo array
de veículos com 5 posições. Os boxes funcionarão como uma fila de
manutenções. Crie dois novos métodos públicos: entrada(Veiculo v) e
saida(). O primeiro, entrada(Veiculo), recebe uma instância de Veiculo
como parâmetro e o adiciona na primeira posição livre do array boxes. O
segundo, saida(), recupera o primeiro veiculo do array e chama o seu
método manutencao(). Em seguida, o método saída() deverá
reposicionar os elementos do array de modo que o segundo veículo
passe a ocupar a primeira posição e assim sucessivamente até que não
haja mais veículos na fila de manutenções. A classe Oficina não deve
permitir entradas ou saídas ilegais no array de veículos, ou seja, os
métodos entrada(Veiculo v) e saída() devem tratar as condições de fila
cheia e fila vazia.

e)Criação da classe Test: Crie uma classe de teste com o método main
que realize as seguintes operações: preencher as 5 posições do array
boxes utilizando o método entrada(); realizar uma saída e duas novas
entradas na sequência e depois mais 6 saídas.

[b]public interface Veiculo
{
public static final int AEREO = 1;
public static final int AQUATICO = 2;
public static final int TERRESTRE = 3;

public void manutencao();
}

public class Automovel implements Veiculo
{
final int tipo;
private Automovel(int tipo)
{
this.tipo=tipo;
System.out.println(“Automovel do tipo” + tipo);
}

public void listarVerificacoes()
{
System.out.println("Automovel.listarVerificacoes ");
}

private void ajustar()
{
System.out.println("Automovel.ajustar ");
}

private void limpar()
{
System.out.println("Automovel.limpar ");
}

private void mudarOleo()
{
System.out.println(“Automovel.mudouOleo”);
}

public void manutencao()
{
ajustar();
limpar();
mudarOleo();
}
}

public class Bicicleta implements Veiculo
{
final int tipo;
private Bicicleta(int tipo)
{
this.tipo = tipo;
System.out.println(“Bicicleta do tipo” + tipo);
}

private void listarVerificacoes() {
System.out.println("Bicicleta.listarVerificacoes ");
}

private void ajustar() {
System.out.println(“Bicicleta.ajustar”);
}

private void limpar() {
System.out.println(“Bicicleta.limpar”);
}

public void manutencao()
{
    ajustar();
    limpar();
}

}[/b]

[b]public class Oficina
{
Random r = new Random();
private Veiculo boxes[] = new Veiculo[5];

  public void entrada(Veiculo v)
  {
      try
      {
          this.boxes[0] = v;
          System.out.println("Entrada realizada");
          for(int i = 1;i < boxes.length;i++)
          {
              this.boxes[i] = v;
              System.out.println("Entrada realizada");
          }
      }
      catch(ArrayIndexOutOfBoundsException erro)
      {
          System.out.println("Tentativa de acesso a um elemento inexistente no array");
      }
  }
  public void saida(Veiculo v)
  {
      try
      {
          this.boxes[0] = v ;
          v.manutencao();
          System.out.println("Saida realizada");
          for(int i = 1;i < boxes.length;i++)
          {
              this.boxes[i] = v;
              v.manutencao();
              System.out.println("Saida realizada");
          }
      }
      catch(ArrayIndexOutOfBoundsException erro)
      {
          System.out.println("Tentativa de acesso a um elemento inexistente no array");
      }

  }

}

public class Teste
{
public static void main(String args[])
{
Oficina a = new Oficina();
for(int i = 0;i < 6;i++)
{
a.entrada();
}
for (int i = 0; i < 1;i++)
{
a.saida();
}for(int i = 0;i < 6;i++)
{
a.entrada();
}
for(int i = 0;i < 7;i++)
{
a.saida();
}
}
[/b]