diff --git a/src/main/org/insa/graph/Arc.java b/src/main/org/insa/graph/Arc.java index 5eed3fe..bc4f283 100644 --- a/src/main/org/insa/graph/Arc.java +++ b/src/main/org/insa/graph/Arc.java @@ -16,35 +16,51 @@ import java.util.List; * @see ArcBackward * */ -public interface Arc { +public abstract class Arc { /** * @return Origin node of this arc. */ - public Node getOrigin(); + public abstract Node getOrigin(); /** * @return Destination node of this arc. */ - public Node getDestination(); + public abstract Node getDestination(); /** * @return Length of this arc, in meters. */ - public float getLength(); + public abstract double getLength(); + + /** + * Compute the time required to travel this arc if moving at the given speed. + * + * @param speed Speed to compute the travel time. + * + * @return Time (in seconds) required to travel this arc at the given speed (in + * kilometers-per-hour). + */ + public double getTravelTime(double speed) { + return getLength() * 3600.0 / (speed * 1000.0); + } /** * @return Minimum time required to travel this arc, in seconds. + * + * @see Arc#getTravelTime(double) */ - public double getMinimumTravelTime(); + public double getMinimumTravelTime() { + return getTravelTime(getRoadInformation().getMaximumSpeed()); + } /** * @return Road information for this arc. */ - public RoadInformation getRoadInformation(); + public abstract RoadInformation getRoadInformation(); /** * @return Points representing segments of this arc. */ - public List getPoints(); + public abstract List getPoints(); } diff --git a/src/main/org/insa/graph/ArcBackward.java b/src/main/org/insa/graph/ArcBackward.java index 0c87bf0..6ae21bd 100644 --- a/src/main/org/insa/graph/ArcBackward.java +++ b/src/main/org/insa/graph/ArcBackward.java @@ -10,7 +10,7 @@ import java.util.List; * the original arc. * */ -class ArcBackward implements Arc { +class ArcBackward extends Arc { // Original arc private final ArcForward originalArc; @@ -37,15 +37,10 @@ class ArcBackward implements Arc { } @Override - public float getLength() { + public double getLength() { return this.originalArc.getLength(); } - @Override - public double getMinimumTravelTime() { - return this.originalArc.getMinimumTravelTime(); - } - @Override public RoadInformation getRoadInformation() { return this.originalArc.getRoadInformation(); diff --git a/src/main/org/insa/graph/ArcForward.java b/src/main/org/insa/graph/ArcForward.java index 19d9b79..13ff2af 100644 --- a/src/main/org/insa/graph/ArcForward.java +++ b/src/main/org/insa/graph/ArcForward.java @@ -9,7 +9,7 @@ import java.util.List; * arc implementation that stores data relative to the arc. * */ -class ArcForward implements Arc { +class ArcForward extends Arc { // Destination node. private final Node origin, destination; @@ -52,15 +52,10 @@ class ArcForward implements Arc { } @Override - public float getLength() { + public double getLength() { return length; } - @Override - public double getMinimumTravelTime() { - return getLength() * 3600.0 / (info.getMaximumSpeed() * 1000.0); - } - @Override public RoadInformation getRoadInformation() { return info;