[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ECOOP Reaction to CLOS



>      Define a join class as a superclass which contributes
>      two or more subclasses to a CPL calculation. Define
>      the base class as the class for which the CPL calculation
>      is being made. To calculate the CPL, the inheritance graph 
>      is searched depth first, left to right, up to joins, starting
>      with the base class. Join superclasses are placed in the class 
>      precedence list at the last occurance, rather than the first, 
>      since such superclasses are usually more general than their 
>      subclasses (from the base class's point of view), 
>      and classes at the end of the class precedence list should be more
>      general than those at the beginning. After a join class has
>      been inserted, the local precedence ordering for the join
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>      class is used to start the left to right search again above
       ^^^^^
>      the join. The qualitative effect is to achieve a linearization 
>      of the inheritance graph, with more specialized classes at the head of
>      the class precedence list and more general classes at
>      the tail, keeping together groups of classes which occur
>      together in the inheritance graph (i.e. maintaining local
>      precedence).

After I mailed this I realized that the  ^ underscored section should read:

   the local precedence ordering for the join class's leftmost occuring
   subclass 

So integrating, and making a couple of other minor changes, gives:

      Define a join class as a superclass which contributes
      two or more subclasses to a CPL calculation. Define
      the base class as the class for which the CPL calculation
      is being made. To calculate the CPL, the inheritance graph 
      is searched depth first, left to right, up to joins, starting
      with the base class. Join superclasses are placed in the class 
      precedence list at the last (rightmost) occurance, rather than 
      the first (leftmost), since such superclasses are usually more 
      general than their subclasses (from the base class's point of view), 
      and classes at the end of the class precedence list should be more
      general than those at the beginning. After a join class has
      been inserted, the local precedence ordering from the first
      (leftmost) subclass of the join class is used to start the 
      left to right search again above the join. The qualitative effect 
      is to achieve a linearization of the inheritance graph, with 
      more specialized classes at the head of the class precedence list 
      and more general classes at the tail, keeping together groups of 
      classes which occur together in the inheritance graph 
      (i.e. maintaining local precedence).