[Zope3-dev] Re: Interface declaration API

Yuppie schubbe@web.de
Wed, 12 Mar 2003 07:44:40 +0100


Phillip J. Eby wrote:
> The whole purpose of inheritance, IMO, is to make it possible to 
> understand and/or define a class *in terms of how it is different* from 
> its base(s).  Requiring a restatement of its bases' interfaces in order 
> to denote a change, is just as redundant as requiring one to restate the 
> source code of the methods inherited from those bases!

+1

I hope Zope3 will never become as complex as Zope 2, but have in mind 
the Interface Declaration API should be useable with real live classes 
like the attached example from the CMF.

Restating its bases' interfaces would be a real pain.


Just my 2 cents,

Yuppie




Inheritance Tree of CMFCore.PortalObject.PortalObjectBase
=========================================================


                     DynamicType --+
                                   |
                        Base --+   |
                               |   |
                 CMFCatalogAware --+
                                   |
                Base --+           |
                       |           |
           CopyContainer --+       |
                           |       |
                Base --+   |       |
                       |   |       |
              Navigation --+       |
                           |       |
                Base --+   |       |
                       |   |       |
                    Tabs --+       |
                           |       |
                Acquirer --+       |
                           |       |
              Persistent --+       |
                           |       |
            Base --+       |       |
                   |       |       |
EtagSupport --+   |       |       |
               |   |       |       |
    LockableItem --+       |       |
                   |       |       |
            Resource --+   |       |
                       |   |       |
              Collection --+       |
                           |       |
             Traversable --+       |
                           |       |
               ObjectManager --+   |
                               |   |
                    Base --+   |   |
                           |   |   |
            Node --+       |   |   |
                   |       |   |   |
             Element --+   |   |   |
                       |   |   |   |
   ElementWithAttributes --+   |   |
                           |   |   |
             PropertyManager --+   |
                               |   |
                    Base --+   |   |
                           |   |   |
             RoleManager --+   |   |
                           |   |   |
                 RoleManager --+   |
                               |   |
                Base --+       |   |
                       |       |   |
     EtagSupport --+   |       |   |
                   |   |       |   |
        LockableItem --+       |   |
                       |       |   |
                Resource --+   |   |
                           |   |   |
                  Collection --+   |
                               |   |
                    Base --+   |   |
                           |   |   |
                Base --+   |   |   |
                       |   |   |   |
     EtagSupport --+   |   |   |   |
                   |   |   |   |   |
        LockableItem --+   |   |   |
                       |   |   |   |
                Resource --+   |   |
                           |   |   |
                Base --+   |   |   |
                       |   |   |   |
              CopySource --+   |   |
                           |   |   |
                Base --+   |   |   |
                       |   |   |   |
                    Tabs --+   |   |
                           |   |   |
             Traversable --+   |   |
                           |   |   |
                Node --+   |   |   |
                       |   |   |   |
                 Element --+   |   |
                           |   |   |
                Base --+   |   |   |
                       |   |   |   |
                   Owned --+   |   |
                           |   |   |
                Base --+   |   |   |
                       |   |   |   |
             UndoSupport --+   |   |
                           |   |   |
                        Item --+   |
                               |   |
                    Base --+   |   |
                           |   |   |
                 FindSupport --+   |
                               |   |
                          Folder --+
                                   |
                        PortalFolder --+
                                       |
                    Base --+           |
                           |           |
               CopyContainer --+       |
                               |       |
                    Base --+   |       |
                           |   |       |
                  Navigation --+       |
                               |       |
                    Base --+   |       |
                           |   |       |
                        Tabs --+       |
                               |       |
                    Acquirer --+       |
                               |       |
                  Persistent --+       |
                               |       |
                Base --+       |       |
                       |       |       |
     EtagSupport --+   |       |       |
                   |   |       |       |
        LockableItem --+       |       |
                       |       |       |
                Resource --+   |       |
                           |   |       |
                  Collection --+       |
                               |       |
                 Traversable --+       |
                               |       |
                   ObjectManager --+   |
                                   |   |
              SkinnableObjectManager --+
                                       |
                                      PortalObjectBase