An Object-Oriented Effects System

by Aaron Greenhouse and John Boyland.

Abstract

An effects systems describes how state may be accessed during the execution of some program component. This information is used to assist reasoning about a program, such as determining whether data dependencies may exist between two computations. We define an effects system for Java that preserves the abstraction facilities that make object-oriented programming languages attractive. Specifically, a subclass may extend abstract regions of mutable state inherited from the superclass. The effects system also permits an object's state to contain the state of wholly-owned subsidiary objects. In this paper, we describe a set of annotations for declaring permitted effects in method headers, and show how the actual effects in a method body can be checked against the permitted effects.

BibTeX Style Reference

@inproceedings(greenhouse/boyland:99effects,
  author =      {Aaron Greenhouse and John Boyland},
  title =       {An Object-Oriented Effects System},
  booktitle =   "ECOOP'99 --- Object-Oriented Programming, 13th European Conference",
  city =        "Lisbon, Portugal",
  date = 	jun # " 16--18",
  year =        1999,
  series =      "Lecture Notes in Computer Science",
  number = 	1628,
  publisher =   "Springer",
  address =     "Berlin, Heidelberg, New York",
  pages = 	{205--229},
  nothing =     {})

How to Get a Copy

The paper was presented at ECOOP '99 (European Conference on Object-Oriented Programming, held in Lisbon, Portugal, June 16-18, 1999). It appeared in the proceedings, published as number 1628 of Lecture Notes in Computer Science by Springer. An electronic reprint is available for personal and academic use by permission of Springer.


Last Modified: February 12, 2001

An Object-Oriented Effects System / boyland@cs.uwm.edu