class Automobile. Class Automobile is far too vague to create a definitive representation of it. However, FordEscort, which itself is (in other words, inherits data and methods from) an automobile, has a realizable blueprint from which one can create specific objects. Similarly, depending on the level of detail being targeted in developing the model, class Generator may be too vague to create an object from it, because it is unclear how a specific instance of Generator will produce electricity. Generator is thus an abstract class. More specific descendants of Generator define how they produce electricity and thus allow the programmer to create objects from them. This practice of creating a design from general definitions of common attributes and behaviors to more specific classes that add characteristics and specific implementations is called data abstraction. Data abstraction helps the developer categorize components of systems according to their form and function and thus unveils a composite picture of how the different actors in a system interrelate. Moreover, data abstraction helps a system take more complete advantage of one of the most powerful features of object-oriented design polymorphism.