An interpretation of objects and object types

We present an interpretation of typed object-oriented concepts in terms of well-understood, purely procedural concepts. More precisely, we give a compositional subtype-preserving translation of a basic object calculus supporting method invocation, functional method update, and subtyping, into the polymorphic ¿-calculus with recursive types and subtyping. The translation techniques apply also to an imperative version of the object calculus which includes in-place method update and object cloning. Finally, the translation easily extends to "Self types" and other interesting object-oriented constructs.

[1]  Luca Cardelli,et al.  A language with distributed scope , 1995, POPL '95.

[2]  Benjamin C. Pierce,et al.  Simple type-theoretic foundations for object-oriented programming , 1994, Journal of Functional Programming.

[3]  Didier Rémy,et al.  Programming Objects with ML-ART, an Extension to ML with Abstract and Record Types , 1994, TACS.

[4]  Martin Hofmann,et al.  A unifying type-theoretic framework for objects , 1994, Journal of Functional Programming.

[5]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[6]  William R. Cook,et al.  A denotational semantics of inheritance , 1989 .

[7]  Martín Abadi,et al.  A Theory of Primitive Objects - Untyped and First-Order Systems , 1994, TACS.

[8]  Samuel N. Kamin Inheritance in smalltalk-80: a denotational definition , 1988, POPL '88.

[9]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

[10]  Scott F. Smith,et al.  An interpretation of typed OOP in a language with state , 1995, LISP Symb. Comput..

[11]  Martín Abadi,et al.  An Imperative Object Calculus , 1995, TAPSOFT.

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

[13]  Brad A. Myers,et al.  Declarative programming in a prototype-instance system: object-oriented programming without writing methods , 1992, OOPSLA '92.

[14]  Martín Abadi,et al.  An imperative object calculus: Basic typing and soundness , 1995 .

[15]  Martín Abadi,et al.  A semantics of object types , 1994, Proceedings Ninth Annual IEEE Symposium on Logic in Computer Science.

[16]  Brad A. Myers,et al.  Declarative Programming in a Prototype-Instance System: Object-Oriented Programming Without Writing Methods , 1992, OOPSLA.

[17]  Mogens Nielsen,et al.  TAPSOFT '95: Theory and Practice of Software Development , 1995, Lecture Notes in Computer Science.

[18]  Birger Andersen,et al.  Ellie: a general, fine-grained, first-class, object-based language , 1992 .