ACM Transactions on Programming Languages and Systems · 1994 · 1.2K citations · 15 references
ComputingComputer ScienceFormal MethodsProgramming LanguagesSystems ProgrammingData TypesObject-oriented DesignObject-oriented ProgrammingSoftware DesignType CheckingType SystemsInheritance HierarchiesInheritance ModelingObject-oriented ArchitectureObject-oriented Design ModelsSubtypingType Polymorphism
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.
15
Proof of correctness of data representations
C. A. R. Hoare · Acta Informatica · 1972 · 967 citations
Michael Hammer, Dennis Mc Leod · ACM Transactions on Database Systems · 1981 · 754 citations · Full text
A semantics of multiple inheritance
Luca Cardelli · Information and Computation · 1988 · 627 citations
Language Studies, World Languages, Knowledge Representation +7
Distrbution and Abstract Types in Emerald
Andrew P. Black, N.C. Hutchinson, Eric Jul et al. · IEEE Transactions on Software Engineering · 1987 · 409 citations
The Larch Family of Specification Languages
John V. Guttag, J. J. Horning, J.M. Wing · IEEE Software · 1985 · 278 citations