package Human::WithCache;
use Pony::Object qw/Human::Base/;
protected money => 0;
protected inCount => 0;
protected outCount => 0;
protected in => 0;
protected out => 0;
sub deposit : Public
{
my $this = shift;
my $in = shift;
$this->money += $in;
$this->in += $in;
$this->inCount++;
}
sub withdraw : Public
{
my $this = shift;
my $out = shift;
die "Not enough money" if $this->money - $out < 0;
$this->money -= $out;
$this->out += $out;
$this->outCount++;
}
sub avgIn : Public
{
my $this = shift;
return 0 if $this->inCount == 0;
return sprintf( '%.2f', $this->in / $this->inCount );
}
sub avgOut : Public
{
my $this = shift;
return 0 if $this->outCount == 0;
return sprintf( '%.2f', $this->out / $this->outCount );
}
1;