1.3 What Is an Object?
One of the fundamental ideas in software component engineering is the use of objects. But just what is an object? There doesn't seem to be a universally accepted idea as to what an object really is. The view that computer scientist Grady Booch (1991) takes is that an object is defined primarily by three characteristics: its state, its behavior, and its identity. The fundamental unit of analysis, in most cognitive theories, is the information-processing component. A component is an elementary information process that operates on the internal representation of objects or symbols (Newell & Simon, 1972; Sternberg, 1977). If we look at the way these components work, they may translate a sensory input into a conceptual representation, transform one conceptual representation into another, or translate a conceptual representation into a motor output. The object-oriented programming (OOP) techniques for software have been around now for approximately a quarter of a century, but the phenomenon is not new. Ancient philosophers, such as Plato and Aristotle, as well as modern philosophers like Immanuel Kant have been involved in explaining the meaning of existence in general and determining the essential characteristics of concepts and objects (Rand, 1990). Minsky (1986) developed a theory of objects whose behavior closely resembles processes that take place in the human mind. Novak and Gowin (1984) showed how objects play an important role in education and cognitive science. Their approach is one in which concepts are discovered by finding patterns in objects designated by some name. But wait, we were talking about objects and now we are talking about concepts. That is because concepts reflect the way we divide the world into classes, and much of what we learn, communicate, and reason about involves relations among these classes. Concepts are mental representations of classes, and their salient function is to promote cognitive economy. A class then can be seen as a template for generating objects with similar structure and behavior.
The Object Management Group (OMG) defines a class as follows:
A class is an implementation that can be instantiated to create multiple objects with the same behavior. An object is an instance of a class.
From the software point of view, by partitioning the software into classes, we decrease the amount of information we must perceive, learn, remember, communicate, and reason about.