K. Fisher et Jc. Mitchell, ON THE RELATIONSHIP BETWEEN CLASSES, OBJECTS, AND DATA ABSTRACTION, Theory and practice of object systems, 4(1), 1998, pp. 3-25
While most object-oriented programming is done in class-based language
s, the trend in theoretical study has been to develop formal systems t
hat are object-based, without classes and often without explicit inher
itance mechanisms. This paper studies the correspondence between class
constructs of the form found in C++, Eiffel, and Java and object prim
itives of the form used in recent type-theoretic studies. One insight
is that classes require both an extensible aggregate, to serve as the
basis for inheritance, and a non-extensible form of object to support
subtyping; typed object calculi without extensible objects or extensib
le records do not seem adequate for conventional class-based programmi
ng. We develop our analysis by comparing three approaches to class-bas
ed programming, the first using records of object components called ''
premethods'' and the latter two using an extensible form of object cal
led a ''prototype.'' White the first approach is simplest, using fewer
primitive operations on objects, it does not seem to accurately provi
de several features of conventional class-based languages. In the latt
er two approaches, we give more comprehensive treatments of classes by
combining prototypes with standard abstraction mechanisms. AII three
treatments of classes are based on typed translations into provably so
und object calculi. (C) 1998 John Wiley & Sons, Inc.