next up previous contents
Next: OBJECTS Base Object Up: Object Classes Previous: Base Object Classes

Specialization Object Classes

Specialization is an abstraction mechanism that allows defining object classes consisting of subsets of objects of other ( generic) object (super) classes. The inverse of specialization is usually called generalization.

There are two types of specialization: ISA and ISA*. If class isa then all instances of are also instances of ; if isa* then all instances of are also of instances of , but cannot be instances of any other (immediate) subclass of , that is, all isa* subclasses of a superclass are pair-wise disjoint.

Specialization defines a transitive relationship between object classes. Thus, if object class is a direct specialization of object class , and is a direct specialization of object class , then is a transitive specialization of . The specialization object classes form directed acyclic graphs.

Each specialization object class, , must satisfy generalization referential integrity constraints requiring each object in to belong to all the superclasses of .

A specialization class inherits all the attributes of its superclass . If an attribute A is explicitly defined in both and superclass , then the local definition in overrides the inherited property in superclass . OPM allows multiple inheritance; that is, an object class can have two (or more) superclasses and , neither is a superclass of the other. If an attribute B is defined in both and then B must be defined locally in and override the definitions of B from and .

A specialization object class can either have an explicitly specified identifier or can inherit identifiers from its superclasses. Similarly, a specialization object class can either have an explicitly specified representation list, or can inherit the representation lists from its superclasses.

<specialization object class> ::= OBJECT CLASS <object class name> 
                                               <generic object classes>
                                               <class description>
                                               <class example>
                                               <domain-specific properties>
                                               <object identifier>
                                               <represented by>
                                               <object class delete rules>
                                ;
<generic object classes> ::= <isa> <object class name>
                           | <generic object classes>, <isa> <object class name>
                           ;
<isa> ::= isa | isa*
        ;

The following is an example of a specialization object class:

OBJECT CLASS AUTHOR isa PERSON
   ATTRIBUTE authored: list-of [1,] PUBLICATION


next up previous contents
Next: OBJECTS Base Object Up: Object Classes Previous: Base Object Classes