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/>");
  }
*/

  public static void testPoint(Point p) {
          p.move(10, 10);
          p.print();
          System.out.println("<br/>");
  }

  // version 3
  public static void main(String args[]) {
    Point       p = new Point(1, 2);
    ColorPoint cp = new ColorPoint(3, 4, "green");
    DeepPoint  dp = new DeepPoint(5, 6, 5);

//    p.move(1, -1);
//    p.print();
//    System.out.println("<br/>");

//    cp.move(1, -1);
//    cp.print();
//    System.out.println("<br/>");

    testPoint(p);
    testPoint(cp);
    testPoint(dp);
  }
}
