Abstract Object Types: A Temporal Perspective

The notion of abstract object type (AOT) tends to overlay the already classical concept of abstract data type (ADT) in several fields of application. Objects, although much more complex than data, have the advantage of dealing with states and processes. For that reason, they become useful, for instance, in the design of database applications and in software engineering. The difficulty lies in finding a suitable formalism for the abstract definition of objects, at least as effective as the equational formalism has been in the definition of abstract data types. The purpose of this paper is to present and discuss the main features of such a formalism. Concepts, tools and techniques are provided for the abstract definition of objects. A primitive language is presented allowing structured and rather independent definitions of object types. Each object is described as a temporal entity that evolves because of the events that happen during its life. The interaction between objects is reduced to event sharing. Both liveness and safety requirements can be stated and verified. Two case studies are presented for illustrating every aspect of the approach: the stack example which is very popular in the ADT area, thus allowing the comparison between the concepts of ADT and AOT, and the well known example of the eating philosophers which allows the discussion of the dynamic aspects.