Ziggy came up with a good example of when object inheritance makes
life easier. Basically, there are times when you'd want to override
individual methods of individual objects. Example below.
----- Forwarded message from Michael G Schwern <[EMAIL PROTECTED]> -----
From: Michael G Schwern <[EMAIL PROTECTED]>
To: Adam Turoff <[EMAIL PROTECTED]>
Subject: Re: Anyone actually experienced with object inheritance?
On Mon, Jul 02, 2001 at 07:56:27PM -0400, Adam Turoff wrote:
> What I want is a lazy object interface. I want a mailbox class
> that has a factory method like next() that returns mail message
> objects. When instantiated, each message has a few members and
> object data containing the unparsed text of the message. When
> header() or body() is called, then and only then do I want the
> message split, with the header and body going into object members,
> but I also want header() and body() replaced with simple accessors
> *only for this object*. And I want to do it easily.
Okay, I see where this is going. You want something like...
package Mail;
use base qw(Class::Object);
sub header {
my($self) = shift;
$self->{header} = $self->_parse_header;
$self->sub 'header', sub {
my $self = shift;
if(@_) {
$self->{header} = shift;
}
return $self->{header};
};
return $self->{header};
}
sub body {
...similar to header...
}
my $mail = Mail->new;
print $mail->header; # calls the full Mail::header
print $mail->header; # calls the simple accessor
Right, I can see how that would be hard to pull off using normal
inheritance. Object inheritance gives you fine grained control over
overriding individual methods for individual objects. Clever!
--
Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/
Perl6 Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One
<mendel> ScHWeRnsChweRN sChWErN SchweRN SCHWErNSChwERnsCHwERN
sChWErn ScHWeRn schweRn sCHWErN schWeRn scHWeRN
SchWeRN scHWErn SchwErn scHWErn ScHweRN sChwern
scHWerN scHWeRn scHWerN ScHwerN SChWeRN scHWeRn
SchwERNschwERn SCHwern sCHWErN SCHWErN sChWeRn
----- End forwarded message -----
--
Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/
Perl6 Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One
This is my sig file. Is it not nify? Worship the sig file.
http://www.sluggy.com