On Thursday, October 3, 2002, at 03:18  PM, Paul Johnson wrote:
>> (As a lame aside, are we going to have a concept of "private" vs.
>> "protected" vs. "public", or just private/public?
>
> No protected.  Even Stroustrup admits it was a mistake in D&E.
Oh, thank God.  I was hoping people would say that.

OK, for an entirely different thread...

Is there an accepted preliminary syntax for OO delegation?  (I've 
looked and can't find anything definitive.)  By "delegation", I mean 
two different things (you can tell OO programming has firmly arrived by 
the fact that, Babel-like, no group of people can ever agree on the 
meaning of any given term, making all conversations painful).

1) Delegation through inheritance:
        (a.k.a. "mixin" classes, "hard delegation", "concrete interfaces", 
etc., etc.)
        
        Example: I want to say that a class DataManager has the capabilities
        of the interfaces DataStrategy and CacheStrategy, but is not strictly a
        "subclass" of either.  In other languages, this might appear like:
        
        class DataManager implements DataStrategy, CacheStrategy { ... }
                - or -
        class DataManager mixin DataStrategy, CacheStrategy { ... }
        
        (yes, I know you probably wouldn't do a Manager/Strategy like that.
        it's just an example, and my mind is blanking right now...)


2) Delegation through attribute:
        (a.k.a.... "soft delegation", "instance-based delegation", etc., etc.)
        
        The ability to specify that, if an instance of an object DataSnippet
        is affiliated with a specific, runtime instance of a DataManager, e.g.
        
        class DataSnippet {
                attr $data_manager is DataManager;
        }
        
        ... then [some, all] public methods of $self.data_manager can
        automatically be delegated by the DataSnippet to that specific
        instance, eliminating the need for code that makes you want
        to kill yourself:
        
        method foo (...) { $self.data_manager.foo( ... ) }
        method bar (...) { $self.data_manager.bar( ... ) }
        # ... repeat until carpel tunnel syndrome sets in ...
        
        I have no *good* syntax proposals for this, I don't think I've ever
        seen the problem solved with syntax that I really ever liked.
        
MikeL

Reply via email to