Skip to main content

Declarative object-oriented programming: Inheritance, subtyping and prototyping

  • Conference paper
  • First Online:
Object-Oriented Programming (ECOOP 1994)

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

Included in the following conference series:

Abstract

A design and implementation of a declarative object-oriented language is presented. The language is strongly and mostly statically typed and supports software reuse techniques such as inheritance, subtype and parametric polymorphism. It differs significantly from the existing strongly typed object-oriented languages in its declarative constraint language which is based on a suitably extended logic programming paradigm. Behavioral subtyping and advanced polymorphic facilities (such as, for example, F-bounded polymorphism) now fit naturally into this general paradigm. The underlying implementation technique produces a powerful prototyping tool for object-oriented software development and generalizes logic programming architectures by an algebraic automata based model for representing object states and state transitions.

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. S. Abiteboul, P. Kanellakis, and G. Grahne. On the representation and querying of sets of possible worlds. In Proceedings of the ACM-SIGMOD International Conference on Management of Data, pages 34–48, 1987.

    Google Scholar 

  2. S. Alagić. Object-Oriented Database Programming. Springer-Verlag, New York, 1989.

    Google Scholar 

  3. S. Alagić. Generic modules, kinds and polymorphism for Modula-2. In Proceedings of the 2nd International Modula-2 Conference, Loughborough, England, 1991.

    Google Scholar 

  4. S. Alagić. Persistent meta-objects. In A. Dearle, G.M. Shaw, and S.B. Zdonik, editors, Implementing Persistent Object Bases: Principles and Practice, pages 31–42. Morgan Kaufmann, 1991.

    Google Scholar 

  5. P. America. Designing an object-oriented programming language with behaviorial subtyping. In Foundations of Object-Oriented Languages, REX School/Workshop, Noordwijkerhout, The Netherlands, pages 60–90. Lecture Notes in Computer Science 489, Springer-Verlag, 1991.

    Google Scholar 

  6. K. R. Apt. Logic programming. In J. van Leeuwen, editor, Handbook of Theoretical Computer Science: Volume B (Formal Models and Semantics). MIT Press, 1990.

    Google Scholar 

  7. K. R. Apt, H. A. Blair, and A. Walker. Towards a theory of declarative knowledge. In Jack Minker, editor, Foundations of Deductive Databases and Logic Programming, pages 89–148. Morgan Kaufmann, Los Altos, 1988.

    Google Scholar 

  8. R. Bagai, M. Bezem, and M. H. van Emden. On downward closure ordinals of logic programs. Fundamenta Informaticae, XIII(1), March 1990.

    Google Scholar 

  9. K. Bruce. Safe type checking in a statically typed object-oriented programming language. In Proceedings of POPL (Principles of Programming Languages), pages 285–298, 1993.

    Google Scholar 

  10. P. Canning, W. Cook, W. Hill, and W. Olthoff. Interfaces for strongly typed object-oriented programming. In Proceedings of the OOPSLA Conference, pages 457–467, 1989.

    Google Scholar 

  11. P. Canning, W. Cook, W. Hill, W. Olthoff, and J.C. Mitchell. F-bounded polymorphism for object-oriented programming. In Proceedings of the Conference on Functional Programming and Computer Architecture, pages 273–280, 1989.

    Google Scholar 

  12. L. Cardelli. A semantics of multiple inheritance. Information and Computation, 76:138–164, 1988.

    Article  MATH  MathSciNet  Google Scholar 

  13. L. Cardelli, J. Donahue, M. Jordan, B. Kalslow, and G. Nelson. The Modula-3 type system. In Conference Record, ACM Symposium on Principles of Programming Languages, pages 202–212, 1989.

    Google Scholar 

  14. K. L. Clark. Negation as failure. In H. Gallaire and J. Minker, editors, Logic and Databases. Plenum Press, NY, 1978.

    Google Scholar 

  15. W. Cook. A proposal for making Eiffel type safe. The Computer Journal, 32(4):305–311, 1989.

    Article  Google Scholar 

  16. W. Cook, W. Hill, and P. Canning. Inheritance is not subtyping. In Proceedings of Principles of Programming Languages, pages 125–135. ACM Press, 1990.

    Google Scholar 

  17. M. Dalal. Some tractable classes of disjunctive logic programs. Technical Report, Department of Computer Science, Rutgers University, 1992.

    Google Scholar 

  18. M. Fay. First-order unification in an equational theory. In Proceedings of the 4th Workshop on Automated Deduction, pages 161–167, 1979.

    Google Scholar 

  19. J. Goguen and J. Meseguer. EQLOG: equality, types and generic modules for logic programming. In D. DeGroot and G. Lindstrom, editors, Logic Programming: Functions, Relations and Equations, pages 295–363. Prentice Hall, 1986.

    Google Scholar 

  20. J. Goguen and J. Meseguer. Unifying functional, object-oriented and relational programming with logical semantics. In B. Shriver and P. Wegner, editors, Research Directions in Object-Oriented Programming, pages 417–477. MIT Press, 1987.

    Google Scholar 

  21. P. Grogono. Issues in the design of an object-oriented programming language. Structured Programming, 12:1015, 1991.

    Google Scholar 

  22. J.-M. Hullot. Canonical forms and unification. In W. Bibel and R. Kowalski, editors, Proceedings of the 5th Conference on Automated Deduction, pages 318–334. Lecture Notes in Computer Science 87, Springer-Verlag, 1980.

    Google Scholar 

  23. T. Imielinski. Incomplete deductive databases. Annals of Mathematics and Artificial Intelligence, 3(2–4):259–293, 1991.

    Article  MATH  MathSciNet  Google Scholar 

  24. J. Jaffar, J.-L. Lassez, and M. J. Maher. A logic programming language scheme. In D. DeGroot and G. Lindstrom, editors, Logic Programming: Functions, Relations and Equations, pages 441–468. Prentice Hall, 1986.

    Google Scholar 

  25. Z. A. Khandaker, J. A. Fernandez, and J. Minker. A tractable class of disjunctive deductive databases. In Proceedings of the Joint International Conference and Symposium on Logic Programming, Washington D.C.,, 1992.

    Google Scholar 

  26. W. A. Kornfield. Equality for Prolog. In D. DeGroot and G. Lindstrom, editors, Logic Programming: Functions, Relations and Equations, pages 279–294. Prentice Hall, 1986.

    Google Scholar 

  27. G. Leavens and W.E. Wiehl. Reasoning about object-oriented programs that use subtypes. In Proceedings of ECOOP/OOPSLA-90, pages 212–223, 1990.

    Google Scholar 

  28. B. Liskov and J.M. Wing. A new definition of the subtype relation. In Proceedings of ECOOP-93, 1993.

    Google Scholar 

  29. J. W. Lloyd. Foundations of Logic Programming. Springer-Verlag, second edition, 1987.

    Google Scholar 

  30. D.B. MacQueen. An implementation of standard ml modules. In Proceedings of the ACM Conference on LISP and Functional Programming, pages 212–243, 1988.

    Google Scholar 

  31. J. McLean. A formal method for abstract specification of software. Journal of the ACM, 31(3):600–627, 1984.

    Article  MATH  Google Scholar 

  32. J. Meseguer and X. Qian. A logical semantics for object-oriented databases. In Proceedings of ACM-SIGMOD Conference, 1993.

    Google Scholar 

  33. B. Meyer. Object-oriented Software Construction. Prentice Hall, 1988.

    Google Scholar 

  34. B. Meyer. Eiffel: The Language. Prentice Hall, 1992.

    Google Scholar 

  35. J. Mitchell, S. Meldaland, and N. Madhav. An extension of standard ML modules with subtyping and inheritance. In Proceedings of Principles of Programming Languages, pages 270–278, 1990.

    Google Scholar 

  36. A. Ohori and P. Buneman. Static type inference for parametric classes. In Proceedings of OOPSLA'89, pages 445–456, 1989.

    Google Scholar 

  37. J. Palsberg and M.I. Schwartzbach. Object-oriented type inference. In Proceedings of OOPSLA'91, pages 146–161, 1991.

    Google Scholar 

  38. G.D. Plotkin. Building in equational theories. In B. Meltzer and D. Michie, editors, Machine Intelligence, 7, pages 73–90. Halsted Press, 1972.

    Google Scholar 

  39. A. Snyder. Encapsulation and inheritance in object-oriented programming languages. In Proceedings of OOPSLA-86, pages 38–45, 1986.

    Google Scholar 

  40. B. Stroustrup. The C++ Programming Language. Addison-Wesley, second edition, 1993.

    Google Scholar 

  41. R. Sunderraman. Deductive databases with conditional facts. Lecture Notes in Computer Science, 696:162–175, 1993.

    Google Scholar 

  42. A. van Gelder, K. A. Ross, and J. S. Schlipf. The well-founded semantics for general logic programs. Journal of the ACM, 38(3):621–650, 1991.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Mario Tokoro Remo Pareschi

Rights and permissions

Reprints and permissions

Copyright information

© 1994 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Alagić, S., Sunderraman, R., Bagai, R. (1994). Declarative object-oriented programming: Inheritance, subtyping and prototyping. In: Tokoro, M., Pareschi, R. (eds) Object-Oriented Programming. ECOOP 1994. Lecture Notes in Computer Science, vol 821. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0052186

Download citation

  • DOI: https://doi.org/10.1007/BFb0052186

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-58202-1

  • Online ISBN: 978-3-540-48567-4

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics