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: