Re: Aggregation, Multiple Inheritence, pros/cons

From: Date: Tue, 09 Apr 2002 09:54:20 +0000
Subject: Re: Aggregation, Multiple Inheritence, pros/cons
References: 1 2 3  Groups: php.dev 
Request: Send a blank email to php-dev+get-82337@lists.php.net to get a copy of this message
That would be dynamically aggregation with other keywords (Delphi does not have MI or aggregation). At 11:27 09.04.2002, you wrote:
On 09/04/02, "Kristian Koehntopp" <kk@netuse.de> wrote: On Mon, Apr 08, 2002 at 08:57:09PM -0400, fabwash wrote:
My vote is "java" like: no MI, no aggregation, single inheritence and
use of
interfaces :)
Could you please explain how interfaces promote code reuse? I am not the perfect java pro, and as I understand it, interfaces define a set of instance variables and methods that must be there in order to be compliant to an interface, but provide to way to import an implementation of such an interface into an existing class. That's right. There does need to be a way to make this easier. Delphi allows this: type IFred = interface
    procedure FredMethod;
end; TFredImpl = class(IFred) // TFredImpl implements IFred
    procedure FredMethod;
end; TMyClass = class(IFred) private
    FFred:  IFred;  // Hold a reference to the IFred impl
public
    // And this tells the compiler to delegate IFred methods
    // to FFred member, which can be located/created at runtime
    property FredImpl: IFred read FFred implements IFred;
end;
It's a bit cumbersome, but could be represented as something like this in PHP, if we had interfaces: class FredImpl implements IFred { function FredMethod() { } }; class MyClassStatic implements IFred, extends FredImpl { }; class MyClassDynamic implements IFred { delegate IFred to $fredimpl; function MyClass() {
      $this->fredimpl = new FredImpl;
} }; An instance of MyClassStatic looks and smells like an instance of MyClassDynamic to other objects at runtime, but MyClassDynamic has the added advantage of being able to dynamically locate the code for it's implementation of the Fred interface. --Wez. -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.dev (#82337) next »