Declarative object-oriented programming: Inheritance, subtyping and prototyping

  • S. Alagić
  • R. Sunderraman
  • R. Bagai
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 821)


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.


Object-oriented type systems logic programming semantic specifications inheritance subtyping polymorphism unification deduction 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 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. 2.
    S. Alagić. Object-Oriented Database Programming. Springer-Verlag, New York, 1989.Google Scholar
  3. 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. 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. 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. 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. 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. 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. 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. 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. 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. 12.
    L. Cardelli. A semantics of multiple inheritance. Information and Computation, 76:138–164, 1988.MATHMathSciNetCrossRefGoogle Scholar
  13. 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. 14.
    K. L. Clark. Negation as failure. In H. Gallaire and J. Minker, editors, Logic and Databases. Plenum Press, NY, 1978.Google Scholar
  15. 15.
    W. Cook. A proposal for making Eiffel type safe. The Computer Journal, 32(4):305–311, 1989.CrossRefGoogle Scholar
  16. 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. 17.
    M. Dalal. Some tractable classes of disjunctive logic programs. Technical Report, Department of Computer Science, Rutgers University, 1992.Google Scholar
  18. 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. 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. 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. 21.
    P. Grogono. Issues in the design of an object-oriented programming language. Structured Programming, 12:1015, 1991.Google Scholar
  22. 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. 23.
    T. Imielinski. Incomplete deductive databases. Annals of Mathematics and Artificial Intelligence, 3(2–4):259–293, 1991.MATHMathSciNetCrossRefGoogle Scholar
  24. 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. 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. 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. 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. 28.
    B. Liskov and J.M. Wing. A new definition of the subtype relation. In Proceedings of ECOOP-93, 1993.Google Scholar
  29. 29.
    J. W. Lloyd. Foundations of Logic Programming. Springer-Verlag, second edition, 1987.Google Scholar
  30. 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. 31.
    J. McLean. A formal method for abstract specification of software. Journal of the ACM, 31(3):600–627, 1984.MATHCrossRefGoogle Scholar
  32. 32.
    J. Meseguer and X. Qian. A logical semantics for object-oriented databases. In Proceedings of ACM-SIGMOD Conference, 1993.Google Scholar
  33. 33.
    B. Meyer. Object-oriented Software Construction. Prentice Hall, 1988.Google Scholar
  34. 34.
    B. Meyer. Eiffel: The Language. Prentice Hall, 1992.Google Scholar
  35. 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. 36.
    A. Ohori and P. Buneman. Static type inference for parametric classes. In Proceedings of OOPSLA'89, pages 445–456, 1989.Google Scholar
  37. 37.
    J. Palsberg and M.I. Schwartzbach. Object-oriented type inference. In Proceedings of OOPSLA'91, pages 146–161, 1991.Google Scholar
  38. 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. 39.
    A. Snyder. Encapsulation and inheritance in object-oriented programming languages. In Proceedings of OOPSLA-86, pages 38–45, 1986.Google Scholar
  40. 40.
    B. Stroustrup. The C++ Programming Language. Addison-Wesley, second edition, 1993.Google Scholar
  41. 41.
    R. Sunderraman. Deductive databases with conditional facts. Lecture Notes in Computer Science, 696:162–175, 1993.Google Scholar
  42. 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

Copyright information

© Springer-Verlag Berlin Heidelberg 1994

Authors and Affiliations

  • S. Alagić
    • 1
  • R. Sunderraman
    • 1
  • R. Bagai
    • 1
  1. 1.Department of Computer ScienceWichita State UniversityWichitaUSA

Personalised recommendations