[ABE.pm] Inhertance
Ricardo SIGNES
rjbs-perl-abe at lists.manxome.org
Wed Mar 7 10:12:11 PST 2007
* Faber Fedor <faber at linuxnj.com> [2007-03-07T12:42:17]
> I've got an class ClassOne with a function called myAverage(). I now
> need a second function that's slightly different called
> myOtherAverage().
> [ ... ]
> Am I correct in wanting to do this: create an object called OtherOne
> that inherits from ClassOne and has a function called myAverage which
> is actually myOtherAverage?
Yes.
# FILE Averager.pm
package Averager;
sub average {
my ($self, @numbers) = @_;
return $self->sum(@numbers) / @numbers;
}
sub sum {
my ($self, @numbers) = @_;
my $sum = 0;
$sum += $_ for @numbers;
return $sum;
}
1;
Then:
# FILE Averager/Int.pm
package Averager::Int;
use base qw(Averager);
sub average {
my ($self, @numbers) = @_;
my $avg = $self->SUPER::average(@numbers);
return int($avg);
}
1;
And maybe:
# FILE Averager/Mean.pm
package Averager::Mean;
use base qw(Averager);
sub minmax {
my ($self, @numbers) = @_;
my @sorted = sort { $a <=> $b } @numbers;
return @sorted[0, -1];
}
sub average {
my ($self, @numbers);
return abs($self->sum( $self->minmax(@numbers) ) / 2);
}
1;
--
rjbs
More information about the ABE-pm
mailing list