// The root of the "object hierarchy" for Features.
// (Notice this is an ABSTRACT CLASS, which means instances
// of it are never created. Instead, you make instances of
// of its subclasses.)
//
// Here's a partial sketch of the hierarchy I used:
//
//    abstract class Feature
//               class ObjectType_Feature
//               <... you should add some more here>

abstract class Feature
{ int sensorDirection;
  
  Feature(int direction)
  { // Features are associated with sensor directions.
    sensorDirection = direction;
  }

  int getSensorDirection()
  {
    return sensorDirection;
  }

  // Need to implement an equality test for each specialized feature.
  abstract boolean equals(Feature otherFeature);
}