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