n this paper, we argue that object-oriented models must be able to represent three kinds of taxonomic structures: static classes, dynamic classes, and role classes, that behave differently with respect to object migration. If CAR is a static subclass of V EHICLE, then a vehicle that is not a car can never migrate to the CAR subclass. On the other hand, if EMP loyee is a dynamic subclass of PERSON object class, then a PERSON that is not an employee may migrate to EMP . In both cases, an instance of the subclass is identical to an instance of the superclass. By contrast, if EMP is modeled as a role class of PERSON , then every employee differs from every person, but a PERSON instance can acquire one or more EMP instances as roles. The distinctions between the three kinds of classes are orthogonal, so that we can have, for example, dynamic subclasses of object or role classes, or role classes of dynamic or static classes. The paper is divided into two parts. In the first, informal part, we present an analysis of the differences between the three kinds of classes and motivate their utility by a number of examples. We argue that the inheritance of object life cycles is downward in a static class hierarchy and upward in the dynamic class hierarchy. We summarize this analysis by giving a number of modeling heuristics that can be used to make sound modeling decisions, and we compare our approach to class migration with other approaches. In the second, formal part of the paper, we outline one possible approach to formalizing the specification of static classes, dynamic classes, role classes and class migration, based on order-sorted dynamic logic and process algebra. We illustrate this approach by giving a number of small example specifications and by proving some useful properties of these specifications. This paper is an updated and extended version of .
|Number of pages||23|
|Journal||Theory and Practice of Object Systems|
|Publication status||Published - 1995|
- Object migration
- OO analysis and design
- Dynamic Logic