1. A computer-implemented method for automating the creation of objects encapsulating an undoing of operations performed by an object oriented program, said method comprising: representing a class instance as including indirect access to a definition of the class of the instance; representing the class instance as including indirect access to instance data; using the indirect access to the definition of the class of the instance and/or the indirect access to the instance data to provide an operation class encapsulating a function for an undo operation performed on the class instance; and storing the operation class in a storage.