next up previous contents
Next: Modules Up: Shore Data Language Reference Previous: Grammatical Conventions

 

Objects and Values

All persistent state in Shore is encapsulated in objects. An object has attributes, which define its persistent state, operations, which may change its state and/or return information about its current state, and relationships, which determine how it is related to other objects. An object also has a unique identity; that is, modifying the state of an object is different from creating a new object with the new state. Objects do not nest. Although a particular application may define a ``part-subpart'' relationship between two objects, each object has an independent identity and lifetime. A value is a unit of stored state. In contrast with objects, values may be nested but do not have independent identities. The state of an object is a value, as is the state of each attribute of the object and each component of a structured value.

Each object has a fixed-size core and an optional variable-size extension. The structure of the core is defined by an interface definition in SDL. The extension supports variable-sized strings and sequences. The user can also use the extension as a storage pool to allocate values dynamically and link them to the core and to each other with local references (lrefs) which are converted to pointers (memory addresses) when they are brought into memory. Shore automatically brings objects into memory as an application traverses relationships. Large objects are faulted into memory incrementally, a page at a time. Each lref is adjusted as necessary to reflect the storage address used to hold the page of the object to which it refers.


Marvin Solomon
Fri Aug 2 13:39:38 CDT 1996