public class Restaurant
{
  private String name;
  private RestaurantTisch Tische[];
  private int toptisch = 0;

  //Konstruktor 
  public Restaurant(String name, int MaxTisch)
    {
      this.name = name;
      Tische = new RestaurantTisch[MaxTisch];
    }

  //stelle Tisch auf 
  public void add(RestaurantTisch t)
    { 
      Tische[toptisch++] = t;
    }

  //aktuelle Belegung der Tische 
  public void show()
    {
      System.out.println();
      for (int t=0; t < toptisch; t++)
	{
	  Tische[t].show();
	}
    }

  //Plazierung fuer die Gaestegruppe finden 
  public void kommen(Gaeste g)
    {
      final int KEINER = -1;
      int tisch = KEINER;  // die Gaeste sollen an Tische[tisch] sitzen 
      // wir waehlen den kleinsten passenden leeren Tisch 

      for (int t=0; t < toptisch; t++)
	{
	  if (Tische[t].leer())
	    { // reichen die Plaetze? 
	      if (Tische[t].frei() >= g.Anzahl())
		{ // schon vorher einen gefunden? 
		  if (tisch != KEINER)
		    { // nimm den kleineren der beiden 
		      if (Tische[t].frei() < Tische[tisch].frei())
			{
			  tisch = t;
			}
		    }
		  else tisch = t;
		}
	    }
	}

      // wenn kein passender frei war, versuchen wir die Gaeste an einem 
      // schon teilweise besetzten Tisch zu plazieren 

      if (tisch == KEINER)
      for (int t=0; t < toptisch; t++)
	{ // reichen die Plätze 
	  if (Tische[t].frei() >= g.Anzahl())
	    { // schon vorher einen gefunden? 
	      if (tisch != KEINER)
		{ // nimm den kleineren der beiden 
		  if (Tische[t].frei() < Tische[tisch].frei())
		    {
		      tisch = t;
		    }
		}
	      else tisch = t;
	    }
	}

      if (tisch == KEINER)
	{ // Tschuldigung 
	  System.out.println("Sorry ");
	  System.out.print("\t");
	  g.show();
	  System.out.println("finden im Moment keinen Platz\n");
	}
      else 
	{
	  Tische[tisch].plaziere(g);
	}
    }

  //Tischbelegung rueckgaengig machen 
  public void gehen(Gaeste g)
    {
      for (int t=0; t < toptisch; t++)
	{
	  if (Tische[t].freimachen(g))
	    return;
	}
      System.out.println("Sorry ");
      System.out.print("\t");
      g.show();
      System.out.println("koennen nicht gehen, da sie gar nicht da sind\n");
    }
}
