Expressing computations in terms of objects reduces the gap between concept and program. Malleability Good programs evolve.
Evolution is easiest when the modifications are local.
Extensibility Using inheritance, new objects and their behaviors can be defined as incremental modifications and extensions of existing objects. Abstraction Using polymorphism, similarities among objects can be expressed in the program, allowing us to write code in terms of the similarities without regard to the differences. Rather than a programming viewpoint, object-orientation is a view of a project in terms of separate objects. Thus, the considerations that pertain to the project are put into the conceptual boundaries of objects. The room where I began to write the present document contained books, cabinets, chairs, columns, signs, copiers, telephones, calendars, card files, carousels, doors, carts, outlets, posters, computers, dictionaries, highlighters, and other items.