org.problets.domain.model.expression.node.operator.relational
Class Relational

java.lang.Object
  extended by org.problets.domain.model.DomainModel
      extended by org.problets.domain.model.expression.node.NodeModel
          extended by org.problets.domain.model.expression.node.operator.Operator
              extended by org.problets.domain.model.expression.node.operator.relational.Relational
All Implemented Interfaces:
java.lang.Cloneable
Direct Known Subclasses:
Equals, GreaterEquals, GreaterThan, LessEquals, LessThan, NotEquals

public class Relational
extends Operator

To hold all constants specific to relational operators

Author:
Amruth Kumar

Field Summary
static java.lang.String MIXED_OPERANDS
           
static int TOTAL_OPERATORS
           
 
Fields inherited from class org.problets.domain.model.expression.node.operator.Operator
INCORRECT_OPERAND_COUNT
 
Fields inherited from class org.problets.domain.model.DomainModel
BOOLEAN, BREAKPOINT, CHARACTER, DOUBLE_PRECISION_REAL, ERROR_TYPE, EVAL_STATUS, expACTION, expASSIGNMENT, expAUTO_DEALLOCATION, expCALL, expCONDITION, expDECLARATION, expDEREFERENCING, expDYNAMIC_ALLOCATION, expDYNAMIC_ALLOCATION_INITIALIZATION, expDYNAMIC_DEALLOCATION, expELSE_CLAUSE, expERROR, expEXECUTION, expIF_CLAUSE, expINITIALIZATION, expINPUT, expPARAMETER_PASSING, expPRINT, expQUESTIONABLE, expREFERENCING, expRETURN, expRUNTIME_ERROR, expSEMANTIC_ERROR, expSYNTAX_ERROR, expUPDATE, IDENTITY, MAX_OBJECT_IDENTITY, MIN_OBJECT_IDENTITY, QUADRUPLE_PRECISION_REAL, RUNTIME_ERROR, SEMANTIC_ERROR, SIGNED_INTEGER, SIGNED_LONG, SIGNED_SHORT, SINGLE_PRECISION_REAL, SYNTAX_ERROR, UNDEFINED_TYPE, UNSIGNED_INTEGER, UNSIGNED_LONG, UNSIGNED_SHORT, WARNING
 
Method Summary
 Value evaluate()
          In Java/C#, <, <=, >, and >= cannot be applied to boolean operands.
 void explain(java.util.Vector explanation, java.util.Vector errors)
          Textually explains the evaluation of the tree - as opposed to graphical explanation by the view
 java.lang.String getQualifiedLearningObject()
          Method returns the name of the operator, disambiguated enough so that it can be easily credited in the student model.
 
Methods inherited from class org.problets.domain.model.expression.node.operator.Operator
clone, coerceToReal, contentEquals, contentEquals, getArity, getAssociativity, getLocalLearningObjectives, getOperatorType, getPrecedence, getStudentCopy, getSymbol, grade, locateOperator, main, recursiveContentEquals, recursiveSetValue
 
Methods inherited from class org.problets.domain.model.expression.node.NodeModel
classifyNodes, getContent, getLeftChild, getNonRecursiveContent, getOrder, getPosition, getRecursiveContent, getRightChild, getSideEffects, getValue, insertInOrder, setLeftChild, setOrder, setPosition, setRightChild, setValue, shortCircuit, skip, subExpToString, toString, valueEquals
 
Methods inherited from class org.problets.domain.model.DomainModel
getId, getIdName, grade
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

TOTAL_OPERATORS

public static final int TOTAL_OPERATORS
See Also:
Constant Field Values

MIXED_OPERANDS

public static final java.lang.String MIXED_OPERANDS
See Also:
Constant Field Values
Method Detail

getQualifiedLearningObject

public java.lang.String getQualifiedLearningObject()
Method returns the name of the operator, disambiguated enough so that it can be easily credited in the student model.

Overrides:
getQualifiedLearningObject in class Operator

evaluate

public Value evaluate()
In Java/C#, <, <=, >, and >= cannot be applied to boolean operands. == and != can be applied as long as both the operands are boolean. This is being handled here in one shot for all the relational operators although this code could be moved into the 6 different classes for true object-orientation.

Overrides:
evaluate in class Operator

explain

public void explain(java.util.Vector explanation,
                    java.util.Vector errors)
Textually explains the evaluation of the tree - as opposed to graphical explanation by the view

Overrides:
explain in class Operator