001    package ps6;
002    import java.util.Iterator;
003    
004    /**
005     *   A Directions is a description of how to travel from one Address to
006     *   another.
007     *   @specfield start      : Address // starting point
008     *   @specfield end        : Address // destination
009     *   @specfield length     : double  // traveling distance, in miles (not rounded)
010     *   @specfield directions : sequence[String] //
011     *   directions for traveling from start to end.  Each
012     *   String in the sequence must be one line of directions, in the format
013     *   specified in <a href="../../psets/ps6/ps6.html#dirs-format">PS6
014     *   text based interface</a>, <b>excluding</b> the first line which
015     *   states where you start <b>and</b> the final line which gives the length/time
016     *   of the trip.  The strings <b>must not</b> include newlines at their
017     *   ends.  The order of the Strings in the sequence must correspond to the order
018     *   of the lines in the directions from start to end.
019     */
020    public interface Directions extends Iterable<String> {
021    
022        // a Directions is the result of a query to a DirectionsFinder
023    
024        /** @return this.length. */
025        public double getLength ();
026    
027        /** @return an Iterator of Strings over this.directions */
028        public Iterator<String> iterator();
029    
030        /** @return this.start */
031        public Address getStart ();
032    
033        /** @return this.end */
034        public Address getEnd ();
035    }