skip to main content
article
Free access

Type theories and object-oriented programmimg

Published: 01 March 1988 Publication History

Abstract

Object-oriented programming is becoming a popular approach to the construction of complex software systems. Benefits of object orientation include support for modular design, code sharing, and extensibility. In order to make the most of these advantages, a type theory for objects and their interactions should be developed to aid checking and controlled derivation of programs and to support early binding of code bodies for efficiency. As a step in this direction, this paper surveys a number of existing type theories and examines the manner and extent to which these theories are able to represent the ideas found in object-oriented programming. Of primary interest are the models provided by type theories for abstract data types and inheritance, and the major portion of this paper is devoted to these topics. Code fragments illustrative of the various approaches are provided and discussed. The introduction provides an overview of object-oriented programming and types in programming languages; the summary provides a comparative evaluation of the reviewed typing systems, along with suggestions for future work.

References

[1]
AGHA, G. 1986. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, Mass.
[2]
AIT-KACI, H. 1984. A lattice-theoretic approach to computations based on a calculus of partiallyordered type structures. Ph.D. dissertation, Computer and Information Science Dept., Univ. of Pennsylvania, Philadelphia.
[3]
AIT-KACI, H. 1985. Integrating data type inheritance into logic programming. In Persistence in Data Types, Papers for the Appin Workshop (Aug.). Dept. of Computational Science, Univ. of St. Andrews, Scotland.
[4]
AIT-KACI, H., ANO NASR, R. 1986. Logic and inheritance. In Proceedings of the 13th ACM Symposium on Principles of Programming Languages (St. Petersburg, Fla., Jan.). ACM, New York, pp. 219-228.
[5]
AIT-KACI, H., LINCOLN, P., AND NASR, R. 1987. A logic of inheritance, functions, and equations. Talk presented at joint U.S./Japan Workshop on Logic of Programs, Honolulu, Hawaii.
[6]
AMERICA, P. 1986. Operational semantics of a parallel object-oriented language. In Proceedings of the 13th A CM Symposium on Principles of Programming Languages (St. Petersburg, Fla., Jan.). ACM, New York, pp. 194-208.
[7]
AMERICA, P. 1987. POOL-T: A parallel objectoriented language. In Object-Oriented Concurrent Programming, A. Yonezawa and M. Tokoro, Eds. MIT Press, Cambridge, Mass.
[8]
BATES, J. L., AND CONSTABLE, R. L. 1985. Proofs as programs. A CM Trans. Program. Lang. Syst. 7, i (Jan.), 113-136.
[9]
BLACK, A., HUTCHINSON, N., JUL, E, AND LEVY, H. 1986. Object structure in the Emerald system. In OOPSLA Conference Proceedings (Portland, Oreg., Sept.). ACM SIGPLAN 21, 11 (Nov.). ACM, New York, pp. 78-87.
[10]
BOBROW, D., KAHN, K., KICZALES, G., MASIUTER, L., STEFIK, M., AND ZDYBEL, F. 1986. Common loops: Merging Lisp and object oriented programming. In OOPSLA Conference Proceedings (Portland, Oreg., Sept.). ACM SIGPLAN 21, 11 (Nov.). ACM, New York, pp. 17-29.
[11]
BORNING, A., AND INGALLS, D. 1982. A type declaration and inference system for Smalltalk. in Proceedings of the 9th ACM Symposium on Principles of Programming Languages (Albuquerque, N. Mex., Jan.). ACM, New York, pp. 133-141.
[12]
BRACHMAN, R. 1985. I lied about the trees. AI Magazine (fall).
[13]
BRINCH-HANSEN, P. 1977. The Architecture of Concurrent Programs. Prentice-Hall, Englewood Cliffs, N.J.
[14]
BURSTALL, R., AND GOGUEN, J. 1982. Algebras, theories and freeness: An introduction for computer scientists. CSR-101-82, Dept. of Computer Science, Univ. of Edinburgh, Scotland.
[15]
BURSTALL, R., AND LAMPSON, B. 1984. A kernel language for ADTs and modules. In Semantics of Data Types, G. Kahn, D. MacQueen, and G. Plotkin, Eds. Springer-Verlag, New York.
[16]
CARDELLI, L. 1984a. Amber. Tech. Memo 11271- 840924-10TM, AT&T Bell Labs, Murray Hill, N.J.
[17]
CARDELLI, L. 1984b. A semantics of multiple inheritance. In Semantics of Data Types, G. Kahn, D. MacQueen, and G. Plotkin, Eds. Springer- Verlag, New York.
[18]
CARDELLI, L. 1986. A polymorphic lambda calculus with type: Type. DEC Systems Research Center Rep. No. 10, Digital Equipment Corp., Palo Alto, Calif.
[19]
CARDELLI, L. 1987. Basic polymorphic typechecking. Sci. Comput. Program. 8, 147-172.
[20]
CARDELLI, L., AND WEGNER, P. 1985. On understanding types, data abstraction, and polymorphism. ACM Comput. Surv. 17, 4 (Dec.), 471-522.
[21]
CARDELLI, L., AND MACQUEEN, D. 1985. Persistence and type abstraction. In Persistence in Data Types, Papers for the Appin Workshop (Aug.). Res. Rep. 16, Dept. of Computational Science, Univ. of St. Andrews, Scotland, pp. 231-240.
[22]
CONSTABLE, R., AND ZLATIN, D. 1984. The type theory of PL/CV3. ACM Trans. Program. Lang. Syst. 6, I (Jan.), 94-117.
[23]
COX, B. 1984. Message/object programming: An evolutionary change in programming technology. IEEE Software 1, I (Jan.).
[24]
CURRY, H., AND FEYS, R. 1958. Combinatory Logic. North-Holland, Amsterdam.
[25]
DAHL, 0. J., AND NYGAARD, K. 1966. SIMULA-- An ALGOL-based simulation language. Commun. ACM 9, 9 (Sept.), 671-678.
[26]
DALLY, W. 1986. A VLSI architecture for concurrent data struct ires. Ph.D. dissertation, Dept. of Computer Science, California Institute of Technology, Pasadena.
[27]
DEMERS, A., AND DONAHUE, J. 1979. Revised report on Russell. TR79-389, Dept. of Computer Science, Cornell Univ., Ithaca, N.Y.
[28]
DEMERS, A. J., AND DONAHUE, J. E. 1983. Making variables abstract: An equational theory for Russell. In Proceedings of the l Oth ACM Symposium on Principles of Programming Languages.
[29]
DONAHUE, J., AND DEMERS, A. 1985. Data types are values. A CM Trans. Program. Lang. Syst. 7, 3 (Jul.), 426-445.
[30]
FUTATSUGI, K., GOGUEN, J., JOUANNAUD, J-P., AND MESEOUER, J. 1985. Principles of OBJ2. in Proceedings of 12th Annual Symposium on Principles of Programming Languages (New Orleans, La., Jan.). ACM, New York, pp. 52-66.
[31]
GIRARD, J. 1971. Une extension de l'interpretation de GSdel ~ l'analyse, et son application ~ l'61imination des coupures dans l'analyse et la th6orie des types. In Second Scandinavian Logic Symposium, J. E. Fenstad, Ed. North-Holland, Amsterdam.
[32]
GOGUEN, J., AND MESEGUER, J. 1986. EQLog: Equality, types, and generic modules for logic programming. In Logic Programming, D. DeGroot and G. Lindstrom, Eds. Prentice-Hall, Englewood Cliffs, N.J.
[33]
GOGUEN, J., AND MESEGUER, J. 1987. Unifying functional, object-oriented and relational programming with logical semantics. In Research Directions in Object-Oriented Programming, B. Shriver and P. Wegner, Eds. MIT Press, Cambridge, Mass.
[34]
GOLDBERG, A., AND ROBSON, D. 1983. SmaUtalk-80: The Language and Its Implementation. Addison- Wesley, Reading, Mass.
[35]
GUTTAO, J. 1980. Notes on type abstraction. IEEE Trans. So{tw. Eng. SE-6, i (Jan.), 13-23.
[36]
HEWITT, C. 1985. The challenge of open systems. Byte (Apr.), 232-242.
[37]
HEXT, J. 1967. Compile time type-matching. Cornput. J. 9, 365-369.
[38]
HOOK, J. 1984. Understanding Russell--A first attempt. In Semantics of Data Types, G. Goos and J. Hartmanis, Eds. Springer-Verlag, New York.
[39]
INGALLS, D. 1978. Smalltalk-76 programming systern design and implementation. In Proceedings of 5th A CM Symposium on Principles of Programming Languages (Tucson, Ariz., Jan.). ACM, New York, pp. 9-15.
[40]
ISHIKAWA, Y., AND TOKORO, M. 1986. A concurrent object-oriented knowledge representation language Orient84/K: Its features and implementation. In OOPSLA Conference Proceedings (Portland, Oreg., Sept.).ACM SIGPLAN 21, 11 (Nov.), ACM, New York, pp. 232-241.
[41]
JOHNSON, R. 1986. Type-checking Smalltalk. In OOPSLA Conference Proceedings (Portland, Oreg., Sept.). ACM SIGPLAN 21, 11 (Nov.). ACM, New York, pp. 315-321.
[42]
JONES, N., AND MUCHNICK, S. 1976. Binding time optimization in programming languages. In Proceedings of 3rd ACM Symposium on Principles of Programming Languages (Atlanta, Ga., Jan.). ACM, New York, pp. 77-94.
[43]
KAPLAN, M., AND ULLMAN, J. 1980. A scheme for the automatic inference of variable types. J. ACM 27, I (Jan.), 128-145.
[44]
KAY, A. 1972. Smalltalk-72 instruction manual. Xerox PARC Rep. SSL-76-6, Xerox Palo Alto Research Center, Palo Alto, Calif.
[45]
LALONDE, W., THOMAS, D. T., AND PUGH, J. 1986. An exemplar based Smalltalk. In OOPSLA Conference Proceedings (Portland, Oreg., Sept.). ACM SIGPLAN 21, 11 (Nov.), 322-330.
[46]
LANDIN, P. J. 1966. The next 700 programming languages. Comrnun. ACM 9, 3 (Mar.), 157-166.
[47]
LANO, K., AND PERLMUTTER, B. 1986. OakLisp: An object-oriented scheme with first class types. In OOPSLA Conference Proceedings (Portland, Oreg., Sept.). ACM SIGPLAN 21, 11 (Nov.), 3O-37.
[48]
LIEBERMAN, H. 1986. Using prototypical objects to implement shared behavior in object oriented systems. In OOPSLA Conference Proceedings (Portland, Oreg., Sept.).ACM SIGPLAN 21, 11 (Nov.), 214-223.
[49]
LISKOV, B., SNYDER, A., ATKINSON, R., AND SCHAF- ~ERT, C. 1977. Abstraction mechanisms in CLU. Commun. ACM 20, 8 (Aug.), 564-576.
[50]
MACQUEEN, D. 1985. Modules for ML. Polymorphism Newsletter (Oct.).
[51]
MACQUEEN, D. 1986. Using dependent types to express modular structure. In Proceedings o{ 13th Annual A CM Symposium on Principles of Programming Languages (St. Petersburg Beach, Fla., Jan.). ACM, New York, pp. 277-286.
[52]
MACQUEEN, D., AND SET~I, R. 1982. A higher order polymorphic type system for applicative languages, in Proceedings of 1982 Symposium on Lisp and Functional Programming. ACM, New York, pp. 243-252.
[53]
MACQUEEN, D., PLOTKIN, G., AND SETHi, R. 1984. An ideal model for recursive polymorphic types. In Proceedings of 11th Annual ACM Symposium on Principles of Programming Languages (Salt Lake City, Utah, Jan.). ACM, New York, pp. 165-174.
[54]
MARTIN-LOF, P. 1982. Constructive logic and computer programming. In Proceedings o{ 6th International Congress for Logic, Methodology, and Philosophy of Science. North-Holland, Amsterdam.
[55]
MATTHEWS, D. 1983. Programming language design with polymorphism. Ph.D. dissertation, Computer Lab., Univ. of Cambridge, Cambridge, England.
[56]
MESEGUER, J., AND GOGUEN, J. 1983. Initiality, induction, and computability. Tech. Rep. CSL-140, Computer Science Laboratory, SRI, Menlo Park, Calif.
[57]
MEYROWITZ, N., ED. 1986. Intermedia: The architecture and construction of an object-oriented hypermedia system. In OOPSLA Conference Proceedings (Portland, Oreg., Sept.). ACM SiG- PLAN 21, 11 (Nov.), 186-201.
[58]
MEYROWITZ, N., ED. 1987. OOPSLA Conference Proceedings (Orlando, Fla., Oct.). ACM S{G- PLAN 22, 12 (Dec.).
[59]
MILNER, R. 1978. A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 348-375.
[60]
MITCHELL, J. 1984a. Coercion and type inference (Summary). In Proceedings of 11th Annual ACP Symposium on Principles o{ Programming Languages (Salt Lake City, Ut., Jan.). ACM, New York, pp. 175-185.
[61]
MITCHELL, J. 1984b. Type inference and type containment. In Semantics of Data Types, Lecture Notes in Computer Science, vol. 173. Springer- Verlag, New York, pp. 51-67.
[62]
MITCHELL, J., AND PLOTKIN, G. 1985. Abstract types have existential type. In Proceedings of 12th Annual ACM Symposium on Principles of Programming Languages (New Orleans, La., Jan.). ACM, New York, pp. 37-51.
[63]
MOON, D. 1986. Object-oriented programming with flavors. In OOPSLA Conference Proceedings (Portland, Oreg., Sept.). ACM SIGPLAN 21, 11 (Nov.), 1-8.
[64]
PARNAS, D. 1972. A technique for software module specification. Commun. ACM 15, 5 (May), 330- 336.
[65]
REYNOLDS, J. 1970. Transformational systems and the algebraic structure of atomic formulas. In Machine Intelligence, D. Michie, Ed., vol. 5. Edinburgh University Press, Edinburgh, Scotland, chap. 7.
[66]
REYNOLDS, J. 1974. Towards a theory of type structure. In Colloquium sur la Programmation, Lecture Notes in Computer Science, vol. 19. Springer-Verlag, New York.
[67]
ROBINSON, J. 1965. A machine-oriented logic based on the resolution principle. J. ACM 12, 1 (Jan.), 23-41.
[68]
SCHAFFERT, C., COOPER, T., BULLIS, B., KILIAN, M., AND WILPOLT, C. 1986. An introduction to Trellis/Owl. In OOPSLA Conference Proceedings (Portland, Oreg., Sept.). ACM SIGPLAN 21, 11 (Nov.), 9-16.
[69]
SCHERLIS, W. 1986. Abstract data types, specialization, and program reuse. In Proceedings o{ the International Workshop on Advanced Programming Environments. Springer-Verlag, New York.
[70]
SCOTT, D. 1976. Data types as lattices. SIAM J. Comput. (Sept.), 522-587.
[71]
SHRIVER, B., AND WEGNER, P., EDS. 1987. Research Directions in Object-Oriented Programming. MIT Press, Cambridge, Mass.
[72]
SKARRA, A., AND STEIN, J. 1987. Type evolution in an object-oriented database. In Research Directions in Object-Oriented Programming, B. Shriver and P. Wegner, Eds. MIT Press, Cambridge, Mass.
[73]
SNYDER, A. 1987. inheritance and the development of encapsulated software components. In Proceedings o{ the 20th Hawaiian International Conference on Systems Sciences. Software Track, Western Periodicals, North Hollywood, Calif., pp. 227-238.
[74]
STEFIK, M., AND BOBROW, D. 1986. Object-oriented programming: Themes and variations. AI Mag. 6, 4, 40-62.
[75]
STEIN, L. 1987. Delegation is inheritance. In OOPSLA Conference Proceedings (Orlando, Fla., Oct.). ACM SIGPLAN 22, 12 (Dec.), 138-146.
[76]
STOY, J. 1977. Denotational Semantics: The Scott- Strachey Approach to Programming Language Theory. MiT Press, Cambridge, Mass.
[77]
STROUSTRUP, B. 1986. C++. Addison-Wesley, Reading, Mass.
[78]
SWINEHART, D., ZELLWEGER, P., AND BEACH, g. 1986. A structural view of the Cedar programming environment. ACM Trans. Program. Lang. Syst. 8, 4 (Oct.), 419-489.
[79]
TURNER, R. 1984. Logics for Artificial Intelligence. Halsted Press, New York.
[80]
U.S. DEPARTMENT OF DEFENSE. 1983. Ada Reference Manual. ANSI/MIS-STD 1815, U.S. Printing Office (Jan.), Washington, D.C.
[81]
YONEZAWA, A., AND TOKORO, M., EoS. 1987. Object-Oriented Concurrent Programming. MIT Press, Cambridge, Mass.
[82]
YONEZAWA, A., SHIBAYAMA, E., TAKAKA, T., AND HONOA, Y. 1987. Modelling and programming in an object oriented concurrent language ABCL/i. In Object-Oriented Concurrent Programming, A. Yonezawa and M. Tokoro, Eds. MIT Press, Cambridge, Mass.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Computing Surveys
ACM Computing Surveys  Volume 20, Issue 1
March 1988
68 pages
ISSN:0360-0300
EISSN:1557-7341
DOI:10.1145/62058
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 March 1988
Published in CSUR Volume 20, Issue 1

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)234
  • Downloads (Last 6 weeks)27
Reflects downloads up to 24 Dec 2024

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media