/** * Copyright (c): Uwe Schmidt, FH Wedel * * You may study, modify and distribute this source code * FOR NON-COMMERCIAL PURPOSES ONLY. * This copyright message has to remain unchanged. * * Note that this document is provided 'as is', * WITHOUT WARRANTY of any kind either expressed or implied. */ abstract class BinaryExpr extends Expr { // die Operanden protected Expr left; protected Expr right; //-------------------- // der Konstruktor ist protected // da er nur von Subklassen aus aufgerufen wird protected BinaryExpr(Expr left, Expr right) { this.left = left; this.right = right; } public Object eval() { Object v1 = left.eval(); Object v2 = right.eval(); return op2(v1, v2); } public String toString() { return "(" + left.toString() + " " + op2ToString() + " " + right.toString() + ")"; } // Schablonenmethoden fuer 2-stellige Operationen protected abstract Object op2(Object v1, Object v2); protected abstract String op2ToString(); }