In many class-based object-oriented systems the association between aa
instance and a class is exclusive and permanent. Therefore these syst
ems have serious difficulties in representing objects taking an differ
ent roles over time. Such objects must be reclassified any time they e
volve (e.g., if a person becomes a student and later an employee). Cla
ss hierarchies must be planned carefully and may grow exponentially if
entities may take an several independent roles. The problem is even m
ore severe far object-oriented databases than for common object-orient
ed programming, Databases store objects over longer periods, during wh
ich the represented entities evolve, This article shows how class-base
d object-oriented systems can be extended to handle evolving objects w
ell. Class hierarchies are complemented by role hierarchies, whose nod
es represent role types an object classified in the root may take on.
At any point in time, an entity is represented by an instance of the r
oot and an instance of every role type whose role it currently plays,
In a natural way, the approach extends traditional object-oriented con
cepts, such as classification, object identity, specialization, inheri
tance, and polymorphism in a natural way. The practicability of the ap
proach is demonstrated by an implementation in Smalltalk. Smalltalk wa
s chosen because it is widely known, which is net true for any particu
lar class-based object-oriented database programming language. Boles c
an be provided in Smalltalk by adding a few classes. There is no need
to modify the semantics of Smalltalk itself. Role hierarchies ape mapp
ed transparently onto ordinary classes. The presented Implementation c
an easily be ported to object-oriented database programming languages
based on Smalltalk such as Gemstone's OPAL.