import java.awt.geom.Point2D; import java.util.Observable; public class ObservableVehicle2 extends Observable implements Vehicle { private VehicleImpl v; private ObservableVehicle2(double maximumSpeed) { v = new VehicleImpl(maximumSpeed); } @Override public double speed() { return v.speed(); } @Override public double direction() { return v.direction(); } @Override public Point2D position() { return v.position(); } @Override public void go(double time) { double direction = v.direction(); v.go(time); setChanged(); try { notifyObservers(); } catch (Exception e) { v.setDirection(direction + Math.PI); v.go(time); v.setDirection(direction); } } }