First-Class Relationships in an Object-Oriented Language

  • Gavin Bierman
  • Alisdair Wren
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3586)


In this paper we investigate the addition of first-class relationships to a prototypical object-oriented programming language (a “middleweight” fragment of Java). We provide language-level constructs to declare relationships between classes and to manipulate relationship instances. We allow relationships to have attributes and provide a novel notion of relationship inheritance. We formalize our language giving both the type system and operational semantics and prove certain key safety properties.


Operational Semantic Type Soundness Method Body Relationship Inheritance Subject Reduction 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Albano, A., Ghelli, G., Orsini, R.: A relationship mechanism for a strongly typed object-oriented database programming language. In: Proceedings of VLDB (1991)Google Scholar
  2. 2.
    Anderson, C., Drossopoulou, S.: δ: An imperative object-based calculus with delegation. In: Proceedings of USE (2002)Google Scholar
  3. 3.
    Bierman, G., Meijer, E., Schulte, W.: The essence of Cω. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 287–311. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  4. 4.
    Bierman, G., Parkinson, M., Pitts, A.: MJ: A core imperative calculus for Java and Java with effects. Technical Report 563, University of Cambridge Computer Laboratory (2003)Google Scholar
  5. 5.
    Chen, P.P.-S.: The entity-relationship model – toward a unified view of data. ACM Transactions on Database Systems 1(1), 9–36 (1976)CrossRefGoogle Scholar
  6. 6.
    Drossopoulou, S.: An abstract model of Java dynamic linking and loading. In: Harper, R. (ed.) TIC 2000. LNCS, vol. 2071, p. 53. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  7. 7.
    Drossopoulou, S., Valkevych, T., Eisenbach, S.: Java type soundness revisited (September 2000)Google Scholar
  8. 8.
    Flatt, M., Krishnamurthi, S., Felleisen, M.: Classes and mixins. In: Proceedings of POPL, pp. 171–183 (1998)Google Scholar
  9. 9.
    Jacobson, I., Booch, G., Rumbaugh, J.: The unified software development process. Addison-Wesley, Reading (1999)Google Scholar
  10. 10.
    Noble, J.: Basic relationship patterns. In: Pattern Languages of Program Design, vol. 4. Addison-Wesley, Reading (1999)Google Scholar
  11. 11.
    Noble, J., Grundy, J.: Explicit relationships in object-oriented development. In: Proceedings of TOOLS (1995)Google Scholar
  12. 12.
    Cattell, R.G.G., et al.: The Object Data Standard: ODMG 3.0. Morgan Kaufmann, San Francisco (2000)Google Scholar
  13. 13.
    Rumbaugh, J.: Relations as semantic constructs in an object-oriented language. In: Proceedings of OOPSLA, pp. 466–481 (1987)Google Scholar
  14. 14.
    Smith, J., Smith, D.: Database abstractions: Aggregation and generalizations. ACM Transactions on Database Systems 2(2), 105–133 (1977)CrossRefGoogle Scholar
  15. 15.
    Stevens, P., Pooley, R.: Using UML: software engineering with objects and components. Addison-Wesley, Reading (1999)Google Scholar
  16. 16.
    Ungar, D., Smith, R.B.: Self: The power of simplicity. In: Proceedings of OOPSLA, pp. 227–242. ACM Press, New York (1987)Google Scholar
  17. 17.
    Wright, A.K., Felleisen, M.: A syntactic approach to type soundness. Information and Computation 115(1), 38–94 (1994)zbMATHCrossRefMathSciNetGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Gavin Bierman
    • 1
  • Alisdair Wren
    • 2
  1. 1.Microsoft ResearchCambridge
  2. 2.University of Cambridge Computer Laboratory 

Personalised recommendations