by Aaron Greenhouse and John Boyland.
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.
@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 = {})
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