The properties that confer this broad range of applicability to the object-
oriented approach can be summarized as follows.
* The analogy between software models and physical models.
* The resilience of the software models.
* The reusability of the components of the software models.
The first point pertains to analysis. In the object-oriented analysis process,
the analogy with a physical model can be useful in the development of a software
model. Much efford has been invested in systematizing this analysis process.
The second point pertains to design. Resilience of design in the face of changes
is a consequence of building abstractions. Objects form natural data abstraction
boundaries and help focus a design on system structure instead of algorithms.
Algorithms are factored into methods
that are attached to objects, making
the objects behaviorally autonomous. Because of object abstractions, a design
can evolve with fewer pervasive reorganizations.
The third point pertains to implementation. Objects are naturally organized into
taxonomies during analysis, design, and implementation. This hierarchical
organization encourages the reuse of methos and data that are located higher
in the hierarchy.
Object-oriented programming toes not have an exclusive claim to all these good
properties. Systems may be modeled by other paradigms, including ones based on
traditional notions of algorithms and data structures, which were not well
developed when Simula was invented. Resilience can be achieved just as well by
orgaizing programs around abstract data types, independenly of object orientation.
Reusability can be achieved by modularization and parametrization. Hence is
possible that, as the availability and awareness of other techniques grow,
the appeal of objects will fade away.
Still, the object oriented approach has proven uniquely successful. It manages
to integrate good analysis, design, and implementation techniques into a
relatively intuitive and uniform framework. Moreover, some of its fundamental
features are not easily explained as the union of other well-understood notions;
witness the relative scarcity of formal techniques for analyzing object-oriented
programs."A Theory of objects
, by Luca Cardelli