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.
|
1295
|
The C++ Programming Language
– Stroustrup
- 1991
|
|
1208
|
Object-Oriented Software Construction
– Meyer
- 1988
|
|
467
|
A semantics of multiple inheritance
– Cardelli
- 1984
|
|
419
|
Programming from Specifications
– Morgan
- 1994
|
|
333
|
Proofs of correctness of data representations
– Hoare
|
|
181
|
Distribution and abstract types in emerald
– Black, Hutchinson, et al.
- 1987
|
|
148
|
Systems Programming with Modula-3
– NELSON, Ed
- 1991
|
|
131
|
Designing an object-oriented programming language with behavioural subtyping
– America
- 1990
|
|
129
|
A Guide to LP: the Larch Prover
– Garland, Guttag
- 1991
|
|
112
|
A Parallel Object-Oriented Language with Inheritance and
– America
- 1990
|
|
104
|
An Introduction to Trellis/Owl
– Schaffert, Cooper, et al.
- 1986
|
|
95
|
Unifying functional, object-oriented and relational programming, with logical semantics
– Goguen, Meseguer
- 1987
|
|
89
|
The Larch family of specification languages
– Guttag, Horning, et al.
- 1985
|
|
77
|
Semantic Database Modelling
– King
- 1987
|
|
59
|
Development and implementation of an objectoriented DBMS
– Maier, Stein
- 1993
|
|
56
|
CLU Reference Manual
– Liskov
- 1979
|
|
54
|
A two-tiered approach to specifying programs
– Wing
- 1983
|
|
53
|
Reasoning about object-oriented programs that use subtypes (extended abstract
– Leavens, Weihl
- 1990
|
|
31
|
An algebraic model of subtype and inheritance
– Bruce, Wegner
- 1990
|
|
19
|
Using types and inheritance in object-oriented programming
– Halbert, O'Brien
- 1987
|
|
17
|
Towards a Theory of Abstract Data Types
– Kapur
- 1980
|
|
13
|
An Object-Oriented Refinement Calculus with Modular Reasoning
– Utting
- 1992
|
|
12
|
Inheritance in object oriented Z
– Cusack
- 1991
|
|
12
|
Simula: Common base language
– Dahl, Myhrhaug, et al.
- 1970
|
|
10
|
Preliminary design of the thor object-oriented database system
– Liskov
- 1992
|
|
9
|
Subtyping among mutable types in object-oriented programming languages
– Dhara
- 1992
|
|
9
|
Subtyping for mutable types in object-oriented programming languages
– Dhara, Leavens
- 1992
|
|
8
|
Object-Z: An object oriented extension to Z
– Carrington, Duke, et al.
- 1989
|
|
8
|
Ina Jo specification language reference manual
– Scheid, Holtsberg
- 1992
|
|
7
|
Family values: A semantic notion of subtyping
– Liskov, Wing
- 1992
|
|
5
|
Object-oriented specification in LOTOS and Z (or my cat really is objectoriented!). In: de Bakker JW, de Roever WP, Rozenberg G (eds) Foundations of object-oriented languages
– Cusack, Lai
- 1991
|
|
5
|
Abstraction and Specification in Program Design
– Liskov, Guttag
- 1985
|
|
4
|
Verifying object-oriented prograsm that use subtypes
– Leavens
- 1989
|
|
4
|
Semantics and usage of defaults in specifications
– Lipeck
- 1992
|
|
3
|
A history model for classes in object-Z
– Duke, Duke
- 1990
|
|
3
|
A foundation for the model theory of abstract data types with mutation and aliasing (preliminary version
– Leavens, Dhara
- 1992
|
|
3
|
revised April
– Received
- 1995
|
|
1
|
A Behavioral Notion of Subtyping \Delta 31
– Leavens
- 1991
|
|
1
|
Designing an object-oriented programming language with behaviouraf subtyping
– unknown authors
- 1991
|
|
1
|
An algebraic model of subtype and inheritance
– BRLTCE, EGNER, et al.
- 1990
|
|
1
|
A semantics of multiple inheritance. lrzjomnafton and C’om,oufutlon
– Addison-W’esley, CARDELLI, et al.
- 1988
|
|
1
|
Inheritance in object oriented Z
– CUSAC1
- 1991
|
|
1
|
Object-oriented specification in LOTOS and Z, or my cat really is object-oriented
– CUSACX, hI
- 1991
|
|
1
|
Subt yping among mutable types in object-oriented programming languages, Iowa State ClmveIslty
– DHARA
- 1992
|
|
1
|
Subtyping for mutable types in object-oriented PI ogl amming languages
– DHARA, LEA\JENS
- 1992
|
|
1
|
The Larch family of specification lan~ua~?s
– HORNING
- 1985
|
|
1
|
Towards a theory of abstract data types
– APUR
- 1980
|
|
1
|
Verifying object-oriented prograsm that use subtypes
– unknown authors
- 1989
|
|
1
|
on Programmmg Languages and Systems, Vol 16, No 6
– LEAVENS
- 1994
|
|
1
|
Semantics and usage of defaults in specifications
– LIPEC
- 1992
|