### Object Attributes

The generic term for any object value is attribute. In this sense, an object is nothing but a collection of attributes, and every object descriptor describes one attribute. The first attribute's value identifies the object's class, and this determines all the other attributes the object is supposed to have. One or more other attributes follow, which contain the object's working values. The NULL object descriptor at the end is an implementation detail, and is not a part of the object.

Note that, depending on the attribute it represents, a descriptor's value field can contain a pointer to another array of object descriptors. In other words, an object's value can be another object.

The following figure shows a three-layer compound object: the top-level superobject, dn_object, contains the subobject rdn1, which in turn contains the subobject ava1.

A Three-Layer Compound Object

###