#### OM Class Hierarchy and Inheritance Properties

OM classes are related to each other in a tree hierarchy whose root is a special OM class called OM_C_OBJECT. Each of the other OM classes is the immediate subclass of precisely one other OM class. This tree structure is known as the OM class hierarchy. It is important because of the property of inheritance. The OM class hierarchy is defined by the XDS/XOM standards. DCE implements this hierarchy for GDS and adds its own set of OM classes defined in the GDS package.

The OM attribute types that may exist in an instance of an OM class but not in an instance of the OM class above it in the tree hierarchy, are said to be specific to that OM class. OM Attributes that may appear in an object are those specific to its OM class as well as those inherited from OM classes above it in the tree. OM classes above an instance of an OM class in the tree are superclasses of that OM class. OM classes below an instance of an OM class are subclasses of that OM class.

For example, as shown in the following figure, DS_C_ENTRY_INFO_SELECTION inherits its OM attributes from its superclass OM_C_OBJECT. The OM attributes DS_ALL_ATTRIBUTES, DS_ATTRIBUTES_SELECTED, and DS_INFO_TYPE are attributes specific to the OM class DS_C_ENTRY_INFO_SELECTION. The DS_C_ENTRY_INFO_SELECTION class has no subclasses.

The OM Class DS_C_ENTRY_INFO_SELECTION

Another important point about OM class inheritance is that an instance of an OM class is also considered to be an instance of each of its superclasses and may appear wherever the interface requires an instance of any of those superclasses. For example, DS_C_DS_DN is a subclass of DS_C_NAME. Everywhere in an application program where DS_C_NAME is expected at the interface (as a parameter to ds_read( ), for example), it is permitted to supply DS_C_DS_DN.

####