Specifications and Their Use in Defining Subtypes

Specifications are useful because they allow reasoning about objects without concern for their implementations. Type hierarchies are useful because they allow types that share common properties to be designed as a family. This paper is concerned with the interaction between specifications and type hierarchies. We present a way of specifying types, and show how some extra information, in addition to specifications of the objects' methods, is needed to support reasoning. We also provide a new way of showing that one type is a subtype of another. Our technique makes use of information in the types' specifications and works even in a very general computational environment in which possibly concurrent users share mutable objects.

[1]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[2]  David A. Carrington,et al.  Object-Z: An Object-Oriented Extension to Z , 1989, FORTE.

[3]  Elspeth Cusack,et al.  Inheritance in Object-Oriented Z , 1991, ECOOP.

[4]  Gary T. Leavens,et al.  Reasoning about object-oriented programs that use subtypes , 1990, OOPSLA/ECOOP '90.

[5]  Elspeth Cusack,et al.  Object-Oriented Specification on LOTOS and Z, or My Cat Really is Object-Oriented! , 1990, REX Workshop.

[6]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPSLA 1986.

[7]  James J. Horning,et al.  The Larch Family of Specification Languages , 1985, IEEE Software.

[8]  David Maier,et al.  Development and Implementation of an Object-Oriented DBMS , 1987, Research Directions in Object-Oriented Programming.

[9]  Craig Schaffert,et al.  CLU Reference Manual , 1984, Lecture Notes in Computer Science.

[10]  Kim B. Bruce,et al.  An Algebraic Model of Subtype and Inheritance , 1990, DBPL.

[11]  Pierre America,et al.  Designing an Object-Oriented Programming Language with Behavioural Subtyping , 1990, REX Workshop.

[12]  José Meseguer,et al.  An Introduction to OBJ 3 , 1988, CTRS.

[13]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[14]  Larry Carter,et al.  Distrbution and Abstract Types in Emerald , 1987, IEEE Transactions on Software Engineering.

[15]  Jeannette M. Wing,et al.  A New Definition of the Subtype Relation , 1993, ECOOP.

[16]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[17]  José Meseguer,et al.  Unifying Functional, Object-Oriented and Relational Programming with Logical Semantics , 1987, Research Directions in Object-Oriented Programming.

[18]  Gary T. Leavens Modular specification and verification of object-oriented programs , 1991, IEEE Software.

[19]  Barry Mark Utting An object-oriented refinement calculus with modular reasoning , 1992 .