approach to programming is based on an intuitive
correspondence between a software sumulation of a physical system and the
physical system itself. An analogy is drawn between building an algorithmic
model of a physical system from software components and building a mechanical
model of a physical system from concrete objects. By analogy, the software
components are themselves called objects
. In its purest form, the
object-oriented approach recomments that every system be developed according
to this analogy.
The development of a mechanical model includes analysis, design, and imlementation
aspects. Consider, for example, the task of building a mechanical model of
the solar system. The analysis aspect consists i realizing that planets move
along precise orbits, The implementation aspect consists in preparing and
assembling spheres, gears, and springs.
All three aspects of constructing a model involve entities we may call objects,
but with different connotations
In analysis, planets are seen as objects, but orbits clearly are not. In desing,
the intangible orbits are modeled by concrete objects such as orbital tracks and
gears. Entirely new objects, such as power sources, may appear. In implementation,
a spring may be an object that realizes the power source abstraction.
Object-oriented programming similarly involves analysis, design, and
implementation aspects, with concrete objects replaced by software objects.
The term object
in programming refers to a component of a software
model, not to a component of the system being modeled. The proper analogy
is between software objects and objects in a "real model" that one may
imagine building, rather than objects in the "real world". For example,
orbital tracks may be represented as software objects.
This approach to programming is originated with Simula, wich was initially
dedicated to solving simulation (model building) problems. Its main concepts
were further refined in Smalltalk, where the concreteness of objects was
originally intended as a pedagogical tool. Since then, the object oriented
methodology has been exploited in a wide range of applications, including
the construction of user interfaces, operating systems, and databases.
Althrough these applications do not concern physical systems, the object-
oriented methodology has carried over.