Family Values: A Semantic 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 paper also discusses the ramifications of this notion on the design of type families and on the contents of type specifications and presents a notation for specifying types formally.

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

[2]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[3]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

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

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

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

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

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

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

[10]  Martín Abadi,et al.  The Existence of Refinement Mappings , 1988, LICS.

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

[12]  Nancy A. Lynch,et al.  Hierarchical correctness proofs for distributed algorithms , 1987, PODC '87.

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

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

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