in reply to Re: Composition
in thread Composition Examples Sought

...sorry still in the dark...

I can see how it is possible to export an interface, but I don't see how to do the other side of that and make a new object who's methods are composed of (references?) to other objects...

Replies are listed 'Best First'.
Re: Re: Re: Composition
by hagus (Monk) on May 24, 2002 at 01:58 UTC
    Like I said, Composition is having an object inside another object. Where you go from there with respect to *accessing* the nested object is up to you!

    package MainObject; sub new { ... $self->{nested} = new NestedObject; ... } sub callNestedObjectMethod { my $self = shift; $self->{nested}->theMethod; }
    But you might not even do that. You might never export 'theMethod' in this fashion, it might only be internally used. The 'Composition' part is having NestedObject as a member of your class.

    It sounds like what you want is to "take object a, b, c and make a new object that lets me call methods from all of them". That sounds like private/protected inheritance in C++, and that sounds messy. Why not explicitly write your interface as above?

    --
    Ash OS durbatulk, ash OS gimbatul,
    Ash OS thrakatulk, agh burzum-ishi krimpatul!
    Uzg-Microsoft-ishi amal fauthut burguuli.