Copyright ACM, 2000

C. J. Harrison

Department of Computation

Majid Naeem

Department of Computation



Object-orientation, subtyping, inheritance, view extension, persistent object store.


POOL is an object-oriented class-based language whose simple Pascal-like syntax, combined with static type-checking, facilitates the rapid construction of reliable reusable software components. Key features of the language include its subclass-as-subtype approach to inheritance, its view model, and its underlying strongly-typed persistent object store. POOL is designed to support the object-oriented paradigm without sacrificing the computational performance of traditional procedural languages, and has evolved through prototyping software solutions to problems drawn from a variety of application domains.


The advent of new technologies together with the development of new application areas has led to proposals for different linguistic and architectural models for computations. Object-oriented languages provide support for reusability and modularity via the notions of subclassing and subtyping. In object-oriented languages inheritance produces subclasses for code reuse, whereas subtyping supports reuse of a context. Since subtype and subclass hierarchies are closely related, the provision of a class hierarchy mechanism capable of describing both subtyping and subclasses results in a significant conceptual simplification. In POOL, inheritance enables both code reuse and also provides a corresponding subtyping mechanism.

Object-oriented languages provide support for describing composite and other user-defined types which in turn depend upon built-in types. A built-in or primitive type is typically composed of a data structure, a set of operations, and a view or concrete external representation for the data structure. User-defined types differ from primitive types in that they are typically composed of a data structure and a set of operations only, i.e. there is no general-purpose mechanism available to support such definitions and they must be implemented via changes to the language processor. POOL provides a view extension to its type system which supports a general-purpose mechanism for describing concrete representations for values of user-defined types.

In most programs and larger-scale software systems a significant amount of "code" is concerned solely with transferring data between primary memory and some form of secondary storage[9]. In POOL, persistence provides an abstraction mechanism for managing all of the activities related to object storage. This abstraction mechanism, when combined with the object-oriented paradigm, provides the basis for a flexible application-independent programming environment.


In POOL, a program comprises one or more user-defined types which may appear in any declaration order. A type specifies the structure of a set of values, together with the valid operations, and one or more views each of which may be applied to those values. A view is an integral part of a type definition and can be used directly to describe representations for values of a type for both input and output operations.

In POOL’s type system, types are r

Copyright 2000 ACM

Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and or fee.
SAC 2000 March 19-21 Como, Italy
(c) 2000 ACM 1-58113-239-5/00/003>...>$5.00