/**
  *
  * Programmieraufgabe P-24 (arithmetik.jar)
  * Leonhard Fellermayr (Mat. Nr. 128105090)
  *
  * @author Leonhard Fellermayr
  * @version 1.0
  *
  */

/** Benoetigte Packages */

import java.util.Map;
import java.util.Set;

/** Implementierung der (abstrakten) Klasse Ausdruck */

public abstract class Ausdruck
{

	/** Object accept (ArithmeticVisitor) : Wendet den uebergebenen Besucher
	  * auf den Ausdruck an. Wird erst in den Unterklassen implementiert. */

	public abstract Object accept (ArithmeticVisitor v);

	/** int wert (Map) : Liefert das Ergebnis des Ausdrucks unter Beruecksichtigung
	  * der in der java.util.Map befindlichen Variablenzuweisung.
	  *
	  * Verwendet den WertVisitor.
	  *
	  * @param bindung Variablenzuweisung als java.util.Map
	  * @return Wert des Ausdrucks (int)
	  *
	  */

	public int wert (Map bindung)
	{

		return ((Integer) this.accept (new WertVisitor (bindung))).intValue ();

	}

	/** Set variablen () : Liefert ein java.util.Set, das alle Variablennamen des Ausdrucks
	  * enthaelt.
	  *
	  * Verwendet den SetVisitor.
	  *
	  * @return java.util.Set aller Variablennamen des Ausdrucks
	  *
	  */

	public Set variablen ()
	{

		return (Set) this.accept (new SetVisitor ());

	}

} // Ausdruck