Java Reference
In-Depth Information
The constructor for the
Abs
class collaborates with its superclass to store a source function in
source[0]
.
The
f()
method of class
Abs
shows D
ECORATOR
at work. This method applies an absolute-
value function
to the value of another function
at the given time. In other words, the
Abs.f()
method decorates its source function with an absolute-value function. This simple
idea lets us compose an infinite number of functions from a small hierarchy of classes. The
code for the
Cos
and
Sin
classes is almost identical to the code for the
Abs
class.
The
T
class provides a trivial identity function:
package com.oozinoz.function;
public class T extends Function
{
public T()
{
super(new Function[0]);
}
public double f(double t)
{
return t;
}
}
The
T
class lets you model functions that vary linearly with time. For example, in the
ShowFunZone
class, the arc of a circle varies from 0 to 2 times pi as time varies from 0 to 1:
Function theta = new Arithmetic(
'*',
new Constant(2 * Math.PI),
new T());
The
Constant
class represents a value that does not change over time:
package com.oozinoz.function;
public class Constant extends Function
{
private double constant;
public Constant(double constant)
{
super(new Function[0]);
this.constant = constant;
}
public double f(double t)
{
return constant;
}
}
The
Arithmetic
class requires an operator and two
Function
arguments: