package data; /** * Values that operate on {@link Number numbers}. * * <p>All the operations are implemented as you would expect, the implementation is given in concrete * subclasses.</p> * * @author Steffen Zschaler * @version 2.0 19/08/1999 * @since v2.0 */ public abstract class NumberValue implements Value { /** * The actual value. * * @serial */ private Number m_nbValue; /** * Create a new NumberValue. * * @param nbValue the actual initial value. */ public NumberValue (Number nbValue) { super(); setValue (nbValue); } /** * Set the actual value of the object. * * @override Sometimes Override if you want to impose restrictions on the class of the actual value. * * @param nbValue the new actual value. */ public void setValue (Number nbValue) { m_nbValue = nbValue; } /** * Get the actual value of the object. * * @override Never */ public Number getValue() { return m_nbValue; } /** * @override Sometimes The default implementation returns * <pre> * (getValue().longValue() == 0) * </pre> */ public boolean isAddZero() { return (getValue().longValue() == 0); } /** * @override Sometimes The default implementation returns * <pre> * isAddZero() * </pre> */ public boolean isMulZero() { return isAddZero(); } /** * @override Sometimes The default implementation returns * <pre> * (getValue().longValue() == 1) * </pre> */ public boolean isMulOne() { return (getValue().longValue() == 1); } /** * @override Always */ public abstract Object clone(); /** * Return a {@link String} representation of the object. * * @override Sometimes The default implementation returns * <pre> * getValue().toString() * </pre> */ public String toString() { return getValue().toString(); } }