A behavioral notion of subtyping

The use of hierarchy is an important component of object-oriented design. Hierarchy allows the use of type families, in which higher level supertypes capture the behavior that all of their subtypes have in common. For this methodology to be effective, it is necessary to have a clear understanding of how subtypes and supertypes are related. This paper takes the position that the relationship should ensure that any property proved about supertype objects also holds for its subtype objects. It presents two ways of defining the subtype relation, each of which meets this criterion, and each of which is easy for programmers to use. The subtype relation is based on the specifications of the sub- and supertypes; the paper presents a way of specifying types that makes it convenient to define the subtype relation. The paper also discusses the ramifications of this notion of subtyping on the design of type families.

[1]  D. Kapur TOWARDS A THEORY FOR ABSTRACT DATA TYPES , 1980 .

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

[3]  Dennis McLeod,et al.  Database description with SDM: a semantic database model , 1981, TODS.

[4]  Jeannette M. Wing A TWO-TIERED APPROACH TO SPECIFYING PROGRAMS , 1983 .

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

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

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

[8]  Barbara Liskov,et al.  Abstraction and Specification in Program Development , 1986 .

[9]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

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

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

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

[13]  Daniel C. Halbert,et al.  Using Types and Inheritance in Object-Oriented Programming , 1987, IEEE Software.

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

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

[16]  Stephen J. Garland,et al.  An Overview of LP, The Larch Power , 1989, RTA.

[17]  Todd Leavens Gary Verifying object-oriented programs that use subtypes , 1989 .

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

[19]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

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

[21]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

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

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

[24]  Pierre America,et al.  A parallel object-oriented language with inheritance and subtyping , 1990, OOPSLA/ECOOP '90.

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

[26]  Greg Nelson,et al.  Systems programming in modula-3 , 1991 .

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

[28]  Gary T. Leavens,et al.  A foundation for the model theory of abstract data types with mutation and aliasing (preliminary ver , 1992 .

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

[30]  Jeannette M. Wing,et al.  Family Values: A Semantic Notion of Subtyping , 1992 .

[31]  Ken Robinson,et al.  Modular Reasoning in an Object-Oriented Refinement Calculus , 1992, MPC.

[32]  Gary T. Leavens,et al.  Subtyping for Mutable Types in Object-Oriented Programming Languages , 1992 .