A basic tenet of the structured programming approach is that programs should be constructed in a top-down manner. The top-down approach, also called stepwise refinement, suggests developing algorithms in a series of steps that move from a very general statement of the desired behavior to an increasingly specific view of the task’s implementation details. The top-down approach also finds application in 00P circles, but in a slightly different guise. In developing inheritance hierarchies, object-oriented developers factor out the most rudimentary shared attributes and behaviors and ascribe them to a root superclass, which may be considered the ultimate superclass for the class hierarchy. This ultimate superclass provides the most abstract interpretation of what it means for an object to be of a certain category. In fact most object-oriented languages allow programmers to define such superclasses explicitly as being abstract. One cannot create specific objects from abstract classes, because they are too vague to serve as a blueprint for something tangible. For example, consider the previous example involving the FordEscort class. Its superclass might be the more abstrat