A behavioral notion of subtyping
- 1 November 1994
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 16 (6), 1811-1841
- https://doi.org/10.1145/197320.197383
Abstract
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.Keywords
This publication has 12 references indexed in Scilit:
- Modular specification and verification of object-oriented programsIEEE Software, 1991
- Object-oriented specification in LOTOS and Z, or my cat really is object-oriented!Published by Springer Science and Business Media LLC ,1991
- A parallel object-oriented language with inheritance and subtypingACM SIGPLAN Notices, 1990
- Verifying Object-Oriented Programs That Use SubtypesPublished by Defense Technical Information Center (DTIC) ,1989
- An overview of LP, the Larch ProverLecture Notes in Computer Science, 1989
- A semantics of multiple inheritanceInformation and Computation, 1988
- Using Types and Inheritance in Object-Oriented ProgrammingIEEE Software, 1987
- Distrbution and Abstract Types in EmeraldIEEE Transactions on Software Engineering, 1987
- The Larch Family of Specification LanguagesIEEE Software, 1985
- Proof of correctness of data representationsActa Informatica, 1972