| JRoboTest.java |
// JRobo Example 9
// Demonstrates polymorphism!
// Author: David 5/9/99
import java.awt.*;
import java.applet.*;
import java.util.ArrayList;
public class JRoboTest extends Applet
{
ArrayList theTeam; // this holds a collection of JRobos
public void paint( Graphics g )
{
JRobo aRobo = new JRobo( g );
move( aRobo, -400, 0 );
ScaledJRobo robby = new ScaledJRobo( g );
move( robby, -100, 0 );
robby.setScale( 2 );
ColouredJRobo friendly = new ColouredJRobo( g );
move( friendly, 300, 0 );
// add each JRobo to the team
theTeam = new ArrayList();
theTeam.add( aRobo );
theTeam.add( robby );
theTeam.add( friendly );
// tell each member of the team to draw same rect
// Polymorphism means the each do it their way!
for (int i = 0; i < theTeam.size(); i++)
{
JRobo someJRobo = (JRobo) theTeam.get( i );
someJRobo.rect( 150, 50 );
}
for (int i = 0; i < theTeam.size(); i++)
{
JRobo someJRobo = (JRobo) theTeam.get( i );
move( someJRobo, 0, -100 );
someJRobo.r( 45 );
someJRobo.f( 100 );
}
robby.setScale(4);
robby.circle( 25);
}
// move - reposition JRobo x, +dx, +dy from current location
void move( JRobo x, int dx, int dy )
{
x.p();
x.f( dy );
x.r( 90 );
x.f( dx );
x.l( 90 );
x.p();
}
} // end JRoboTest class
/*
// version 5 for syntax withoout generics
for ( Object robo : theTeam )
{
( (JRobo) robo).rect( 25, 25 );
}
// version 5 syntax with generics
ArrayList<JRobo> myTeam;
myTeam = new ArrayList<JRobo>();
myTeam.add( aRobo );
myTeam.add( robby );
myTeam.add( friendly );
for ( JRobo robo : myTeam )
{
robo.r(45);
robo.rect( 25, 25 );
robo.f(100);
}
*/