14.4.3 The position implementation file

The position implementation file is simply a collection of the source records that we developed earlier for creating and saying absolute and relative positions.

The position implementation file: position.dylan.

Module: position-implementation
define abstract class <position> (<object>)
end class <position>; 
define class <absolute-position> (<position>)
  slot latitude :: <latitude>, required-init-keyword: latitude:;
  slot longitude :: <longitude>, required-init-keyword: longitude:;
end class <absolute-position>; 
define method say (position :: <absolute-position>) => ()
  say(position.latitude);
  say(position.longitude);
end method say; 
define class <relative-position> (<position>)
  // Distance is in miles
  slot distance :: <single-float>, required-init-keyword: distance:;
  // Angle is in degrees
  slot angle :: <angle>, required-init-keyword: angle:;
end class <relative-position>; 
define method say (position :: <relative-position>) => ()
  format-out("%s miles away at heading ", position.distance);
  say(position.angle);
end method say;