Abstract
This paper, which is partly tutorial in nature, summarizes some basic research goals in the study and development of typed object-oriented programming languages. These include both immediate repairs to problems with existing languages and the long-term development of more flexible and expressive, yet type-safe, approaches to program organization and design. We summarize and compare three object models used in the theoretical literature. We also consider approaches to a few technical problems, including changes in the type of a method (member function) from super (base) class to sub (derived) class and the use of types that give information about the implementations as well as the interfaces of objects. Such implementation types seem essential for adequate typing of binary operations on objects, for example.
Supported in part by an NSF Graduate Fellowship and NSF Grant CCR-9303099.
Supported in part by NSF Grant CCR-9303099 and the Wallace F. and Lucille M. Davis Faculty Scholarship.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
M. Abadi. Baby Modula-3 and a theory of objects. Technical Report 95, DEC Systems Research Center, 1993. To appear in J. Functional Prog.
R.M Amadio and L. Cardelli. Subtyping recursive types. In Proc. ACM Symp. Principles of Programming Languages, pages 104–118, 1991.
M. Abadi and L.Cardelli. A theory of primitive objects: untyped and first-order systems. In Proc. Theor. Aspects of Computer Software, Sendai, Japan, 1994. These proceedings.
N. Adams and J. Rees. Object-oriented programming in Scheme. In Proc. ACM Symp. Lisp and Functional Programming Languages, pages 277–288, July 1988.
G.M. Birtwistle, O.-J. Dahl, B. Myhrhaug, and K. Nygaard. Simula Begin. Studentlitteratur, Box 1717, S-222 01 Lund, Sweden; Auerbach, Philadelphia, 1973.
A.H. Borning and D.H. Ingalls. A type declaration and inference system for Smalltalk. In ACM Symp. Principles of Programming Languages, pages 133–141, 1982.
F. Belz and D.C. Luckham. A new approach to prototyping Ada-based hardware/software systems. In Proc. ACM Tri-Ada'90 Conference, December 1990.
K. Bruce and G. Longo. A modest model of records, inheritance and bounded quantification. Information and Computation, 87(1/2):196–240, 1990.
G. Booch. Object-Oriented Design with Applications. Benjamin Cummings, Redwood City, CA, 1991.
K. Bruce. The equivalence of two semantic definitions of inheritance in object-oriented languages. In Proc. Mathematical Foundations of Programming Language Semantics, pages 102–124, Berlin, 1992. Springer LNCS 598.
K. Bruce. Safe type checking in a statically-typed object-oriented programming language. In Proc 20th ACM Symp. Principles of Programming Languages, pages 285–298, 1993.
L. Cardelli. A semantics of multiple inheritance. Information and Computation, 76:138–164, 1988. Special issue devoted to Symp. on Semantics of Data Types, Sophia-Antipolis (France), 1984.
L. Cardelli. Extensible records in a pure calculus of subtyping. Technical Report 81, DEC Systems Research Center, 1992.
Castagna, Ghelli, and Longo. A calculus for overloaded functions with subtyping. In 1992 ACM Conf. Lisp and Functional Programming, pages 182–192, 1992.
W. Cook, W. Hill, and P. Canning. Inheritance is not subtyping. In Proc. 17th ACM Symp. on Principles of Programming Languages, pages 125–135, January 1990.
W. Cook. A self-ish model of inheritance. Manuscript, 1987.
W.R. Cook. A Denotational Semantics of Inheritance. PhD thesis, Brown University, 1989.
W.R. Cook. A proposal for making Eiffel type-safe. In European Conf. on Object-Oriented Programming, pages 57–72, 1989.
W.R. Cook. Interfaces and specifications for the Smalltalk-80 collection classes. In ACM Conf. Object-oriented Programming: Systems, Languages and Applications, pages 1–15, 1992.
C. Chambers and D. Ungar. Customization: Optimizing compiler technology for Self, a dynamically-typed object-oriented programming language. In SIGPLAN '89 Conf. on Programming Language Design and Implementation, pages 146–160, 1989.
Pavel Curtis. Constrained quantification in polymorphic type analysis. Technical report, Xerox PARC technical report CSL-90-1, February 1990. Cornell University PhD Thesis.
L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, 1985.
E.W. Dijkstra. Notes on structured programming. In O.J. Dahl, E.W. Dijkstra, and C.A.R. Hoare, editors, Structured Programming. Academic Press, 1972.
M. Ellis and B. Stroustrop. The Annotated C ++ Reference Manual. Addison-Wesley, 1990.
J.-Y. Girard. Une extension de l'interpretation de Gödel à l'analyse, et son application à l'élimination des coupures dans l'analyse et la théorie des types. In J.E. Fenstad, editor, 2nd Scandinavian Logic Symposium, pages 63–92. North-Holland, Amsterdam, 1971.
J.-Y. Girard. Interpretation fonctionelle et elimination des coupures de l'arithmetique d'ordre superieur. These D'Etat, Universite Paris VII, 1972.
C.A. Gunter and J.C. Mitchell, editors. Theoretical aspects of object-oriented programming. MIT Press, Cambridge, MA, 1994.
Dinesh Katiyar, David Luckham, and John Mitchell. A type system for prototyping languages. In Proc. 21-st ACM Symp. on Principles of Programming Languages, 1994.
Dinesh Katiyar, David Luckham, S. Meldal, and John Mitchell. Polymorphism and subtyping in interfaces. In ACM Workshop on Interface Definition Languages, 1994.
B. Liskov et al. CLU Reference Manual. Springer LNCS 114, Berlin, 1981.
H. Lieberman. Using prototypical objects to implement shared behavior in object-oriented systems. In Proc. ACM Symp. on Object-Oriented Programming: Systems, Languages, and Applications, pages 214–223, October 1986.
B. Liskov, A. Snyder, R. Atkinson, and C. Schaffert. Abstraction mechanisms in clu. Comm. ACM, 20:564–576, 1977.
B. Meyer. Eiffel: The Language. Prentice-Hall, 1992.
J.C. Mitchell, F. Honsell, and K. Fisher. A lambda calculus of objects and method specialization. In Proc. IEEE Symp. on Logic in Computer Science, pages 26–38, 1993.
R. Milner. The Standard ML core language. Polymorphism, 2(2), 1985. 28 pages. An earlier version appeared in Proc. 1984 ACM Symp. on Lisp and Functional Programming.
J.C. Mitchell. Toward a typed foundation for method specialization and inheritance. In Proc. 17th ACM Symp. on Principles of Programming Languages, pages 109–124, January 1990.
J.C. Mitchell, S. Meldal, and N. Madhav. An extension of Standard ML modules with subtyping and inheritance. In Proc. 18th ACM Symp. on Principles of Programming Languages, pages 270–278, January 1991.
J.H. Morris. Types are not sets. In 1st ACM Symp. on Principles of Programming Languages, pages 120–124, 1973.
J.C. Mitchell and G.D. Plotkin. Abstract types have existential types. ACM Trans. on Programming Languages and Systems, 10(3):470–502, 1988. Preliminary version appeared in Proc. 12th ACM Symp. on Principles of Programming Languages, 1985.
Robin Milner and Mads Tofte. Commentary on Standard ML. MIT Press, 1991.
Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, 1990.
Benjamin C. Pierce. Mutable objects. Draft report; available electronically, June 1993.
B. Pierce and D.N. Turner. Object-oriented programming without recursive types. In Proc 20th ACM Symp. Principles of Programming Languages, pages 299–312, 1993.
Benjamin C. Pierce and David N. Turner. Simple type-theoretic foundations for object-oriented programming. Journal of Functional Programming, 1993. To appear; a preliminary version appeared in Principles of Programming Languages, 1993, and as University of Edinburgh technical report ECS-LFCS-92-225, under the title “Object-Oriented Programming Without Recursive Types”.
Benjamin C. Pierce and David N. Turner. Statically typed friendly functions via partially abstract types. Technical Report ECS-LFCS-93-256, University of Edinburgh, LFCS, April 1993. Also available as INRIA-Rocquencourt Rapport de Recherche No. 1899.
J. Rees and N. Adams. T, a dialect of Lisp, or lambda: the ultimate software tool. In Proc. ACM Symp. Lisp and Functional Programming Languages, pages 114–122, August 1982.
J.C. Reynolds. Types, abstraction, and parametric polymorphism. In Information Processing '83, pages 513–523. North-Holland, Amsterdam, 1983.
R. Sethi. Programming Languages: Concepts and Constructs. Addison-Wesley, 1989.
A. Snyder. Encapsulation and inheritance in object-oriented programming languages. In Proc. ACM Symp. on Object-Oriented Programming Systems, Languages, and Applications, pages 38–46, October 1986.
G.L. Steele. Common Lisp: The language. Digital Press, 1984.
L.A. Stein. Delegation is inheritance. In Proc. ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 138–146, 1987.
B. Stroustrop. The C++ Programming Language. Addison-Wesley, 1986.
J.D. Ulmman. Elements of ML programming. Prentice Hall, 1994.
US Dept. of Defense. Reference Manual for the Ada Programming Language. GPO 008-000-00354-8, 1980.
D. Ungar and R.B. Smith. Self: The power of simplicity. In Proc. ACM Symp. on Object-Oriented Programming: Systems, Languages, and Applications, pages 227–241, 1987.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1994 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Fisher, K., Mitchell, J.C. (1994). Notes on typed object-oriented programming. In: Hagiya, M., Mitchell, J.C. (eds) Theoretical Aspects of Computer Software. TACS 1994. Lecture Notes in Computer Science, vol 789. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57887-0_128
Download citation
DOI: https://doi.org/10.1007/3-540-57887-0_128
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57887-1
Online ISBN: 978-3-540-48383-0
eBook Packages: Springer Book Archive