package no.birkett.kiwi; import java.util.ArrayList; import java.util.List; /** * Created by alex on 30/01/15. */ public class Expression implements ExpressionConvertible { private List terms; private double constant; public Expression() { this(0); } public Expression(double constant) { this.constant = constant; this.terms = new ArrayList(); } public Expression(Term term, double constant) { this.terms = new ArrayList(); terms.add(term); this.constant = constant; } public Expression(Term term) { this (term, 0.0); } public Expression(List terms, double constant) { this.terms = terms; this.constant = constant; } public Expression(List terms) { this(terms, 0); } public double getConstant() { return constant; } public void setConstant(double constant) { this.constant = constant; } public List getTerms() { return terms; } public void setTerms(List terms) { this.terms = terms; } public double getValue() { double result = this.constant; for (Term term : terms) { result += term.getValue(); } return result; } public final boolean isConstant() { return terms.size() == 0; } @Override public Expression toExpression() { return this; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("isConstant: " + isConstant() + " constant: " + constant); if (!isConstant()) { sb.append(" terms: ["); for (Term term: terms) { sb.append("("); sb.append(term); sb.append(")"); } sb.append("] "); } return sb.toString(); } }