public class Line { private EndPoint p1, p2; private class EndPoint extends Point { public void move(int dx, int dy){ p1.singleMove(dx,dy); p2.singleMove(dx,dy); } private void singleMove(int dx,int dy){ super.move(dx,dy); } private EndPoint(Point p){ super(p.getX(),p.getY()); } public String toString(){ return "End"+super.toString(); } } public Line(Point start, Point end){ p1 = new EndPoint(start); p2 = new EndPoint(end); } public Point getStart(){ return p1; } public Point getEnd(){ return p2; } public void move(int dx, int dy){ p1.move(dx,dy); } public String toString(){ return "Line("+p1.toString()+","+p2.toString()+")"; } }