An object is a unit of structure and behavior; it has an identity which persists through change; objects communicate with each other; they are classified by object types, collected into object classes, related by inheritance, and composed to form complex objects. In the first part of the paper, this rich world of concepts and constructions is explained in an informal but systematic way, independent of any language or system. In the second part, features of an object specification language are outline which incorporate most of these concepts and constructions. High~level system specification languages and design methodologies are evolving which are based on object~oriented concepts and techI1iques. (Ve91) gives an overview of recent work in this area. We are cooperating in the ESPRIT BRA Working Group IS-CORE where a graphical language (SGCS91, SRGS91, SSGRG91, SGGSR91) and a textual counterpart (JSS90, JHSS91, JSS91, JSHS91, SJ91) for designing, specifying and implementing object communities are being developed. But what precisely is an object? Some common sense is given by Wegner (We89) who says: An object has a set of operations and a local shared state (data) that remembers the effect of operations. The value that an operation on an object returns can depend on the object's state as well as the operation's arguments. The state of an object serves as a local memory that is shared by operations on it. In particular, other previously executed operations can affect the value that a given operation returns. An object can learn from experience, storing the cumulative effect of its experience ~ its invocation history ~ in its state. Thus, an object has an internal state and a certain behavior reflected by its operations: it is a unit of structure and behavior - and it has an identity which persists through change.
['Hans-Dieter Ehrich', 'Gunter Saake', 'Amílcar Sernadas']
Concepts of Object-Orientation