Family Values: A Behavioral Notion of Subtyping

and all of CMU-CS-93-149. The document is a union of papers. Keywords: Subtype, object-oriented design, abstraction function, extensible types, mutable types, specifications, semantics 34 pages [FTP: CMU-CS-93-187.ps] 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 paper also discusses the ramifications of this notion of subtyping on the design of type families.

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

[2]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

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

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

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

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

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

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

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

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

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

[12]  H. Lipkin Where is the ?c? , 1978 .

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

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

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

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

[17]  Kim B. Bruce,et al.  An algebraic model of sybtypes in object-oriented languages (draft) , 1986, OOPWORK '86.

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

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

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

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

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

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