// Example 55 from page 41 of Java Precisely second edition (The MIT Press 2005) // Author: Peter Sestoft (sestoft@itu.dk) import java.util.ArrayList; class SPoint { static ArrayList allpoints = new ArrayList(); int x, y; SPoint(int x, int y) { allpoints.add(this); this.x = x; this.y = y; } void move(int dx, int dy) { x += dx; y += dy; } public String toString() { return "(" + x + ", " + y + ")"; } int getIndex() { return allpoints.indexOf(this); } static int getSize() { return allpoints.size(); } static SPoint getPoint(int i) { return allpoints.get(i); } }