public class RestaurantTisch extends Tisch
{ 
  private int TischNummer;
  private int frei;
  private Gaeste TischGaeste[] = new Gaeste[SitzPlätze];

   //Konstruktor 
  public RestaurantTisch(int SitzPlätze, int TischNummer)
    {
      super(SitzPlätze);
      this.TischNummer = TischNummer;
      frei = SitzPlätze;
    }

   //gib Tischbelegung aus 
  public void show()
    {
      System.out.print("Tisch " + TischNummer);
      System.out.print(" (" + SitzPlätze + " Plätze / ");
      System.out.println(frei + " freie Plätze)");
      for (int g = 0; g < TischGaeste.length; g++)
	{
	  if (TischGaeste[g] != null)
	    { 
	      System.out.print("\t");
	      TischGaeste[g].show();
	    }
	}
    }

   //wieviele Plaetze sind noch frei? 
  public int frei()
    {
      return frei;
    }

   //setze Gaeste an den Tisch und kennzeichne Plaetze als belegt 
  public void plaziere(Gaeste g)
    {
      if (g.Anzahl() <= frei)
	{  // sie passen 
	  for (int i = 0; i < TischGaeste.length; i++)
	    {  // suche freien Platz im Array TischGaeste 
	      if (TischGaeste[i] == null)
		{  // wir nehmen die Gäste auf 
		  TischGaeste[i]=g;
		  frei -= g.Anzahl();
		  return;
		}
	    }
	}
       // sie passen nicht 
      System.out.println("Sorry");
      g.show();
      System.out.println("passen nicht an Tisch " + TischNummer);
    }

   //mache Belegung durch die Gruppe rueckgaengig   
  public boolean freimachen(Gaeste g)
    {  // prüfen, ob die Gäste an diesem Tisch sitzen 
	  for (int i = 0; i < TischGaeste.length; i++)
	    { 
	      if (TischGaeste[i] == g)
	      {  // wir machen die Plätze frei 
		TischGaeste[i]=null;
		frei += g.Anzahl();
		return true;
	      }
	    }
	  return false;
    }

   //Tisch leer? 
  public boolean leer()
    {  // sitzt keiner am Tisch 
      return frei == SitzPlätze;
    }
}
