We can abstract the graph of this function in useful ways by defining a new class for it:

class Function {
double getValue(double x){ return x*x;}
}

If we add an instance of this class to the CartesianComponent

class CartesianComponent extends matti.gui.CComponent{ Function a_function = new Function(); }

Then the draw method of the CartesianComponent looks like

void draw(Graphics g) {

g.setColor(Color.red);
CPoint position = new CPoint(-10, a_function.getValue(-10));
g.moveTo(position);
double dx = .05;
for(double x = -10; x <= 10; x = x + dx){
position = new CPoint(x, a_function.getValue(x));
g.lineTo(position);
}

This abstraction allows us to make our applet more elaborate: First we'll add some variables (members) to our function, and then use them in the getValue method:

class Function {
double a;
double b;

double getValue(double x){ return a*(x-b)*(x-b);}
}

Now will connect these variables to the sliders with a method in the ExampleApplet like:

void sliderMoved(Slider src) {
double v = src.getSliderValue();

if(src == slider_a)
cartesian_component.a_function.a = v;
else if(src == slider_b)
Cartesian_component.a_function.b = v;
Cartesian_component.draw(); }

}

Here is the result:

 

 

Complete source code for this Example

 

next