Skip to main content

Notes on typed object-oriented programming

  • Conference paper
  • First Online:
Theoretical Aspects of Computer Software (TACS 1994)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 789))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. M. Abadi. Baby Modula-3 and a theory of objects. Technical Report 95, DEC Systems Research Center, 1993. To appear in J. Functional Prog.

    Google Scholar 

  2. R.M Amadio and L. Cardelli. Subtyping recursive types. In Proc. ACM Symp. Principles of Programming Languages, pages 104–118, 1991.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. N. Adams and J. Rees. Object-oriented programming in Scheme. In Proc. ACM Symp. Lisp and Functional Programming Languages, pages 277–288, July 1988.

    Google Scholar 

  5. G.M. Birtwistle, O.-J. Dahl, B. Myhrhaug, and K. Nygaard. Simula Begin. Studentlitteratur, Box 1717, S-222 01 Lund, Sweden; Auerbach, Philadelphia, 1973.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. K. Bruce and G. Longo. A modest model of records, inheritance and bounded quantification. Information and Computation, 87(1/2):196–240, 1990.

    Google Scholar 

  9. G. Booch. Object-Oriented Design with Applications. Benjamin Cummings, Redwood City, CA, 1991.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. 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.

    Google Scholar 

  13. L. Cardelli. Extensible records in a pure calculus of subtyping. Technical Report 81, DEC Systems Research Center, 1992.

    Google Scholar 

  14. Castagna, Ghelli, and Longo. A calculus for overloaded functions with subtyping. In 1992 ACM Conf. Lisp and Functional Programming, pages 182–192, 1992.

    Google Scholar 

  15. 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.

    Google Scholar 

  16. W. Cook. A self-ish model of inheritance. Manuscript, 1987.

    Google Scholar 

  17. W.R. Cook. A Denotational Semantics of Inheritance. PhD thesis, Brown University, 1989.

    Google Scholar 

  18. W.R. Cook. A proposal for making Eiffel type-safe. In European Conf. on Object-Oriented Programming, pages 57–72, 1989.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. 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.

    Google Scholar 

  21. Pavel Curtis. Constrained quantification in polymorphic type analysis. Technical report, Xerox PARC technical report CSL-90-1, February 1990. Cornell University PhD Thesis.

    Google Scholar 

  22. L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, 1985.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. M. Ellis and B. Stroustrop. The Annotated C ++ Reference Manual. Addison-Wesley, 1990.

    Google Scholar 

  25. 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.

    Google Scholar 

  26. J.-Y. Girard. Interpretation fonctionelle et elimination des coupures de l'arithmetique d'ordre superieur. These D'Etat, Universite Paris VII, 1972.

    Google Scholar 

  27. C.A. Gunter and J.C. Mitchell, editors. Theoretical aspects of object-oriented programming. MIT Press, Cambridge, MA, 1994.

    Google Scholar 

  28. 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.

    Google Scholar 

  29. Dinesh Katiyar, David Luckham, S. Meldal, and John Mitchell. Polymorphism and subtyping in interfaces. In ACM Workshop on Interface Definition Languages, 1994.

    Google Scholar 

  30. B. Liskov et al. CLU Reference Manual. Springer LNCS 114, Berlin, 1981.

    Google Scholar 

  31. 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.

    Google Scholar 

  32. B. Liskov, A. Snyder, R. Atkinson, and C. Schaffert. Abstraction mechanisms in clu. Comm. ACM, 20:564–576, 1977.

    Google Scholar 

  33. B. Meyer. Eiffel: The Language. Prentice-Hall, 1992.

    Google Scholar 

  34. 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.

    Google Scholar 

  35. 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.

    Google Scholar 

  36. 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.

    Google Scholar 

  37. 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.

    Google Scholar 

  38. J.H. Morris. Types are not sets. In 1st ACM Symp. on Principles of Programming Languages, pages 120–124, 1973.

    Google Scholar 

  39. 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.

    Google Scholar 

  40. Robin Milner and Mads Tofte. Commentary on Standard ML. MIT Press, 1991.

    Google Scholar 

  41. Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, 1990.

    Google Scholar 

  42. Benjamin C. Pierce. Mutable objects. Draft report; available electronically, June 1993.

    Google Scholar 

  43. 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.

    Google Scholar 

  44. 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”.

    Google Scholar 

  45. 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.

    Google Scholar 

  46. 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.

    Google Scholar 

  47. J.C. Reynolds. Types, abstraction, and parametric polymorphism. In Information Processing '83, pages 513–523. North-Holland, Amsterdam, 1983.

    Google Scholar 

  48. R. Sethi. Programming Languages: Concepts and Constructs. Addison-Wesley, 1989.

    Google Scholar 

  49. 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.

    Google Scholar 

  50. G.L. Steele. Common Lisp: The language. Digital Press, 1984.

    Google Scholar 

  51. L.A. Stein. Delegation is inheritance. In Proc. ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 138–146, 1987.

    Google Scholar 

  52. B. Stroustrop. The C++ Programming Language. Addison-Wesley, 1986.

    Google Scholar 

  53. J.D. Ulmman. Elements of ML programming. Prentice Hall, 1994.

    Google Scholar 

  54. US Dept. of Defense. Reference Manual for the Ada Programming Language. GPO 008-000-00354-8, 1980.

    Google Scholar 

  55. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Masami Hagiya John C. Mitchell

Rights and permissions

Reprints 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

Publish with us

Policies and ethics