Relations As Semantic Constructs In An Object Oriented Language

File (PDF)

Relations As Semantic Constructs In An Object Oriented Language.pdf


  • Express associations and constraints among objects
  • it is not possible to separate the abstraction from the implementation
  • how can relations be added to OOP ?
    • complement existing concepts
    • enhance expressive power
  • Association relates objects from n classes
  • relations are bidirectional
  • operations are applied to a relation as a whole
  • Steve Jobs "works for" Apple
  • An object oriented language is more expressive if relations are a primitive declarative construct.
  • classes and relations abstracts the high-level static structure of the system, without having to specify a particular implementation.


  • Introduction
    • What are relations
    • Object-oriented languages lack relations
    • Why relations should be a semantic construct
    • Relations can be implemented
  • Relations as logical constructs
    • Definitions
    • Syntax
    • Update Operations
    • Cardinality
    • Similarities between classes and relations
    • Qualified Relations
    • Other Relations
    • Query Operations
      • Testing membership
      • Indexing by fields
      • Scanning elements
  • Relations in standard object oriented languages (how it is done now)
    • Implementing relations using instance variables
    • Why adding a relation class is not enough
  • Implementation of relations in an object-oriented language (proposal)
    • Syntax
    • Methods
    • Relation objects
  • Possible Objections
  • An Actual Implementation


Bibliographic Description

 author = {James Rumbaugh},
 title = {Relations as semantic constructs in an object-oriented language},
 booktitle = {OOPSLA '87: Conference proceedings on Object-oriented programming systems, languages and applications},
 year = {1987},
 isbn = {0-89791-247-0},
 pages = {466--481},
 location = {Orlando, Florida, United States},
 doi = {},
 publisher = {ACM},
 address = {New York, NY, USA},
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License