Henrik Bengtsson
The R.oo package - Object-Oriented Programming with References Using
Standard R Code
********************************************************************

An easy to install and platform independent package named R.oo, which
provides support for references and mutable objects via a specific
class model using standard R code, has been developed. The root class
Object implements and encapsulates all the mechanisms needed for
references in a way such that object fields are accessed similarly to
how elements of a list are accessed with the important difference that
the fields can be reassigned within methods. The class model also
provides an easy way for defining classes that inherit directly or
indirectly from the Object class. Any instance of a class that inherits
from the Object class can be passed to functions by reference.
Supplementary utility functions for defining constructors and methods
in a simple and robust way are also made available. For instance,
generic functions are created automatically and if non-generic functions
with the same name already exist, they are, if possible, modified to
become default functions. Currently, S3 classes and S3 methods are
defined, but future versions of the package are likely to support S4 too.
We also suggest an \R coding convention, which the utility functions test
against, with the intention to bring additional structure to the source
code. The package also extends the current exception handling mechanism
in R such that exception objects can be caught based on their class. The
R.oo package has successfully been used in a medium-size microarray project.

Keywords: Object-oriented programming, reference variables, mutable objects,
          environments, coding conventions, exception handling, root class,
          generic functions, S3, UseMethod.