/** * */ package de.fhswf.in.inf.upnfx.util; /** * An abstract class for calculations with unary operators. * * @author $Author: $ * @version $Revision: $, $Date: $ UTC */ public abstract class BinaryOperator implements Operator { /* * (non-Javadoc) * * @see de.fhswf.in.inf.java1.aufgabe12.Operator#eval(java.util.Stack) */ @Override public final void eval(ObservableDoubleStack stack) { if (stack == null) { throw new IllegalArgumentException("Stack must not be null."); } if (stack.size() < 2) { throw new IllegalArgumentException( "Binary operation requires two operand."); } double d2 = stack.pop(); double d1 = stack.pop(); stack.push(eval(d1, d2)); } /** * This method implements the calculation. * * @param d1 * The first operator. * @param d2 * The second operator. * @return The result of the calculation. */ abstract double eval(double d1, double d2); }