--- Zeev Suraski <[EMAIL PROTECTED]> wrote:
> At 01:51 09/04/2002, brad lafountain wrote:
> >But do you see my point that having ONLY aggregate means that in 90% of the
> >case where people will use it its probally a bad idea. They are only using
> it
> >becuase of the lack of MI. How does aggregation solve overwriting methods.
> 
> Yes, I see the point...
> 
> >but i still don't like this... there are cleaner ways around that by using
> >members and/or MI.
> 
> I really don't know - as far as I know, aggregation is really not about 
> runtime, but about 'has a', vs. 'is a'.  When you have 'hard' compiling, 
> i.e., a phase that turns source code into a binary component, aggregation 
> helps keep a loose relationship between objects, but it's still done in 
> compile time of the new, 'derived' or constructed class:

 Yeah i guess i really didn't understand aggregate. from the implemnation of it
i was assuming that it was runtime-inheritance. after reading one of the links
and understanding a little more what the term aggregate really means I not sure
what to do here then.

 I think i read on that same post that noone can really think of a true MI
example that makes sence. I guess i never really thought of that ither. Every
example i can quickly think of in my head is a 'has a' relationship. But using
MI will 'emmulate' 'has a' relationships but truly doesn't define the
relationship. Maybe we need compile time aggregation. But sometimes that
doesn't even make sence.

// doesn't make sence
class wood;
class knob;
class door extends wood 
           aggregates knob;
$door = new door();
$door->turn();

// but this does
class wood;
class knob;
class door extends wood
{
 var $knob;
}

$door = new door();
$door->knob->turn();

So i guess what im saying if aggregate() is a keeper then we need a compile
time equlivant. 
but doing something like i have above where aggregate is a keyword and you can
define multiple aggregation objects off of it. how would it really differ
(implemntation wise not design wise) from MI. I really dont think they would be
different at all. So providing syntax like

class a extends b aggregates foo, bar; 

makes reading really really easy but might be more confusing than doing

class a extends b, foo, bar;

So i would be totally +1 on ither
class a extends b aggregates foo, bar; 
or normal MI.

- Brad
> 
> class aggregated_class {
>          var $inner_object;
> 
>          function aggergated_class()
>          {
>                  $this->inner_object = new inner_class();
>          }
>          function inner_method()
>          {
>                  return $this->inner_object->inner_method();
>          }
> }
> 
> Zeev
> 
> 
> -- 
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, visit: http://www.php.net/unsub.php
> 


__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to