Object-oriented programming languages, such as Smalltalk, encourage
you to design programs around classes, such as the Integer
class, along with classes that you define yourself. Typically, you define
classes and class hierarchies that reflect important general properties of
individual nails, horseshoes, horses, kingdoms, or whatever else happens to
come up naturally in your application.