public class PointTest {

  // version 0 
  public static void main(String args[]) {
    Point p = new Point();
    p.x = 1; p.y = 2;
    System.out.printf("(%d, %d)", p.x, p.y);
  }

/*
  // version 1
  public static void main(String args[]) {
    Point p = new Point(10, 20);
    p.move(1, -1);
    p.print();
    System.out.println("<br/>");
  }
 */ 

/*
  // version 2
  public static void main(String args[]) {
    ColorPoint cp = new ColorPoint(10, 20, "green");
    cp.move(1, -1);
    // cp.color = "noSuchColor";
    cp.print();
    System.out.println("<br/>");
  }
 */ 

/*
  // version 3 
  public static void main(String args[]) {
    Point p = new Point(10, 20);
    p.move(1, -1);
    p.print();
    System.out.println("<br/>");
    
    ColorPoint cp = new ColorPoint(20, 30, "green");
    cp.print();
    
    System.out.println("<br/>");

    Point[] pts = new Point[2];
    pts[0] = p; pts[1] = cp;
    
    int i;
    for (i=0; i<2; i++) {
      pts[i].move(10, 10);
    }
    for (i=0; i<2; i++) {
      pts[i].print();
      System.out.println("<br/>");
    }
    moveInSquare(p);
    moveInSquare(cp);
  }

  static void moveInSquare(Point p) {
    p.move(1, 0);
    p.print();
    System.out.print(" ");
    p.move(0, 1);
    p.print();
    System.out.print(" ");
    p.move(-1, 0);
    p.print();
    System.out.print(" ");
    p.move(0, -1);
    p.print();
    System.out.println("<br/>");
  }
  */
}
